snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled

This commit is contained in:
upstream-mirror
2026-09-15 15:05:30 +05:00
commit 64898b2c79
8999 changed files with 1757358 additions and 0 deletions

View File

View File

@@ -0,0 +1,47 @@
# Zulip Bitbucket integration
Receive Bitbucket Cloud notifications in Zulip!
Zulip supports both Git and Mercurial notifications from Bitbucket.
!!! warn ""
For Bitbucket Data Center webhooks, see the [Zulip Bitbucket
Data Center](/integrations/bitbucketdatacenter) integration.
{start_tabs}
1. {!create-an-incoming-webhook.md!}
1. {!generate-webhook-url-with-branch-filtering.md!}
1. On your repository's web page, go to **Settings**. Select
**Webhooks**, and then click **Add webhook**.
1. Set **Title** to a title of your choice, such as `Zulip`. Set **URL**
to the URL generated above, and toggle the **Active** checkbox.
Select the **Triggers** you'd like to be notified about, and click
**Save**.
{end_tabs}
!!! tip ""
If you configure a [custom profile field](/help/custom-profile-fields)
in your Zulip organization for Atlassian Cloud account IDs,
this integration will refer to Bitbucket users using
[Zulip silent mentions](/help/mention-a-user-or-group#silently-mention-a-user),
rather than their Bitbucket display name. See [how to find Atlassian
account IDs][atlassian-account-id].
[atlassian-account-id]: https://developer.atlassian.com/cloud/automation/resources/how-to-get-user-account-IDs/
{!congrats.md!}
![](/static/images/integrations/bitbucket/001.png)
{!event-filtering-additional-feature.md!}
### Related documentation
{!webhooks-url-specification.md!}

View File

@@ -0,0 +1,114 @@
{
"comment":{
"user":{
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"type":"user"
},
"commit":{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/32c4ea19aa3af10acd08e419e2c354941a365d74"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/32c4ea19aa3af10acd08e419e2c354941a365d74"
}
},
"hash":"32c4ea19aa3af10acd08e419e2c354941a365d74",
"type":"commit"
},
"id":3354963,
"content":{
"html":"<p>Nice fix!</p>",
"markup":"markdown",
"raw":"Nice fix!"
},
"updated_on":"2016-07-02T07:18:52.542184+00:00",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/32c4ea19aa3af10acd08e419e2c354941a365d74#comment-3354963"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/32c4ea19aa3af10acd08e419e2c354941a365d74/comments/3354963"
}
},
"created_on":"2016-07-02T07:18:52.537287+00:00"
},
"commit":{
"links":{
},
"hash":"32c4ea19aa3af10acd08e419e2c354941a365d74",
"type":"base_commit",
"message":"c\n"
},
"actor":{
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"type":"user"
},
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"scm":"git",
"is_private":true,
"owner":{
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"type":"user"
},
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"website":"",
"name":"Repository name",
"type":"repository",
"full_name":"kolaszek/repository-name"
}
}

View File

@@ -0,0 +1,76 @@
{
"actor": {
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"type":"user"
},
"repository": {
"scm":"git",
"is_private":true,
"type":"repository",
"website":"",
"name":"Repository name",
"owner":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"full_name":"kolaszek/repository-name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}"
},
"commit_status": {
"name": "Unit Tests (Python)",
"description": "Build finished",
"state": "SUCCESSFUL",
"key": "mybuildtool",
"url": "https://my-build-tool.com/builds/MY-PROJECT/BUILD-777",
"type": "build",
"created_on": "2015-11-19T20:37:35.547563+00:00",
"updated_on": "2015-11-19T20:37:35.547563+00:00",
"links": {
"commit": {
"href": "http://api.bitbucket.org/2.0/repositories/tk/test/commit/9fec847784abb10b2fa567ee63b85bd238955d0e"
},
"self": {
"href": "http://api.bitbucket.org/2.0/repositories/tk/test/commit/9fec847784abb10b2fa567ee63b85bd238955d0e/statuses/build/mybuildtool"
}
}
}
}

View File

@@ -0,0 +1,425 @@
{
"repository":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"scm":"git",
"uuid":"{ede265ff-3649-4068-a7da-81ac581b6f47}",
"name":"Repository name",
"owner":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
},
"full_name":"kolaszek/repository-name",
"type":"repository",
"website":null,
"is_private":true
},
"actor":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
},
"push":{
"changes":[
{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12&exclude=32c4ea19aa3af10acd08e419e2c354941a365d74"
}
},
"forced":true,
"new":{
"target":{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>",
"user":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12"
}
},
"date":"2016-10-05T19:07:51+00:00",
"message":"c\n",
"hash":"25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12",
"type":"commit",
"parents":[
{
"hash":"f438e1c1b456b7d9ff278991aaca24123e7a591c",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/f438e1c1b456b7d9ff278991aaca24123e7a591c"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/f438e1c1b456b7d9ff278991aaca24123e7a591c"
}
},
"type":"commit"
}
]
},
"repository":{
"full_name":"kolaszek/repository-name",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"type":"repository",
"uuid":"{ede265ff-3649-4068-a7da-81ac581b6f47}",
"name":"Repository name"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
}
},
"type":"branch",
"name":"master"
},
"closed":false,
"truncated":false,
"created":false,
"commits":[
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>",
"user":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12"
}
},
"date":"2016-10-05T19:07:51+00:00",
"message":"c\n",
"hash":"25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12",
"type":"commit",
"parents":[
{
"hash":"f438e1c1b456b7d9ff278991aaca24123e7a591c",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/f438e1c1b456b7d9ff278991aaca24123e7a591c"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/f438e1c1b456b7d9ff278991aaca24123e7a591c"
}
},
"type":"commit"
}
]
},
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>",
"user":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/f438e1c1b456b7d9ff278991aaca24123e7a591c"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/f438e1c1b456b7d9ff278991aaca24123e7a591c"
}
},
"date":"2016-06-30T15:47:37+00:00",
"message":"b\n",
"hash":"f438e1c1b456b7d9ff278991aaca24123e7a591c",
"type":"commit",
"parents":[
{
"hash":"60cc02a3056062e20247a5b72c9e07d751d92e6f",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/60cc02a3056062e20247a5b72c9e07d751d92e6f"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/60cc02a3056062e20247a5b72c9e07d751d92e6f"
}
},
"type":"commit"
}
]
},
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>",
"user":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/60cc02a3056062e20247a5b72c9e07d751d92e6f"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/60cc02a3056062e20247a5b72c9e07d751d92e6f"
}
},
"date":"2016-06-30T15:46:22+00:00",
"message":"a\n",
"hash":"60cc02a3056062e20247a5b72c9e07d751d92e6f",
"type":"commit",
"parents":[
{
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"type":"commit"
}
]
},
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>",
"user":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"message":"first commit\n",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"type":"commit",
"parents":[
]
}
],
"old":{
"target":{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>",
"user":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/32c4ea19aa3af10acd08e419e2c354941a365d74"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/32c4ea19aa3af10acd08e419e2c354941a365d74"
}
},
"date":"2016-06-30T15:47:51+00:00",
"message":"c\n",
"hash":"32c4ea19aa3af10acd08e419e2c354941a365d74",
"type":"commit",
"parents":[
{
"hash":"f438e1c1b456b7d9ff278991aaca24123e7a591c",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/f438e1c1b456b7d9ff278991aaca24123e7a591c"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/f438e1c1b456b7d9ff278991aaca24123e7a591c"
}
},
"type":"commit"
}
]
},
"repository":{
"full_name":"kolaszek/repository-name",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"type":"repository",
"uuid":"{ede265ff-3649-4068-a7da-81ac581b6f47}",
"name":"Repository name"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
}
},
"type":"branch",
"name":"master"
}
}
]
}
}

View File

@@ -0,0 +1,75 @@
{
"actor":{
"type":"user",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
},
"repository":{
"name":"Repository name",
"website":"",
"type":"repository",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"scm":"git",
"full_name":"kolaszek/repository-name",
"is_private":true,
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
}
},
"owner":{
"type":"user",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
},
"fork":{
"full_name":"kolaszek/repository-name2",
"name":"Repository name2",
"type":"repository",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name2"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name2/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name2"
}
},
"uuid":"{ede265ff-3649-4068-a7da-81ac581b6f47}"
}
}

View File

@@ -0,0 +1,172 @@
{
"issue":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2"
},
"watch":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/watch"
},
"comments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/comments"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/issues/2/bug"
},
"attachments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/attachments"
},
"vote":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/vote"
}
},
"updated_on":"2016-07-04T19:16:59.037577+00:00",
"kind":"bug",
"reporter":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"version":null,
"milestone":null,
"component":null,
"content":{
"raw":"Such a bug more description",
"markup":"markdown",
"html":"<p>Such a bug more description</p>"
},
"watches":1,
"assignee":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"priority":"major",
"created_on":"2016-07-04T17:36:51.890354+00:00",
"id":1,
"type":"issue",
"title":"Bug",
"votes":0,
"state":"new",
"edited_on":null
},
"repository":{
"links":{
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"scm":"git",
"owner":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"nickname":""
},
"name":"Repository name",
"full_name":"kolaszek/repository-name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"is_private":true,
"type":"repository",
"website":""
},
"comment":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/comments/28973596"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/issues/2#comment-28973596"
}
},
"updated_on":null,
"id":28973596,
"created_on":"2016-07-04T19:16:59.031212+00:00",
"user":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"content":{
"raw":"Add comment",
"markup":"markdown",
"html":"<p>Add comment</p>"
},
"type":"issue_comment"
},
"actor":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"nickname":"Tomasz Kolaszek"
}
}

View File

@@ -0,0 +1,135 @@
{
"actor":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
},
"issue":{
"votes":0,
"edited_on":null,
"kind":"bug",
"links":{
"vote":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/vote"
},
"comments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/comments"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/issues/2/bug"
},
"watch":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/watch"
},
"attachments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/attachments"
}
},
"content":{
"raw":"Such a bug",
"html":"<p>Such a bug</p>",
"markup":"markdown"
},
"version":null,
"component":null,
"created_on":"2016-07-04T17:36:51.890354+00:00",
"type":"issue",
"id":1,
"milestone":null,
"reporter":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
},
"priority":"major",
"title":"Bug",
"watches":1,
"updated_on":"2016-07-04T17:36:51.890354+00:00",
"assignee":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
},
"state":"new"
},
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"scm":"git",
"website":"",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"name":"Repository name",
"owner":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"type":"user",
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
},
"is_private":true,
"full_name":"kolaszek/repository-name",
"type":"repository"
}
}

View File

@@ -0,0 +1,192 @@
{
"actor":{
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"type":"user"
},
"comment":{
"updated_on":null,
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/comments/28972394"
}
},
"user":{
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"type":"user"
},
"created_on":"2016-07-04T17:38:33.962551+00:00",
"type":"issue_comment",
"content":{
"html":"",
"markup":"markdown",
"raw":null
},
"id":28972394
},
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
}
},
"scm":"git",
"full_name":"kolaszek/repository-name",
"is_private":true,
"name":"Repository name",
"owner":{
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"type":"user"
},
"type":"repository",
"website":""
},
"changes":{
"content":{
"old":"Such a bug",
"new":"Such a bug more description"
}
},
"issue":{
"votes":0,
"assignee":{
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"type":"user"
},
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/issues/2/bug"
},
"vote":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/vote"
},
"comments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/comments"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2"
},
"watch":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/watch"
},
"attachments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/issues/2/attachments"
}
},
"updated_on":"2016-07-04T17:38:33.949326+00:00",
"created_on":"2016-07-04T17:36:51.890354+00:00",
"state":"new",
"component":null,
"content":{
"html":"<p>Such a bug more description</p>",
"markup":"markdown",
"raw":"Such a bug more description"
},
"watches":1,
"title":"Bug",
"edited_on":null,
"milestone":null,
"priority":"major",
"version":null,
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"name":"Repository name",
"links":{
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
}
},
"type":"repository",
"full_name":"kolaszek/repository-name"
},
"kind":"bug",
"type":"issue",
"id":1,
"reporter":{
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"type":"user"
}
}
}

View File

@@ -0,0 +1,248 @@
{
"repository":{
"type":"repository",
"scm":"git",
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"is_private":false,
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"owner":{
"display_name":"Tomasz",
"type":"user",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"nickname":"Tomasz Kolaszek"
},
"website":""
},
"push":{
"changes":[
{
"truncated":false,
"closed":false,
"new":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
}
},
"type":"branch",
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"type":"repository",
"full_name":"kolaszek/repository-name",
"name":"Repository name"
},
"name":"master",
"target":{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
}
},
"old":null,
"created":true,
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=84b96adc644a30fd6465b3d196369d880762afed"
}
},
"commits":[
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
}
],
"forced":false
},
{
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"forced":false,
"created":true,
"closed":false,
"truncated":false,
"new":{
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/a"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/tags/a"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/tag/a"
}
},
"target":{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/450118afff93569d1ce362174e9f1a7f104f9166"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/450118afff93569d1ce362174e9f1a7f104f9166"
}
},
"parents":[
{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/c47631f097fd69c294486b5f9b99deb4a05cb285"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"hash":"c47631f097fd69c294486b5f9b99deb4a05cb285",
"type":"commit"
}
],
"message":"abc\n",
"hash":"450118afff93569d1ce362174e9f1a7f104f9166",
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"date":"2016-11-09T12:52:38+00:00",
"type":"commit"
},
"type":"tag",
"name":"a"
},
"old":null
}
]
},
"actor":{
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"location":null,
"created_on":"2016-06-29T17:51:47.001868+00:00",
"display_name":"Tomasz",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"website":null,
"nickname":"Tomasz Kolaszek"
}
}

View File

@@ -0,0 +1,208 @@
{
"pullrequest":{
"reviewers":[
],
"type":"pullrequest",
"description":"Updated description",
"updated_on":"2016-07-04T19:40:31.002905+00:00",
"state":"OPEN",
"merge_commit":null,
"source":{
"branch":{
"name":"new-branch"
},
"repository":{
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"type":"repository",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
}
},
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}"
},
"commit":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/9c833166dcef"
}
},
"hash":"9c833166dcef"
}
},
"reason":"",
"author":{
"type":"user",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
},
"closed_by":null,
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/pull-requests/1"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/pullrequests/1"
}
},
"title":"new commit",
"close_source_branch":false,
"created_on":"2016-07-04T19:15:30.118942+00:00",
"destination":{
"branch":{
"name":"master"
},
"repository":{
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"type":"repository",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
}
},
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}"
},
"commit":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/32c4ea19aa3a"
}
},
"hash":"32c4ea19aa3a"
}
},
"participants":[
{
"type":"participant",
"approved":true,
"user":{
"type":"user",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
},
"role":"PARTICIPANT"
}
],
"id":1,
"task_count":0,
"comment_count":0
},
"approval":{
"user":{
"type":"user",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
},
"date":"2016-07-04T19:40:30.999805+00:00"
},
"repository":{
"name":"Repository name",
"website":"",
"type":"repository",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"scm":"git",
"full_name":"kolaszek/repository-name",
"is_private":true,
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
}
},
"owner":{
"type":"user",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
},
"actor":{
"type":"user",
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz"
}
}

View File

@@ -0,0 +1,237 @@
{
"comment":{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/pullrequests/3/comments/20576503"
}
},
"created_on":"2016-07-04T20:47:38.606358+00:00",
"type":"pullrequest_comment",
"user":{
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"updated_on":"2016-07-04T20:47:38.608171+00:00",
"content":{
"markup":"markdown",
"html":"<p>Comment1</p>",
"raw":"Comment1"
},
"pullrequest":{
"title":"new commit",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/pull-requests/3"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/pullrequests/3"
}
},
"type":"pullrequest",
"id":1
},
"id":20576503
},
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"scm":"git",
"type":"repository",
"owner":{
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"is_private":true,
"website":""
},
"actor":{
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"pullrequest":{
"title":"new commit",
"task_count":0,
"created_on":"2016-07-04T20:47:02.153006+00:00",
"reason":"",
"comment_count":1,
"updated_on":"2016-07-04T20:47:38.613320+00:00",
"state":"OPEN",
"description":"",
"id":1,
"reviewers":[
],
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/pull-requests/3"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/pullrequests/3"
}
},
"author":{
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"type":"pullrequest",
"merge_commit":null,
"destination":{
"branch":{
"name":"master"
},
"commit":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/0a3bbea5e914"
}
},
"hash":"0a3bbea5e914"
},
"repository":{
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"type":"repository"
}
},
"closed_by":null,
"source":{
"branch":{
"name":"new-branch"
},
"commit":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/1b3f5c4294f3"
}
},
"hash":"1b3f5c4294f3"
},
"repository":{
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"type":"repository"
}
},
"close_source_branch":false,
"participants":[
{
"approved":false,
"role":"PARTICIPANT",
"type":"participant",
"user":{
"links":{
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz",
"type":"user",
"nickname":"Tomasz Kolaszek"
}
}
]
}
}

View File

@@ -0,0 +1,181 @@
{
"pullrequest":{
"source":{
"repository":{
"type":"repository",
"full_name":"kolaszek/repository-name",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"name":"Repository name"
},
"commit":{
"hash":"9c833166dcef",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/9c833166dcef"
}
}
},
"branch":{
"name":"new-branch"
}
},
"state":"OPEN",
"destination":{
"repository":{
"type":"repository",
"full_name":"kolaszek/repository-name",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"name":"Repository name"
},
"commit":{
"hash":"32c4ea19aa3a",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/32c4ea19aa3a"
}
}
},
"branch":{
"name":"master"
}
},
"reviewers":[
{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/%7Bbf830c24-bde2-41f1-a790-2c9372a2e789%7D"
},
"html":{
"href":"https://bitbucket.org/%7Bbf830c24-bde2-41f1-a790-2c9372a2e789%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7Bbf830c24-bde2-41f1-a790-2c9372a2e789%7D/avatar/32/"
} },
"type":"user",
"nickname":"T Kolek",
"uuid":"{bf830c24-bde2-41f1-a790-2c9372a2e789}",
"account_id":"557058:d8e78bc0-2e36-4b47-8c5c-1c8c22f5b1e3",
"display_name":"Tomasz Kolek"
}
],
"reason":"",
"author":{
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
},
"task_count":0,
"title":"new commit",
"closed_by":null,
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/pullrequests/1"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/pull-requests/1"
}
},
"close_source_branch":false,
"participants":[
],
"created_on":"2016-07-04T19:15:30.118942+00:00",
"description":"description",
"comment_count":0,
"id":1,
"updated_on":"2016-07-04T19:15:30.141038+00:00",
"type":"pullrequest",
"merge_commit":null
},
"actor":{
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
},
"repository":{
"website":"",
"full_name":"kolaszek/repository-name",
"type":"repository",
"name":"Repository name",
"scm":"git",
"is_private":true,
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"owner":{
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
}
}
}

View File

@@ -0,0 +1,180 @@
{
"pullrequest":{
"source":{
"repository":{
"type":"repository",
"full_name":"kolaszek/repository-name",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"name":"Repository name"
},
"commit":{
"hash":"9c833166dcef",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/9c833166dcef"
}
}
},
"branch":{
"name":"new-branch"
}
},
"state":"OPEN",
"destination":{
"repository":{
"type":"repository",
"full_name":"kolaszek/repository-name",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"name":"Repository name"
},
"commit":{
"hash":"32c4ea19aa3a",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/32c4ea19aa3a"
}
}
},
"branch":{
"name":"master"
}
},
"reviewers":[
{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/%7Bbf830c24-bde2-41f1-a790-2c9372a2e789%7D"
},
"html":{
"href":"https://bitbucket.org/%7Bbf830c24-bde2-41f1-a790-2c9372a2e789%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7Bbf830c24-bde2-41f1-a790-2c9372a2e789%7D/avatar/32/"
} },
"type":"user",
"uuid":"{bf830c24-bde2-41f1-a790-2c9372a2e789}",
"account_id":"557058:d8e78bc0-2e36-4b47-8c5c-1c8c22f5b1e3",
"display_name":"Tomasz Kolek"
}
],
"reason":"",
"author":{
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
},
"task_count":0,
"title":"new commit",
"closed_by":null,
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/pullrequests/1"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/pull-requests/1"
}
},
"close_source_branch":false,
"participants":[
],
"created_on":"2016-07-04T19:15:30.118942+00:00",
"description":"description",
"comment_count":0,
"id":1,
"updated_on":"2016-07-04T19:15:30.141038+00:00",
"type":"pullrequest",
"merge_commit":null
},
"actor":{
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
},
"repository":{
"website":"",
"full_name":"kolaszek/repository-name",
"type":"repository",
"name":"Repository name",
"scm":"git",
"is_private":true,
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"owner":{
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"nickname":"Tomasz Kolaszek"
}
}
}

View File

@@ -0,0 +1,182 @@
{
"actor":{
"type":"user",
"display_name":"Tomasz",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"pullrequest":{
"title":"new commit",
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/pull-requests/1"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/pullrequests/1"
}
},
"reviewers":[
],
"closed_by":{
"type":"user",
"display_name":"Tomasz",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"author":{
"type":"user",
"display_name":"Tomasz",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"updated_on":"2016-07-04T20:17:13.680242+00:00",
"source":{
"branch":{
"name":"new-branch"
},
"commit":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/9c833166dcef"
}
},
"hash":"9c833166dcef"
},
"repository":{
"type":"repository",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"name":"Repository name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"full_name":"kolaszek/repository-name"
}
},
"merge_commit":null,
"type":"pullrequest",
"comment_count":0,
"destination":{
"branch":{
"name":"master"
},
"commit":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/32c4ea19aa3a"
}
},
"hash":"32c4ea19aa3a"
},
"repository":{
"type":"repository",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"name":"Repository name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"full_name":"kolaszek/repository-name"
}
},
"close_source_branch":false,
"id":1,
"state":"DECLINED",
"task_count":0,
"description":"Updated description",
"created_on":"2016-07-04T19:15:30.118942+00:00",
"reason":"Declined!",
"participants":[
]
},
"repository":{
"type":"repository",
"scm":"git",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"website":"",
"owner":{
"type":"user",
"display_name":"Tomasz",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"nickname":"Tomasz Kolaszek",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"is_private":true
}
}

View File

@@ -0,0 +1,187 @@
{
"actor":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"repository":{
"scm":"git",
"is_private":true,
"type":"repository",
"website":"",
"name":"Repository name",
"owner":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"full_name":"kolaszek/repository-name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}"
},
"push":{
"changes":[
{
"truncated":false,
"closed":false,
"new":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
}
},
"type":"branch",
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"type":"repository",
"full_name":"kolaszek/repository-name",
"name":"Repository name"
},
"name":"master",
"target":{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
}
},
"old":null,
"created":true,
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=84b96adc644a30fd6465b3d196369d880762afed"
}
},
"commits":[
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
}
],
"forced":false
}
]
}
}

View File

@@ -0,0 +1,406 @@
{
"actor":{
"website":null,
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"nickname":"Tomasz Kolaszek",
"location":null,
"created_on":"2016-06-29T17:51:47.001868+00:00"
},
"push":{
"changes":[
{
"commits":[
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"type":"commit",
"links":{
"comments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/comments"
},
"approve":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/approve"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"diff":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/diff/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"patch":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/patch/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"statuses":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/statuses"
}
},
"parents":[
{
"hash":"1221f2fda6f1e3654b09f1f3a08390e4cb25bb48",
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
}
}
}
],
"date":"2016-11-09T13:21:09+00:00",
"hash":"6f161a7bced94430ac8947d87dbf45c6deee3fb0",
"message":"a\n"
},
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"type":"commit",
"links":{
"comments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/comments"
},
"approve":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/approve"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"diff":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/diff/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"patch":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/patch/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"statuses":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/statuses"
}
},
"parents":[
{
"hash":"1221f2fda6f1e3654b09f1f3a08390e4cb25bb48",
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
}
}
}
],
"date":"2016-11-09T13:21:09+00:00",
"hash":"6f161a7bced94430ac8947d87dbf45c6deee3fb0",
"message":"a\n"
},
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"type":"commit",
"links":{
"comments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/comments"
},
"approve":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/approve"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"diff":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/diff/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"patch":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/patch/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"statuses":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/statuses"
}
},
"parents":[
{
"hash":"1221f2fda6f1e3654b09f1f3a08390e4cb25bb48",
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
}
}
}
],
"date":"2016-11-09T13:21:09+00:00",
"hash":"6f161a7bced94430ac8947d87dbf45c6deee3fb0",
"message":"a\n"
},
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"type":"commit",
"links":{
"comments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/comments"
},
"approve":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/approve"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"diff":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/diff/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"patch":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/patch/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"statuses":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/statuses"
}
},
"parents":[
{
"hash":"1221f2fda6f1e3654b09f1f3a08390e4cb25bb48",
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
}
}
}
],
"date":"2016-11-09T13:21:09+00:00",
"hash":"6f161a7bced94430ac8947d87dbf45c6deee3fb0",
"message":"a\n"
},
{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"type":"commit",
"links":{
"comments":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/comments"
},
"approve":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/approve"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"diff":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/diff/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"patch":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/patch/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"statuses":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0/statuses"
}
},
"parents":[
{
"hash":"1221f2fda6f1e3654b09f1f3a08390e4cb25bb48",
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
}
}
}
],
"date":"2016-11-09T13:21:09+00:00",
"hash":"6f161a7bced94430ac8947d87dbf45c6deee3fb0",
"message":"a\n"
}
],
"old":{
"name":"master",
"target":{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
}
},
"parents":[
{
"hash":"07132e6a3bbdc5f3c9ac2bd5ff40828e7bdafdd2",
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/07132e6a3bbdc5f3c9ac2bd5ff40828e7bdafdd2"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/07132e6a3bbdc5f3c9ac2bd5ff40828e7bdafdd2"
}
}
}
],
"date":"2016-11-09T13:10:48+00:00",
"hash":"1221f2fda6f1e3654b09f1f3a08390e4cb25bb48",
"message":"a\n"
},
"type":"branch",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
}
}
},
"links":{
"diff":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/diff/6f161a7bced94430ac8947d87dbf45c6deee3fb0..1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=6f161a7bced94430ac8947d87dbf45c6deee3fb0&exclude=1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branches/compare/6f161a7bced94430ac8947d87dbf45c6deee3fb0..1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
}
},
"created":false,
"closed":false,
"forced":false,
"new":{
"name":"master",
"target":{
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0"
}
},
"parents":[
{
"hash":"1221f2fda6f1e3654b09f1f3a08390e4cb25bb48",
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/1221f2fda6f1e3654b09f1f3a08390e4cb25bb48"
}
}
}
],
"date":"2016-11-09T13:21:09+00:00",
"hash":"6f161a7bced94430ac8947d87dbf45c6deee3fb0",
"message":"a\n"
},
"type":"branch",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
}
}
},
"truncated":true
}
]
},
"repository":{
"owner":{
"nickname":"Tomasz Kolaszek",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"display_name":"Tomasz",
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"scm":"git",
"type":"repository",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"name":"Repository name",
"is_private":false,
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"website":"",
"full_name":"kolaszek/repository-name"
}
}

View File

@@ -0,0 +1,181 @@
{
"actor":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"website":null,
"display_name":"Tomasz",
"created_on":"2016-06-29T17:51:47.001868+00:00",
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"location":null,
"nickname":"Tomasz Kolaszek"
},
"repository":{
"links":{
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
}
},
"full_name":"kolaszek/repository-name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"owner":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"name":"Repository name",
"is_private":false,
"type":"repository",
"website":"",
"scm":"git"
},
"push":{
"changes":[
{
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"forced":false,
"created":true,
"closed":false,
"truncated":false,
"new":{
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/a"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/tags/a"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/tag/a"
}
},
"target":{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/450118afff93569d1ce362174e9f1a7f104f9166"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/450118afff93569d1ce362174e9f1a7f104f9166"
}
},
"parents":[
{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/c47631f097fd69c294486b5f9b99deb4a05cb285"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"hash":"c47631f097fd69c294486b5f9b99deb4a05cb285",
"type":"commit"
}
],
"message":"abc\n",
"hash":"450118afff93569d1ce362174e9f1a7f104f9166",
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"date":"2016-11-09T12:52:38+00:00",
"type":"commit"
},
"type":"tag",
"name":"a"
},
"old":null
},
{
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"forced":false,
"created":true,
"closed":false,
"truncated":false,
"new":{
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/b"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/tags/b"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/tag/b"
}
},
"target":{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/450118afff93569d1ce362174e9f1a7f104f9166"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/450118afff93569d1ce362174e9f1a7f104f9166"
}
},
"parents":[
{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/c47631f097fd69c294486b5f9b99deb4a05cb285"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"hash":"c47631f097fd69c294486b5f9b99deb4a05cb285",
"type":"commit"
}
],
"message":"abc\n",
"hash":"450118afff93569d1ce362174e9f1a7f104f9166",
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"date":"2016-11-09T12:52:38+00:00",
"type":"commit"
},
"type":"tag",
"name":"b"
},
"old":null
}
]
}
}

View File

@@ -0,0 +1,264 @@
{
"actor":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"repository":{
"scm":"git",
"is_private":true,
"type":"repository",
"website":"",
"name":"Repository name",
"owner":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"full_name":"kolaszek/repository-name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}"
},
"push":{
"changes":[
{
"truncated":false,
"closed":false,
"new":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
}
},
"type":"branch",
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"type":"repository",
"full_name":"kolaszek/repository-name",
"name":"Repository name"
},
"name":"master",
"target":{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
}
},
"old":null,
"created":true,
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=84b96adc644a30fd6465b3d196369d880762afed"
}
},
"commits":[
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Zev Benjamin",
"display_name":"Ben",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Benjamin Simon <ben-simon@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Zev Benjamin",
"display_name":"Ben",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Benjamin Simon <ben-simon@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
}
],
"forced":false
}
]
}
}

View File

@@ -0,0 +1,530 @@
{
"actor":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"repository":{
"scm":"git",
"is_private":true,
"type":"repository",
"website":"",
"name":"Repository name",
"owner":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"full_name":"kolaszek/repository-name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}"
},
"push":{
"changes":[
{
"truncated":false,
"closed":false,
"new":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
}
},
"type":"branch",
"repository":{
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
}
},
"type":"repository",
"full_name":"kolaszek/repository-name",
"name":"Repository name"
},
"name":"master",
"target":{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
}
},
"old":null,
"created":true,
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=84b96adc644a30fd6465b3d196369d880762afed"
}
},
"commits":[
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Tomasz Kolaszek",
"display_name":"Tomasz",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"James Franklin",
"display_name":"James",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"James Franklin <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"James Franklin",
"display_name":"James",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"James Franklin <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"James Kolek",
"display_name":"James",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"James Kolek <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Brendon Rogers",
"display_name":"Brendon",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Brendon Rogers <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Brendon Rogers",
"display_name":"Brendon",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Brendon Rogers <tomasz-kolek@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
},
{
"type":"commit",
"hash":"84b96adc644a30fd6465b3d196369d880762afed",
"message":"first commit\n",
"author":{
"user":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
}
},
"type":"user",
"nickname":"Zev Benjamin",
"display_name":"Ben",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Benjamin Simon <ben-simon@o2.pl>"
},
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/84b96adc644a30fd6465b3d196369d880762afed"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed"
}
},
"date":"2016-06-30T15:32:24+00:00",
"parents":[
]
}
],
"forced":false
}
]
}
}

View File

@@ -0,0 +1,123 @@
{
"actor":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"website":null,
"display_name":"Tomasz",
"created_on":"2016-06-29T17:51:47.001868+00:00",
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"location":null,
"nickname":"Tomasz Kolaszek"
},
"repository":{
"links":{
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
}
},
"full_name":"kolaszek/repository-name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"owner":{
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"display_name":"Tomasz",
"type":"user",
"nickname":"Tomasz Kolaszek"
},
"name":"Repository name",
"is_private":false,
"type":"repository",
"website":"",
"scm":"git"
},
"push":{
"changes":[
{
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits?include=c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"forced":false,
"created":true,
"closed":false,
"truncated":false,
"new":{
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/a"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/tags/a"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/tag/a"
}
},
"target":{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/450118afff93569d1ce362174e9f1a7f104f9166"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/450118afff93569d1ce362174e9f1a7f104f9166"
}
},
"parents":[
{
"links":{
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/c47631f097fd69c294486b5f9b99deb4a05cb285"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"hash":"c47631f097fd69c294486b5f9b99deb4a05cb285",
"type":"commit"
}
],
"message":"abc\n",
"hash":"450118afff93569d1ce362174e9f1a7f104f9166",
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"date":"2016-11-09T12:52:38+00:00",
"type":"commit"
},
"type":"tag",
"name":"a"
},
"old":null
}
]
}
}

View File

@@ -0,0 +1,118 @@
{
"repository":{
"type":"repository",
"scm":"git",
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"uuid":"{59005838-3978-410b-84fd-8b4ce1b41089}",
"is_private":false,
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"owner":{
"display_name":"Tomasz",
"type":"user",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"nickname":"Tomasz Kolaszek"
},
"website":""
},
"push":{
"changes":[
{
"closed":true,
"old":{
"target":{
"message":"abc\n",
"author":{
"raw":"Tomasz Kolek <tomasz-kolek@go2.pl>"
},
"type":"commit",
"parents":[
{
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/c47631f097fd69c294486b5f9b99deb4a05cb285"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/c47631f097fd69c294486b5f9b99deb4a05cb285"
}
},
"hash":"c47631f097fd69c294486b5f9b99deb4a05cb285"
}
],
"date":"2016-11-09T12:52:38+00:00",
"hash":"450118afff93569d1ce362174e9f1a7f104f9166",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/450118afff93569d1ce362174e9f1a7f104f9166"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/450118afff93569d1ce362174e9f1a7f104f9166"
}
}
},
"type":"tag",
"links":{
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/a"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/tags/a"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/tag/a"
}
},
"name":"a"
},
"created":false,
"forced":false,
"new":null,
"truncated":false
}
]
},
"actor":{
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443",
"location":null,
"created_on":"2016-06-29T17:51:47.001868+00:00",
"display_name":"Tomasz",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"website":null,
"nickname":"Tomasz Kolaszek"
}
}

View File

@@ -0,0 +1,80 @@
{
"push":{
"changes":[
]
},
"actor":{
"nickname":"Eeshan Garg",
"type":"user",
"display_name":"eeshangarg",
"uuid":"{a161e482-30e8-47ef-b6ab-c4e4cfaa0dce}",
"account_id":"557058:a4e12c67-3c4d-4567-8e90-1f2c3d4e5678",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:a4e12c67-3c4d-4567-8e90-1f2c3d4e5678"
},
"html":{
"href":"https://bitbucket.org/%7Ba161e482-30e8-47ef-b6ab-c4e4cfaa0dce%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7Ba161e482-30e8-47ef-b6ab-c4e4cfaa0dce%7D/avatar/32/"
}
}
},
"repository":{
"scm":"git",
"website":"",
"name":"test-repo",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/webhooktest/test-repo"
},
"html":{
"href":"https://bitbucket.org/webhooktest/test-repo"
},
"avatar":{
"href":"https://bitbucket.org/webhooktest/test-repo/avatar/32/"
}
},
"project":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/teams/webhooktest/projects/TES"
},
"html":{
"href":"https://bitbucket.org/account/user/webhooktest/projects/TES"
},
"avatar":{
"href":"https://bitbucket.org/account/user/webhooktest/projects/TES/avatar/32"
}
},
"type":"project",
"uuid":"{c9b1f7ee-1949-4f6e-ba2b-6333fdbe6bf6}",
"key":"TES",
"name":"test-project"
},
"full_name":"webhooktest/test-repo",
"owner":{
"nickname":"Webhook Test",
"type":"team",
"display_name":"webhooktest",
"uuid":"{31358906-183f-4b53-b83c-f70ba0ca5d3c}",
"account_id":"557058:aaaa1111-2222-3333-4444-555566667777",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/teams/557058:aaaa1111-2222-3333-4444-555566667777"
},
"html":{
"href":"https://bitbucket.org/%7B31358906-183f-4b53-b83c-f70ba0ca5d3c%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B31358906-183f-4b53-b83c-f70ba0ca5d3c%7D/avatar/32/"
}
}
},
"type":"repository",
"is_private":true,
"uuid":"{79e5af61-a749-45c5-be24-ba1cba7b662e}"
}
}

View File

@@ -0,0 +1,150 @@
{
"repository":{
"is_private":true,
"type":"repository",
"full_name":"kolaszek/repository-name",
"name":"Repository name",
"website":null,
"scm":"git",
"owner":{
"display_name":"Tomasz",
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"nickname":"Tomasz Kolaszek",
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"uuid":"{ede265ff-3649-4068-a7da-81ac581b6f47}",
"links":{
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
}
},
"push":{
"changes":[
{
"old":{
"repository":{
"type":"repository",
"name":"Repository name",
"full_name":"kolaszek/repository-name",
"links":{
"avatar":{
"href":"https://bitbucket.org/kolaszek/repository-name/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name"
}
},
"uuid":"{ede265ff-3649-4068-a7da-81ac581b6f47}"
},
"type":"branch",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/refs/branches/master"
},
"commits":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commits/master"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/branch/master"
}
},
"target":{
"author":{
"user":{
"display_name":"Tomasz",
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"nickname":"Tomasz Kolaszek",
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"raw":"Tomasz Kolek <tomasz-kolek@o2.pl>"
},
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12"
}
},
"hash":"25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12",
"parents":[
{
"type":"commit",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/kolaszek/repository-name/commit/f438e1c1b456b7d9ff278991aaca24123e7a591c"
},
"html":{
"href":"https://bitbucket.org/kolaszek/repository-name/commits/f438e1c1b456b7d9ff278991aaca24123e7a591c"
}
},
"hash":"f438e1c1b456b7d9ff278991aaca24123e7a591c"
}
],
"date":"2016-10-05T19:07:51+00:00",
"message":"c\n"
},
"name":"master"
},
"closed":true,
"new":null,
"created":false,
"forced":false,
"truncated":false
}
]
},
"actor":{
"display_name":"Tomasz",
"links":{
"avatar":{
"href":"https://bitbucket.org/account/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/avatar/32/"
},
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
},
"html":{
"href":"https://bitbucket.org/%7B678ab31f-9f88-4d7a-b343-1bdf9f024917%7D/"
}
},
"nickname":"Tomasz Kolaszek",
"type":"user",
"uuid":"{678ab31f-9f88-4d7a-b343-1bdf9f024917}",
"account_id":"557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"
}
}

View File

@@ -0,0 +1,109 @@
{
"changes":{
"website":{
"new":"http://zulipchat.com",
"old":""
},
"name":{
"new":"new-name",
"old":"test-repo"
},
"links":{
"new":{
},
"old":{
}
},
"language":{
"new":"python",
"old":""
},
"full_name":{
"new":"webhooktest/new-name",
"old":"webhooktest/test-repo"
},
"slug":{
"new":"new-name",
"old":"test-repo"
},
"description":{
"new":"Random description.",
"old":""
}
},
"actor":{
"nickname":"Eeshan Garg",
"type":"user",
"display_name":"eeshangarg",
"uuid":"{a161e482-30e8-47ef-b6ab-c4e4cfaa0dce}",
"account_id":"557058:a4e12c67-3c4d-4567-8e90-1f2c3d4e5678",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/users/557058:a4e12c67-3c4d-4567-8e90-1f2c3d4e5678"
},
"html":{
"href":"https://bitbucket.org/%7Ba161e482-30e8-47ef-b6ab-c4e4cfaa0dce%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7Ba161e482-30e8-47ef-b6ab-c4e4cfaa0dce%7D/avatar/32/"
}
}
},
"repository":{
"scm":"git",
"website":"http://zulipchat.com",
"name":"new-name",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/repositories/webhooktest/new-name"
},
"html":{
"href":"https://bitbucket.org/webhooktest/new-name"
},
"avatar":{
"href":"https://bitbucket.org/webhooktest/new-name/avatar/32/"
}
},
"project":{
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/teams/webhooktest/projects/TES"
},
"html":{
"href":"https://bitbucket.org/account/user/webhooktest/projects/TES"
},
"avatar":{
"href":"https://bitbucket.org/account/user/webhooktest/projects/TES/avatar/32"
}
},
"type":"project",
"uuid":"{c9b1f7ee-1949-4f6e-ba2b-6333fdbe6bf6}",
"key":"TES",
"name":"test-project"
},
"full_name":"webhooktest/new-name",
"owner":{
"nickname":"Webhook Test",
"type":"team",
"display_name":"webhooktest",
"uuid":"{31358906-183f-4b53-b83c-f70ba0ca5d3c}",
"account_id":"557058:aaaa1111-2222-3333-4444-555566667777",
"links":{
"self":{
"href":"https://api.bitbucket.org/2.0/teams/557058:aaaa1111-2222-3333-4444-555566667777"
},
"html":{
"href":"https://bitbucket.org/%7B31358906-183f-4b53-b83c-f70ba0ca5d3c%7D/"
},
"avatar":{
"href":"https://bitbucket.org/account/%7B31358906-183f-4b53-b83c-f70ba0ca5d3c%7D/avatar/32/"
}
}
},
"type":"repository",
"is_private":true,
"uuid":"{79e5af61-a749-45c5-be24-ba1cba7b662e}"
}
}

View File

@@ -0,0 +1,471 @@
from unittest.mock import MagicMock, patch
from zerver.actions.custom_profile_fields import try_add_realm_default_custom_profile_field
from zerver.lib.request import RequestNotes
from zerver.lib.test_classes import WebhookTestCase
from zerver.lib.test_helpers import HostRequestMock
from zerver.lib.validator import wrap_wild_value
from zerver.models.clients import get_client
from zerver.models.realms import get_realm
from zerver.webhooks.bitbucket.view import get_user_info
TOPIC = "Repository name"
TOPIC_PR_EVENTS = "Repository name / PR #1 new commit"
TOPIC_ISSUE_EVENTS = "Repository name / issue #1 Bug"
TOPIC_BRANCH_EVENTS = "Repository name / master"
class BitbucketHookTests(WebhookTestCase):
def test_legacy_urls(self) -> None:
commit_info = "* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))"
expected_message = f"Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n{commit_info}"
legacy_names = ["bitbucket2"]
for legacy_name in legacy_names:
self.url = self.build_webhook_url(legacy_name=legacy_name)
self.check_webhook("push", TOPIC_BRANCH_EVENTS, expected_message)
def test_push_event(self) -> None:
commit_info = "* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))"
expected_message = f"Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n{commit_info}"
self.check_webhook("push", TOPIC_BRANCH_EVENTS, expected_message)
def test_push_commits_multiple_committers(self) -> None:
commit_info = "* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))\n"
expected_message = f"""Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 3 commits to branch master. Commits by Ben (2) and Tomasz (1).\n\n{commit_info * 2}* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))"""
self.check_webhook("push_multiple_committers", TOPIC_BRANCH_EVENTS, expected_message)
def test_push_commits_multiple_committers_with_others(self) -> None:
commit_info = "* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))\n"
expected_message = f"""Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 10 commits to branch master. Commits by Tomasz (4), James (3), Brendon (2) and others (1).\n\n{commit_info * 9}* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))"""
self.check_webhook(
"push_multiple_committers_with_others", TOPIC_BRANCH_EVENTS, expected_message
)
def test_push_commits_multiple_committers_filtered_by_branches(self) -> None:
self.url = self.build_webhook_url(branches="master,development")
commit_info = "* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))\n"
expected_message = f"""Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 3 commits to branch master. Commits by Ben (2) and Tomasz (1).\n\n{commit_info * 2}* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))"""
self.check_webhook("push_multiple_committers", TOPIC_BRANCH_EVENTS, expected_message)
def test_push_commits_multiple_committers_with_others_filtered_by_branches(
self,
) -> None:
self.url = self.build_webhook_url(branches="master,development")
commit_info = "* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))\n"
expected_message = f"""Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 10 commits to branch master. Commits by Tomasz (4), James (3), Brendon (2) and others (1).\n\n{commit_info * 9}* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))"""
self.check_webhook(
"push_multiple_committers_with_others", TOPIC_BRANCH_EVENTS, expected_message
)
def test_push_event_filtered_by_branches(self) -> None:
self.url = self.build_webhook_url(branches="master,development")
commit_info = "* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))"
expected_message = f"Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n{commit_info}"
self.check_webhook("push", TOPIC_BRANCH_EVENTS, expected_message)
def test_push_commits_above_limit_event(self) -> None:
commit_info = "* a ([6f161a7bced](https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0))\n"
expected_message = f"Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branches/compare/6f161a7bced94430ac8947d87dbf45c6deee3fb0..1221f2fda6f1e3654b09f1f3a08390e4cb25bb48) 5 commits to branch master.\n\n{(commit_info * 5)}[and more commit(s)]"
self.check_webhook("push_commits_above_limit", TOPIC_BRANCH_EVENTS, expected_message)
def test_push_commits_above_limit_filtered_by_branches(self) -> None:
self.url = self.build_webhook_url(branches="master,development")
commit_info = "* a ([6f161a7bced](https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0))\n"
expected_message = f"Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branches/compare/6f161a7bced94430ac8947d87dbf45c6deee3fb0..1221f2fda6f1e3654b09f1f3a08390e4cb25bb48) 5 commits to branch master.\n\n{(commit_info * 5)}[and more commit(s)]"
self.check_webhook("push_commits_above_limit", TOPIC_BRANCH_EVENTS, expected_message)
def test_force_push_event(self) -> None:
expected_message = "Tomasz [force pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) to branch master. Head is now 25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12."
self.check_webhook("force_push", TOPIC_BRANCH_EVENTS, expected_message)
def test_force_push_event_filtered_by_branches(self) -> None:
self.url = self.build_webhook_url(branches="master,development")
expected_message = "Tomasz [force pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) to branch master. Head is now 25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12."
self.check_webhook("force_push", TOPIC_BRANCH_EVENTS, expected_message)
def test_remove_branch_event(self) -> None:
expected_message = "Tomasz deleted branch master."
self.check_webhook("remove_branch", TOPIC_BRANCH_EVENTS, expected_message)
def test_fork_event(self) -> None:
expected_message = "Tomasz forked the repository into [kolaszek/repository-name2](https://bitbucket.org/kolaszek/repository-name2)."
self.check_webhook("fork", TOPIC, expected_message)
def test_commit_comment_created_event(self) -> None:
expected_message = "Tomasz [commented](https://bitbucket.org/kolaszek/repository-name/commits/32c4ea19aa3af10acd08e419e2c354941a365d74#comment-3354963) on [32c4ea19aa3](https://bitbucket.org/kolaszek/repository-name/commits/32c4ea19aa3af10acd08e419e2c354941a365d74):\n``` quote\nNice fix!\n```"
self.check_webhook("commit_comment_created", TOPIC, expected_message)
def test_commit_status_changed_event(self) -> None:
expected_message = "[System mybuildtool](https://my-build-tool.com/builds/MY-PROJECT/BUILD-777) changed status of [9fec847784a](https://bitbucket.org/kolaszek/repository-name/commits/9fec847784abb10b2fa567ee63b85bd238955d0e) to SUCCESSFUL."
self.check_webhook("commit_status_changed", TOPIC, expected_message)
def test_issue_created_event(self) -> None:
expected_message = "Tomasz created [issue #1](https://bitbucket.org/kolaszek/repository-name/issues/2/bug) (assigned to Tomasz):\n\n``` quote\nSuch a bug\n```"
self.check_webhook("issue_created", TOPIC_ISSUE_EVENTS, expected_message)
def test_issue_created_with_custom_topic_in_url(self) -> None:
self.url = self.build_webhook_url(topic="notifications")
expected_topic_name = "notifications"
expected_message = "Tomasz created [issue #1 Bug](https://bitbucket.org/kolaszek/repository-name/issues/2/bug) (assigned to Tomasz):\n\n``` quote\nSuch a bug\n```"
self.check_webhook("issue_created", expected_topic_name, expected_message)
def test_issue_updated_event(self) -> None:
expected_message = "Tomasz updated [issue #1](https://bitbucket.org/kolaszek/repository-name/issues/2/bug)."
self.check_webhook("issue_updated", TOPIC_ISSUE_EVENTS, expected_message)
def test_issue_commented_event(self) -> None:
expected_message = "Tomasz [commented](https://bitbucket.org/kolaszek/repository-name/issues/2#comment-28973596) on [issue #1](https://bitbucket.org/kolaszek/repository-name/issues/2/bug)."
self.check_webhook("issue_commented", TOPIC_ISSUE_EVENTS, expected_message)
def test_issue_commented_with_custom_topic_in_url(self) -> None:
self.url = self.build_webhook_url(topic="notifications")
expected_topic_name = "notifications"
expected_message = "Tomasz [commented](https://bitbucket.org/kolaszek/repository-name/issues/2#comment-28973596) on [issue #1 Bug](https://bitbucket.org/kolaszek/repository-name/issues/2/bug)."
self.check_webhook("issue_commented", expected_topic_name, expected_message)
def test_pull_request_created_event(self) -> None:
expected_message = "Tomasz created [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) from `new-branch` to `master` (assigned to Tomasz Kolek):\n\n``` quote\ndescription\n```"
self.check_webhook(
"pull_request_created_or_updated",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:created",
)
def test_pull_request_created_without_reviewer_username_event(self) -> None:
expected_message = "Tomasz created [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) from `new-branch` to `master` (assigned to Tomasz Kolek):\n\n``` quote\ndescription\n```"
self.check_webhook(
"pull_request_created_or_updated_without_username",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:created",
)
def test_pull_request_created_with_custom_topic_in_url(self) -> None:
self.url = self.build_webhook_url(topic="notifications")
expected_topic_name = "notifications"
expected_message = "Tomasz created [PR #1 new commit](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) from `new-branch` to `master` (assigned to Tomasz Kolek):\n\n``` quote\ndescription\n```"
self.check_webhook(
"pull_request_created_or_updated",
expected_topic_name,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:created",
)
def test_pull_request_updated_event(self) -> None:
expected_message = "Tomasz updated [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) (assigned to Tomasz Kolek):\n\n``` quote\ndescription\n```"
self.check_webhook(
"pull_request_created_or_updated",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:updated",
)
def test_pull_request_approved_event(self) -> None:
expected_message = "Tomasz approved [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1)."
self.check_webhook(
"pull_request_approved_or_unapproved",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:approved",
)
def test_pull_request_approved_with_custom_topic_in_url(self) -> None:
self.url = self.build_webhook_url(topic="notifications")
expected_topic_name = "notifications"
expected_message = "Tomasz approved [PR #1 new commit](https://bitbucket.org/kolaszek/repository-name/pull-requests/1)."
self.check_webhook(
"pull_request_approved_or_unapproved",
expected_topic_name,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:approved",
)
def test_pull_request_unapproved_event(self) -> None:
expected_message = "Tomasz unapproved [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1)."
self.check_webhook(
"pull_request_approved_or_unapproved",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:unapproved",
)
def test_pull_request_declined_event(self) -> None:
expected_message = "Tomasz rejected [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1)."
self.check_webhook(
"pull_request_fulfilled_or_rejected",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:rejected",
)
def test_pull_request_fulfilled_event(self) -> None:
expected_message = "Tomasz merged [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) from `new-branch` to `master`."
self.check_webhook(
"pull_request_fulfilled_or_rejected",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:fulfilled",
)
def test_pull_request_comment_created_event(self) -> None:
expected_message = "Tomasz [commented](https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503) on [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/3):\n\n``` quote\nComment1\n```"
self.check_webhook(
"pull_request_comment_action",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:comment_created",
)
def test_pull_request_comment_created_with_custom_topic_in_url(self) -> None:
self.url = self.build_webhook_url(topic="notifications")
expected_topic_name = "notifications"
expected_message = "Tomasz [commented](https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503) on [PR #1 new commit](https://bitbucket.org/kolaszek/repository-name/pull-requests/3):\n\n``` quote\nComment1\n```"
self.check_webhook(
"pull_request_comment_action",
expected_topic_name,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:comment_created",
)
def test_pull_request_comment_updated_event(self) -> None:
expected_message = "Tomasz updated a [comment](https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503) on [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/3):\n\n``` quote\nComment1\n```"
self.check_webhook(
"pull_request_comment_action",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:comment_updated",
)
def test_pull_request_comment_updated_with_custom_topic_in_url(self) -> None:
self.url = self.build_webhook_url(topic="notifications")
expected_topic_name = "notifications"
expected_message = "Tomasz updated a [comment](https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503) on [PR #1 new commit](https://bitbucket.org/kolaszek/repository-name/pull-requests/3):\n\n``` quote\nComment1\n```"
self.check_webhook(
"pull_request_comment_action",
expected_topic_name,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:comment_updated",
)
def test_pull_request_comment_deleted_event(self) -> None:
expected_message = "Tomasz deleted a [comment](https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503) on [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/3):\n\n``` quote\nComment1\n```"
self.check_webhook(
"pull_request_comment_action",
TOPIC_PR_EVENTS,
expected_message,
HTTP_X_EVENT_KEY="pullrequest:comment_deleted",
)
def test_repo_updated_event(self) -> None:
expected_message = "eeshangarg changed the website of the **new-name** repo to **http://zulipchat.com**.\neeshangarg changed the name of the **new-name** repo from **test-repo** to **new-name**.\neeshangarg changed the language of the **new-name** repo to **python**.\neeshangarg changed the full name of the **new-name** repo from **webhooktest/test-repo** to **webhooktest/new-name**.\neeshangarg changed the description of the **new-name** repo to **Random description.**"
expected_topic_name = "new-name"
self.check_webhook(
"repo_updated", expected_topic_name, expected_message, HTTP_X_EVENT_KEY="repo:updated"
)
def test_push_one_tag_event(self) -> None:
expected_message = (
"Tomasz pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a)."
)
self.check_webhook(
"push_one_tag", TOPIC, expected_message, HTTP_X_EVENT_KEY="pullrequest:push"
)
def test_push_remove_tag_event(self) -> None:
expected_message = (
"Tomasz removed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a)."
)
self.check_webhook(
"push_remove_tag", TOPIC, expected_message, HTTP_X_EVENT_KEY="pullrequest:push"
)
def test_push_more_than_one_tag_event(self) -> None:
expected_message = "Tomasz pushed tag [{name}](https://bitbucket.org/kolaszek/repository-name/commits/tag/{name})."
self.subscribe(self.test_user, self.channel_name)
payload = self.get_body("push_more_than_one_tag")
msg = self.send_webhook_payload(
self.test_user,
self.url,
payload,
content_type="application/json",
HTTP_X_EVENT_KEY="pullrequest:push",
)
msg = self.get_second_to_last_message()
self.assert_channel_message(
message=msg,
channel_name=self.channel_name,
topic_name=TOPIC,
content=expected_message.format(name="a"),
)
msg = self.get_last_message()
self.assert_channel_message(
message=msg,
channel_name=self.channel_name,
topic_name=TOPIC,
content=expected_message.format(name="b"),
)
def test_more_than_one_push_event(self) -> None:
self.subscribe(self.test_user, self.channel_name)
payload = self.get_body("more_than_one_push_event")
msg = self.send_webhook_payload(
self.test_user,
self.url,
payload,
content_type="application/json",
HTTP_X_EVENT_KEY="pullrequest:push",
)
msg = self.get_second_to_last_message()
self.assert_channel_message(
message=msg,
channel_name=self.channel_name,
topic_name=TOPIC_BRANCH_EVENTS,
content="Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))",
)
msg = self.get_last_message()
self.assert_channel_message(
message=msg,
channel_name=self.channel_name,
topic_name=TOPIC,
content="Tomasz pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a).",
)
def test_more_than_one_push_event_filtered_by_branches(self) -> None:
self.url = self.build_webhook_url(branches="master,development")
self.subscribe(self.test_user, self.channel_name)
payload = self.get_body("more_than_one_push_event")
msg = self.send_webhook_payload(
self.test_user,
self.url,
payload,
content_type="application/json",
HTTP_X_EVENT_KEY="pullrequest:push",
)
msg = self.get_second_to_last_message()
self.assert_channel_message(
message=msg,
channel_name=self.channel_name,
topic_name=TOPIC_BRANCH_EVENTS,
content="Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))",
)
msg = self.get_last_message()
self.assert_channel_message(
message=msg,
channel_name=self.channel_name,
topic_name=TOPIC,
content="Tomasz pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a).",
)
def test_more_than_one_push_event_filtered_by_branches_ignore(self) -> None:
self.url = self.build_webhook_url(branches="changes,development")
expected_message = (
"Tomasz pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a)."
)
self.check_webhook(
"more_than_one_push_event", TOPIC, expected_message, HTTP_X_EVENT_KEY="pullrequest:push"
)
@patch("zerver.webhooks.bitbucket.view.check_send_webhook_message")
def test_push_event_filtered_by_branches_ignore(
self, check_send_webhook_message_mock: MagicMock
) -> None:
self.url = self.build_webhook_url(branches="changes,development")
payload = self.get_body("push")
result = self.client_post(self.url, payload, content_type="application/json")
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@patch("zerver.webhooks.bitbucket.view.check_send_webhook_message")
def test_push_commits_above_limit_filtered_by_branches_ignore(
self, check_send_webhook_message_mock: MagicMock
) -> None:
self.url = self.build_webhook_url(branches="changes,development")
payload = self.get_body("push_commits_above_limit")
result = self.client_post(self.url, payload, content_type="application/json")
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@patch("zerver.webhooks.bitbucket.view.check_send_webhook_message")
def test_force_push_event_filtered_by_branches_ignore(
self, check_send_webhook_message_mock: MagicMock
) -> None:
self.url = self.build_webhook_url(branches="changes,development")
payload = self.get_body("force_push")
result = self.client_post(self.url, payload, content_type="application/json")
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@patch("zerver.webhooks.bitbucket.view.check_send_webhook_message")
def test_push_multiple_committers_filtered_by_branches_ignore(
self, check_send_webhook_message_mock: MagicMock
) -> None:
self.url = self.build_webhook_url(branches="changes,development")
payload = self.get_body("push_multiple_committers")
result = self.client_post(self.url, payload, content_type="application/json")
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@patch("zerver.webhooks.bitbucket.view.check_send_webhook_message")
def test_push_multiple_committers_with_others_filtered_by_branches_ignore(
self, check_send_webhook_message_mock: MagicMock
) -> None:
self.url = self.build_webhook_url(branches="changes,development")
payload = self.get_body("push_multiple_committers_with_others")
result = self.client_post(self.url, payload, content_type="application/json")
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
@patch("zerver.webhooks.bitbucket.view.check_send_webhook_message")
def test_push_without_changes_ignore(self, check_send_webhook_message_mock: MagicMock) -> None:
payload = self.get_body("push_without_changes")
result = self.client_post(self.url, payload, content_type="application/json")
self.assertFalse(check_send_webhook_message_mock.called)
self.assert_json_success(result)
def test_get_user_info(self) -> None:
request = HostRequestMock()
request.content_type = "application/json"
request.user = self.test_user
RequestNotes.get_notes(request).client = get_client("test")
self.assertEqual(get_user_info(request, wrap_wild_value("request", {})), "Unknown user")
user = dict(
nickname="alice",
noisy_field="whatever",
display_name="Alice Smith",
)
self.assertEqual(get_user_info(request, wrap_wild_value("request", user)), "Alice Smith")
del user["display_name"]
self.assertEqual(get_user_info(request, wrap_wild_value("request", user)), "alice")
del user["nickname"]
self.assertEqual(get_user_info(request, wrap_wild_value("request", user)), "Unknown user")
def test_push_event_message_silent_mention(self) -> None:
realm = get_realm("zulip")
atlassian_field = try_add_realm_default_custom_profile_field(realm, "atlassian")
hamlet = self.example_user("hamlet")
self.set_user_custom_profile_data(
hamlet,
[{"id": atlassian_field.id, "value": "557058:c0b72ad0-1cb5-4018-9cdc-0cde8492c443"}],
)
commit_info = "* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))"
expected_message = f"@_**{hamlet.full_name}|{hamlet.id}** [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n{commit_info}"
self.check_webhook("push", TOPIC_BRANCH_EVENTS, expected_message)

View File

@@ -0,0 +1,578 @@
# Webhooks for external integrations.
import re
import string
from typing import Protocol
from django.http import HttpRequest, HttpResponse
from zerver.decorator import log_unsupported_webhook_event, webhook_view
from zerver.lib.exceptions import UnsupportedWebhookEventTypeError
from zerver.lib.external_accounts import DEFAULT_EXTERNAL_ACCOUNTS
from zerver.lib.mention import silent_mention_syntax_for_user
from zerver.lib.partial import partial
from zerver.lib.response import json_success
from zerver.lib.typed_endpoint import JsonBodyPayload, typed_endpoint
from zerver.lib.validator import WildValue, check_bool, check_int, check_string
from zerver.lib.webhooks.common import (
OptionalUserSpecifiedTopicStr,
check_send_webhook_message,
get_event_header,
guess_zulip_user_from_external_account,
)
from zerver.lib.webhooks.git import (
TOPIC_WITH_BRANCH_TEMPLATE,
TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE,
get_commits_comment_action_message,
get_force_push_commits_event_message,
get_issue_event_message,
get_pull_request_event_message,
get_push_commits_event_message,
get_push_tag_event_message,
get_remove_branch_event_message,
get_short_sha,
is_branch_name_notifiable,
)
from zerver.models import UserProfile
BITBUCKET_TOPIC_TEMPLATE = "{repository_name}"
BITBUCKET_FORK_BODY = "{actor} forked the repository into [{fork_name}]({fork_url})."
BITBUCKET_COMMIT_STATUS_CHANGED_BODY = (
"[System {key}]({system_url}) changed status of {commit_info} to {status}."
)
BITBUCKET_REPO_UPDATED_CHANGED = (
"{actor} changed the {change} of the **{repo_name}** repo from **{old}** to **{new}**"
)
BITBUCKET_REPO_UPDATED_ADDED = (
"{actor} changed the {change} of the **{repo_name}** repo to **{new}**"
)
PULL_REQUEST_SUPPORTED_ACTIONS = [
"approved",
"unapproved",
"created",
"updated",
"rejected",
"fulfilled",
"comment_created",
"comment_updated",
"comment_deleted",
]
ALL_EVENT_TYPES = [
"change_commit_status",
"pull_request_comment_created",
"pull_request_updated",
"pull_request_unapproved",
"push",
"pull_request_approved",
"pull_request_fulfilled",
"issue_created",
"issue_commented",
"fork",
"pull_request_comment_updated",
"pull_request_created",
"pull_request_rejected",
"repo:updated",
"issue_updated",
"commit_comment",
"pull_request_comment_deleted",
]
@webhook_view("Bitbucket2", all_event_types=ALL_EVENT_TYPES)
@typed_endpoint
def api_bitbucket_webhook(
request: HttpRequest,
user_profile: UserProfile,
*,
payload: JsonBodyPayload[WildValue],
branches: str | None = None,
user_specified_topic: OptionalUserSpecifiedTopicStr = None,
) -> HttpResponse:
type = get_type(request, payload)
if type == "push":
# ignore push events with no changes
if not payload["push"]["changes"]:
return json_success(request)
branch = get_branch_name_for_push_event(payload)
if branch and not is_branch_name_notifiable(branch, branches):
return json_success(request)
topic_names = get_push_topics(payload)
bodies = get_push_bodies(request, payload)
for b, t in zip(bodies, topic_names, strict=False):
check_send_webhook_message(
request, user_profile, t, b, type, unquote_url_parameters=True
)
else:
topic_name = get_topic_based_on_type(payload, type)
body_function = get_body_based_on_type(type)
body = body_function(
request,
payload,
include_title=user_specified_topic is not None,
)
check_send_webhook_message(
request, user_profile, topic_name, body, type, unquote_url_parameters=True
)
return json_success(request)
def get_topic_for_branch_specified_events(
payload: WildValue, branch_name: str | None = None
) -> str:
return TOPIC_WITH_BRANCH_TEMPLATE.format(
repo=get_repository_name(payload["repository"]),
branch=get_branch_name_for_push_event(payload) if branch_name is None else branch_name,
)
def get_push_topics(payload: WildValue) -> list[str]:
topics_list = []
for change in payload["push"]["changes"]:
potential_tag = (change["new"] or change["old"])["type"].tame(check_string)
if potential_tag == "tag":
topics_list.append(get_topic(payload))
else:
if change.get("new"):
branch_name = change["new"]["name"].tame(check_string)
else:
branch_name = change["old"]["name"].tame(check_string)
topics_list.append(get_topic_for_branch_specified_events(payload, branch_name))
return topics_list
def get_topic(payload: WildValue) -> str:
return BITBUCKET_TOPIC_TEMPLATE.format(
repository_name=get_repository_name(payload["repository"])
)
def get_topic_based_on_type(payload: WildValue, type: str) -> str:
if type.startswith("pull_request"):
return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repository_name(payload["repository"]),
type="PR",
id=payload["pullrequest"]["id"].tame(check_int),
title=payload["pullrequest"]["title"].tame(check_string),
)
if type.startswith("issue"):
return TOPIC_WITH_PR_OR_ISSUE_INFO_TEMPLATE.format(
repo=get_repository_name(payload["repository"]),
type="issue",
id=payload["issue"]["id"].tame(check_int),
title=payload["issue"]["title"].tame(check_string),
)
assert type != "push"
return get_topic(payload)
def get_type(request: HttpRequest, payload: WildValue) -> str:
if "push" in payload:
return "push"
elif "fork" in payload:
return "fork"
elif "comment" in payload and "commit" in payload:
return "commit_comment"
elif "commit_status" in payload:
return "change_commit_status"
elif "issue" in payload:
if "changes" in payload:
return "issue_updated"
if "comment" in payload:
return "issue_commented"
return "issue_created"
elif "pullrequest" in payload:
pull_request_template = "pull_request_{}"
# Note that we only need the HTTP header to determine pullrequest events.
# We rely on the payload itself to determine the other ones.
event_key = get_event_header(request, "X-Event-Key", "BitBucket")
action = re.match(r"pullrequest:(?P<action>.*)$", event_key)
if action:
action_group = action.group("action")
if action_group in PULL_REQUEST_SUPPORTED_ACTIONS:
return pull_request_template.format(action_group)
else:
event_key = get_event_header(request, "X-Event-Key", "BitBucket")
if event_key == "repo:updated":
return event_key
raise UnsupportedWebhookEventTypeError(event_key)
class BodyGetter(Protocol):
def __call__(self, request: HttpRequest, payload: WildValue, include_title: bool) -> str: ...
def get_body_based_on_type(
type: str,
) -> BodyGetter:
return GET_SINGLE_MESSAGE_BODY_DEPENDING_ON_TYPE_MAPPER[type]
def get_push_bodies(request: HttpRequest, payload: WildValue) -> list[str]:
messages_list = []
for change in payload["push"]["changes"]:
potential_tag = (change["new"] or change["old"])["type"].tame(check_string)
if potential_tag == "tag":
messages_list.append(get_push_tag_body(request, payload, change))
# if change['new'] is None, that means a branch was deleted
elif change["new"].value is None:
messages_list.append(get_remove_branch_push_body(request, payload, change))
elif change["forced"].tame(check_bool):
messages_list.append(get_force_push_body(request, payload, change))
else:
messages_list.append(get_normal_push_body(request, payload, change))
return messages_list
def get_remove_branch_push_body(request: HttpRequest, payload: WildValue, change: WildValue) -> str:
return get_remove_branch_event_message(
get_actor_info(request, payload),
change["old"]["name"].tame(check_string),
)
def get_force_push_body(request: HttpRequest, payload: WildValue, change: WildValue) -> str:
return get_force_push_commits_event_message(
get_actor_info(request, payload),
change["links"]["html"]["href"].tame(check_string),
change["new"]["name"].tame(check_string),
change["new"]["target"]["hash"].tame(check_string),
)
def get_commit_author_name(request: HttpRequest, commit: WildValue) -> str:
if "user" in commit["author"]:
return get_user_info(request, commit["author"]["user"])
return commit["author"]["raw"].tame(check_string).split()[0]
def get_normal_push_body(request: HttpRequest, payload: WildValue, change: WildValue) -> str:
commits_data = [
{
"name": get_commit_author_name(request, commit),
"sha": commit["hash"].tame(check_string),
"url": commit["links"]["html"]["href"].tame(check_string),
"message": commit["message"].tame(check_string),
}
for commit in change["commits"]
]
return get_push_commits_event_message(
get_actor_info(request, payload),
change["links"]["html"]["href"].tame(check_string),
change["new"]["name"].tame(check_string),
commits_data,
is_truncated=change["truncated"].tame(check_bool),
)
def get_fork_body(request: HttpRequest, payload: WildValue, include_title: bool) -> str:
return BITBUCKET_FORK_BODY.format(
actor=get_user_info(request, payload["actor"]),
fork_name=get_repository_full_name(payload["fork"]),
fork_url=get_repository_url(payload["fork"]),
)
def get_commit_comment_body(request: HttpRequest, payload: WildValue, include_title: bool) -> str:
comment = payload["comment"]
action = "[commented]({})".format(comment["links"]["html"]["href"].tame(check_string))
return get_commits_comment_action_message(
get_actor_info(request, payload),
action,
comment["commit"]["links"]["html"]["href"].tame(check_string),
comment["commit"]["hash"].tame(check_string),
comment["content"]["raw"].tame(check_string),
)
def get_commit_status_changed_body(
request: HttpRequest, payload: WildValue, include_title: bool
) -> str:
commit_api_url = payload["commit_status"]["links"]["commit"]["href"].tame(check_string)
commit_id = commit_api_url.split("/")[-1]
commit_info = "[{short_commit_id}]({repo_url}/commits/{commit_id})".format(
repo_url=get_repository_url(payload["repository"]),
short_commit_id=get_short_sha(commit_id),
commit_id=commit_id,
)
return BITBUCKET_COMMIT_STATUS_CHANGED_BODY.format(
key=payload["commit_status"]["key"].tame(check_string),
system_url=payload["commit_status"]["url"].tame(check_string),
commit_info=commit_info,
status=payload["commit_status"]["state"].tame(check_string),
)
def get_issue_commented_body(request: HttpRequest, payload: WildValue, include_title: bool) -> str:
action = "[commented]({}) on".format(
payload["comment"]["links"]["html"]["href"].tame(check_string)
)
return get_issue_action_body(action, request, payload, include_title)
def get_issue_action_body(
action: str, request: HttpRequest, payload: WildValue, include_title: bool
) -> str:
issue = payload["issue"]
assignee = None
message = None
if action == "created":
if issue["assignee"]:
assignee = get_user_info(request, issue["assignee"])
message = issue["content"]["raw"].tame(check_string)
return get_issue_event_message(
user_name=get_actor_info(request, payload),
action=action,
url=issue["links"]["html"]["href"].tame(check_string),
number=issue["id"].tame(check_int),
message=message,
assignee=assignee,
title=issue["title"].tame(check_string) if include_title else None,
)
def get_pull_request_action_body(
action: str, request: HttpRequest, payload: WildValue, include_title: bool
) -> str:
pull_request = payload["pullrequest"]
target_branch = None
base_branch = None
if action == "merged":
target_branch = pull_request["source"]["branch"]["name"].tame(check_string)
base_branch = pull_request["destination"]["branch"]["name"].tame(check_string)
return get_pull_request_event_message(
user_name=get_actor_info(request, payload),
action=action,
url=get_pull_request_url(pull_request),
number=pull_request["id"].tame(check_int),
target_branch=target_branch,
base_branch=base_branch,
title=pull_request["title"].tame(check_string) if include_title else None,
)
def get_pull_request_created_or_updated_body(
action: str, request: HttpRequest, payload: WildValue, include_title: bool
) -> str:
pull_request = payload["pullrequest"]
assignee = None
if pull_request["reviewers"]:
assignee = get_user_info(request, pull_request["reviewers"][0])
return get_pull_request_event_message(
user_name=get_actor_info(request, payload),
action=action,
url=get_pull_request_url(pull_request),
number=pull_request["id"].tame(check_int),
target_branch=(
pull_request["source"]["branch"]["name"].tame(check_string)
if action == "created"
else None
),
base_branch=(
pull_request["destination"]["branch"]["name"].tame(check_string)
if action == "created"
else None
),
message=pull_request["description"].tame(check_string),
assignee=assignee,
title=pull_request["title"].tame(check_string) if include_title else None,
)
def get_pull_request_comment_created_action_body(
request: HttpRequest,
payload: WildValue,
include_title: bool,
) -> str:
action = "[commented]({})".format(
payload["comment"]["links"]["html"]["href"].tame(check_string)
)
return get_pull_request_comment_action_body(request, payload, action, include_title)
def get_pull_request_deleted_or_updated_comment_action_body(
action: str,
request: HttpRequest,
payload: WildValue,
include_title: bool,
) -> str:
action = "{} a [comment]({})".format(
action, payload["comment"]["links"]["html"]["href"].tame(check_string)
)
return get_pull_request_comment_action_body(request, payload, action, include_title)
def get_pull_request_comment_action_body(
request: HttpRequest,
payload: WildValue,
action: str,
include_title: bool,
) -> str:
action += " on"
return get_pull_request_event_message(
user_name=get_actor_info(request, payload),
action=action,
url=payload["pullrequest"]["links"]["html"]["href"].tame(check_string),
number=payload["pullrequest"]["id"].tame(check_int),
message=payload["comment"]["content"]["raw"].tame(check_string),
title=payload["pullrequest"]["title"].tame(check_string) if include_title else None,
)
def get_push_tag_body(request: HttpRequest, payload: WildValue, change: WildValue) -> str:
if change.get("new"):
tag = change["new"]
action = "pushed"
elif change.get("old"):
tag = change["old"]
action = "removed"
return get_push_tag_event_message(
get_actor_info(request, payload),
tag["name"].tame(check_string),
tag_url=tag["links"]["html"]["href"].tame(check_string),
action=action,
)
def append_punctuation(title: str, message: str) -> str:
if title[-1] not in string.punctuation:
message = f"{message}."
return message
def get_repo_updated_body(request: HttpRequest, payload: WildValue, include_title: bool) -> str:
changes = ["website", "name", "links", "language", "full_name", "description"]
body = ""
repo_name = payload["repository"]["name"].tame(check_string)
actor = get_actor_info(request, payload)
for change in changes:
new = payload["changes"][change]["new"]
old = payload["changes"][change]["old"]
if change == "full_name":
change = "full name"
if new and old:
message = BITBUCKET_REPO_UPDATED_CHANGED.format(
actor=actor,
change=change,
repo_name=repo_name,
old=str(old.value),
new=str(new.value),
)
message = append_punctuation(str(new.value), message) + "\n"
body += message
elif new and not old:
message = BITBUCKET_REPO_UPDATED_ADDED.format(
actor=actor,
change=change,
repo_name=repo_name,
new=str(new.value),
)
message = append_punctuation(str(new.value), message) + "\n"
body += message
return body
def get_pull_request_url(pullrequest_payload: WildValue) -> str:
return pullrequest_payload["links"]["html"]["href"].tame(check_string)
def get_repository_url(repository_payload: WildValue) -> str:
return repository_payload["links"]["html"]["href"].tame(check_string)
def get_repository_name(repository_payload: WildValue) -> str:
return repository_payload["name"].tame(check_string)
def get_repository_full_name(repository_payload: WildValue) -> str:
return repository_payload["full_name"].tame(check_string)
def get_user_info(request: HttpRequest, user: WildValue) -> str:
assert isinstance(request.user, UserProfile)
realm = request.user.realm
# See https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-changes-gdpr/
# Since GDPR, we don't get username; instead, we get account_id,
# display_name, and nickname. Account IDs are specific to Atlassian Cloud products.
# Bitbucket Data Center do not include account_id in their webhook payloads.
if "account_id" in user:
account_id = user["account_id"].tame(check_string)
external_account_field_name = str(DEFAULT_EXTERNAL_ACCOUNTS["atlassian"].name)
zulip_user = guess_zulip_user_from_external_account(
realm,
account_id,
external_account_field_name,
external_username_case_insensitive=True,
)
if zulip_user is not None:
return silent_mention_syntax_for_user(zulip_user)
if "display_name" in user:
return user["display_name"].tame(check_string)
if "nickname" in user:
return user["nickname"].tame(check_string)
# We call this an unsupported_event, even though we
# are technically still sending a message.
log_unsupported_webhook_event(
request=request,
summary="Could not find display_name/nickname field",
)
return "Unknown user"
def get_actor_info(request: HttpRequest, payload: WildValue) -> str:
actor = payload["actor"]
return get_user_info(request, actor)
def get_branch_name_for_push_event(payload: WildValue) -> str | None:
change = payload["push"]["changes"][-1]
potential_tag = (change["new"] or change["old"])["type"].tame(check_string)
if potential_tag == "tag":
return None
else:
return (change["new"] or change["old"])["name"].tame(check_string)
GET_SINGLE_MESSAGE_BODY_DEPENDING_ON_TYPE_MAPPER: dict[str, BodyGetter] = {
"fork": get_fork_body,
"commit_comment": get_commit_comment_body,
"change_commit_status": get_commit_status_changed_body,
"issue_updated": partial(get_issue_action_body, "updated"),
"issue_created": partial(get_issue_action_body, "created"),
"issue_commented": get_issue_commented_body,
"pull_request_created": partial(get_pull_request_created_or_updated_body, "created"),
"pull_request_updated": partial(get_pull_request_created_or_updated_body, "updated"),
"pull_request_approved": partial(get_pull_request_action_body, "approved"),
"pull_request_unapproved": partial(get_pull_request_action_body, "unapproved"),
"pull_request_fulfilled": partial(get_pull_request_action_body, "merged"),
"pull_request_rejected": partial(get_pull_request_action_body, "rejected"),
"pull_request_comment_created": get_pull_request_comment_created_action_body,
"pull_request_comment_updated": partial(
get_pull_request_deleted_or_updated_comment_action_body, "updated"
),
"pull_request_comment_deleted": partial(
get_pull_request_deleted_or_updated_comment_action_body, "deleted"
),
"repo:updated": get_repo_updated_body,
}