Skip to content

repositories

ProjectRepositories

Bases: RepositoriesBase

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
class ProjectRepositories(RepositoriesBase):
    def __init__(self, url, *args, **kwargs):
        super(ProjectRepositories, self).__init__(url, *args, **kwargs)

    def each(self, sort=None):
        """
        Get all repositories in the project matching the criteria.

        :param sort: string: Name of a response property to sort results.
                             See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

        :return: A generator for the repository objects

        API docs:
        https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get
        """
        params = {}
        if sort is not None:
            params["sort"] = sort
        for repository in self._get_paged(None, params):
            yield self._get_object(repository)

    def get(self, repository, by="slug"):
        """
        Returns the requested repository

        :param repository: string: The requested repository.
        :param by: string: How to interprate repository, can be 'slug' or 'name'.

        :return: The requested Repository object

        API docs:
        https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get
        """
        if by not in ("slug", "name"):
            ValueError("Unknown value '{}' for argument [by], expected 'slug' or 'name'".format(by))

        for r in self.each():
            if ((by == "slug") and (r.slug == repository)) or ((by == "name") and (r.name == repository)):
                return r

        raise Exception("Unknown repository {} '{}'".format(by, repository))

each(sort=None)

Get all repositories in the project matching the criteria.

:param sort: string: Name of a response property to sort results. See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

:return: A generator for the repository objects

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
def each(self, sort=None):
    """
    Get all repositories in the project matching the criteria.

    :param sort: string: Name of a response property to sort results.
                         See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

    :return: A generator for the repository objects

    API docs:
    https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get
    """
    params = {}
    if sort is not None:
        params["sort"] = sort
    for repository in self._get_paged(None, params):
        yield self._get_object(repository)

get(repository, by='slug')

Returns the requested repository

:param repository: string: The requested repository. :param by: string: How to interprate repository, can be 'slug' or 'name'.

:return: The requested Repository object

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
def get(self, repository, by="slug"):
    """
    Returns the requested repository

    :param repository: string: The requested repository.
    :param by: string: How to interprate repository, can be 'slug' or 'name'.

    :return: The requested Repository object

    API docs:
    https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get
    """
    if by not in ("slug", "name"):
        ValueError("Unknown value '{}' for argument [by], expected 'slug' or 'name'".format(by))

    for r in self.each():
        if ((by == "slug") and (r.slug == repository)) or ((by == "name") and (r.name == repository)):
            return r

    raise Exception("Unknown repository {} '{}'".format(by, repository))

Repositories

Bases: RepositoriesBase

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class Repositories(RepositoriesBase):
    def __init__(self, url, *args, **kwargs):
        super(Repositories, self).__init__(url, *args, **kwargs)

    def each(self, after=None, role=None, q=None, sort=None):
        """
        Get all repositories matching the criteria.

        The result can be narrowed down based on the authenticated user"s role.
        E.g. with ?role=contributor, only those repositories that the authenticated user has write access to
        are returned (this includes any repo the user is an admin on, as that implies write access).

        :param after: string: Filter the results to include only repositories created on or after this ISO-8601
                              timestamp. Example: YYYY-MM-DDTHH:mm:ss.sssZ
        :param role: string: Filters the workspaces based on the authenticated user"s role on each workspace.
                             * member: returns a list of all the workspaces which the caller is a member of
                               at least one workspace group or repository
                             * collaborator: returns a list of workspaces which the caller has write access
                               to at least one repository in the workspace
                             * owner: returns a list of workspaces which the caller has administrator access
        :param q: string: Query string to narrow down the response. role parameter must also be specified.
                          See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
        :param sort: string: Name of a response property to sort results.
                             See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

        :return: A generator for the repository objects

        API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories#get
        """
        if q is not None and role is None:
            raise ValueError("Argument [q] requires argument [role].")

        params = {}
        if after is not None:
            params["after"] = after
        if role is not None:
            params["role"] = role
        if q is not None:
            params["q"] = q
        if sort is not None:
            params["sort"] = sort
        for repository in self._get_paged(None, params):
            yield self._get_object(repository)

    def get(self, workspace, repo_slug):
        """
        Returns the requested repository.

        Since this method accesses the repository endpoint
        directly it is usable if you do not have permission
        to access the workspace endpoint.

        :param workspace: string: The workspace of the repository
        :param repo_slug: string: The requested repository.

        :return: The requested Repository object

        API docs:
        https://developer.atlassian.com/cloud/bitbucket/rest/api-group-repositories/#api-repositories-workspace-repo-slug-get
        """
        return self._get_object(super(Repositories, self).get("{}/{}".format(workspace, repo_slug)))

each(after=None, role=None, q=None, sort=None)

Get all repositories matching the criteria.

The result can be narrowed down based on the authenticated user"s role. E.g. with ?role=contributor, only those repositories that the authenticated user has write access to are returned (this includes any repo the user is an admin on, as that implies write access).

:param after: string: Filter the results to include only repositories created on or after this ISO-8601 timestamp. Example: YYYY-MM-DDTHH:mm:ss.sssZ :param role: string: Filters the workspaces based on the authenticated user"s role on each workspace. * member: returns a list of all the workspaces which the caller is a member of at least one workspace group or repository * collaborator: returns a list of workspaces which the caller has write access to at least one repository in the workspace * owner: returns a list of workspaces which the caller has administrator access :param q: string: Query string to narrow down the response. role parameter must also be specified. See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details. :param sort: string: Name of a response property to sort results. See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

:return: A generator for the repository objects

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories#get

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
def each(self, after=None, role=None, q=None, sort=None):
    """
    Get all repositories matching the criteria.

    The result can be narrowed down based on the authenticated user"s role.
    E.g. with ?role=contributor, only those repositories that the authenticated user has write access to
    are returned (this includes any repo the user is an admin on, as that implies write access).

    :param after: string: Filter the results to include only repositories created on or after this ISO-8601
                          timestamp. Example: YYYY-MM-DDTHH:mm:ss.sssZ
    :param role: string: Filters the workspaces based on the authenticated user"s role on each workspace.
                         * member: returns a list of all the workspaces which the caller is a member of
                           at least one workspace group or repository
                         * collaborator: returns a list of workspaces which the caller has write access
                           to at least one repository in the workspace
                         * owner: returns a list of workspaces which the caller has administrator access
    :param q: string: Query string to narrow down the response. role parameter must also be specified.
                      See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
    :param sort: string: Name of a response property to sort results.
                         See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

    :return: A generator for the repository objects

    API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories#get
    """
    if q is not None and role is None:
        raise ValueError("Argument [q] requires argument [role].")

    params = {}
    if after is not None:
        params["after"] = after
    if role is not None:
        params["role"] = role
    if q is not None:
        params["q"] = q
    if sort is not None:
        params["sort"] = sort
    for repository in self._get_paged(None, params):
        yield self._get_object(repository)

get(workspace, repo_slug)

Returns the requested repository.

Since this method accesses the repository endpoint directly it is usable if you do not have permission to access the workspace endpoint.

:param workspace: string: The workspace of the repository :param repo_slug: string: The requested repository.

:return: The requested Repository object

API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-repositories/#api-repositories-workspace-repo-slug-get

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
def get(self, workspace, repo_slug):
    """
    Returns the requested repository.

    Since this method accesses the repository endpoint
    directly it is usable if you do not have permission
    to access the workspace endpoint.

    :param workspace: string: The workspace of the repository
    :param repo_slug: string: The requested repository.

    :return: The requested Repository object

    API docs:
    https://developer.atlassian.com/cloud/bitbucket/rest/api-group-repositories/#api-repositories-workspace-repo-slug-get
    """
    return self._get_object(super(Repositories, self).get("{}/{}".format(workspace, repo_slug)))

Repository

Bases: BitbucketCloudBase

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
class Repository(BitbucketCloudBase):
    def __init__(self, data, *args, **kwargs):
        super(Repository, self).__init__(None, *args, data=data, expected_type="repository", **kwargs)
        self.__branch_restrictions = BranchRestrictions(
            "{}/branch-restrictions".format(self.url), **self._new_session_args
        )
        self.__branches = Branches("{}/refs/branches".format(self.url), **self._new_session_args)
        self.__commits = Commits(
            "{}/commits".format(self.url),
            data={"links": {"commit": {"href": "{}/commit".format(self.url)}}},
            **self._new_session_args
        )  # fmt: skip
        self.__hooks = Hooks(
            "{}/hooks".format(self.url),
            data={"links": {"hooks": {"href": "{}/hooks".format(self.url)}}},
            **self._new_session_args,
        )
        self.__default_reviewers = DefaultReviewers("{}/default-reviewers".format(self.url), **self._new_session_args)
        self.__deployment_environments = DeploymentEnvironments(
            "{}/environments".format(self.url), **self._new_session_args
        )
        self.__group_permissions = GroupPermissions(
            "{}/permissions-config/groups".format(self.url), **self._new_session_args
        )
        self.__issues = Issues("{}/issues".format(self.url), **self._new_session_args)
        self.__pipelines = Pipelines("{}/pipelines".format(self.url), **self._new_session_args)
        self.__pullrequests = PullRequests("{}/pullrequests".format(self.url), **self._new_session_args)
        self.__repository_variables = RepositoryVariables(
            "{}/pipelines_config/variables".format(self.url), **self._new_session_args
        )
        self.__tags = Tags("{}/refs/tags".format(self.url), **self._new_session_args)

    def update(self, **kwargs):
        """
        Update the repository properties. Fields not present in the request body are ignored.

        :param kwargs: dict: The data to update.

        :return: The updated repository

        API docs:
        https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#put
        """
        return self._update_data(self.put(None, data=kwargs))

    def delete(self, redirect_to=None):
        """
        Delete the repostory.

        :param redirect_to: string (default is None): If a repository has been moved to a new location, use this
                                                      parameter to show users a friendly message in the Bitbucket UI
                                                      that the repository has moved to a new location. However, a GET
                                                      to this endpoint will still return a 404.

        :return: The response on success

        API docs:
        https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#delete
        """
        params = {}
        if redirect_to is not None:
            params["redirect_to"] = redirect_to
        return super(Repository, self).delete(None, params=params)

    @property
    def name(self):
        """The repository name"""
        return self.get_data("name")

    @name.setter
    def name(self, name):
        """Setter for the repository name"""
        return self.update(name=name)

    @property
    def slug(self):
        """The repository slug"""
        return self.get_data("slug")

    @property
    def description(self):
        """The repository description"""
        return self.get_data("description")

    @description.setter
    def description(self, description):
        """Setter for the repository description"""
        return self.update(description=description)

    @property
    def is_private(self):
        """The repository private flag"""
        return self.get_data("is_private")

    @is_private.setter
    def is_private(self, is_private):
        """Setter for the repository private flag"""
        return self.update(is_private=is_private)

    @property
    def fork_policy(self):
        """Getter for the repository fork policy"""
        return self.get_data("fork_policy")

    @property
    def uuid(self):
        """The repository uuid"""
        return self.get_data("uuid")

    @property
    def size(self):
        """The repository size"""
        return self.get_data("size")

    @property
    def created_on(self):
        """The repository creation time"""
        return self.get_data("created_on")

    @property
    def updated_on(self):
        """The repository last update time"""
        return self.get_data("updated_on", "never updated")

    def get_avatar(self):
        """The repository avatar"""
        return self.get(self.get_link("avatar"), absolute=True)

    @property
    def branch_restrictions(self):
        """The repository branch restrictions"""
        return self.__branch_restrictions

    @property
    def branches(self):
        """The repository branches."""
        return self.__branches

    @property
    def commits(self):
        """The repository commits."""
        return self.__commits

    @property
    def hooks(self):
        """The repository hooks."""
        return self.__hooks

    @property
    def default_reviewers(self):
        """The repository default reviewers"""
        return self.__default_reviewers

    @property
    def deployment_environments(self):
        """The repository deployment environments"""
        return self.__deployment_environments

    @property
    def issues(self):
        """The repository issues"""
        return self.__issues

    @property
    def group_permissions(self):
        """The repository group permissions"""
        return self.__group_permissions

    @property
    def pipelines(self):
        """The repository pipelines"""
        return self.__pipelines

    @property
    def pullrequests(self):
        """The repository pull requests"""
        return self.__pullrequests

    @property
    def repository_variables(self):
        """The repository variables"""
        return self.__repository_variables

    @property
    def tags(self):
        """The repository tags."""
        return self.__tags

branch_restrictions property

The repository branch restrictions

branches property

The repository branches.

commits property

The repository commits.

created_on property

The repository creation time

default_reviewers property

The repository default reviewers

deployment_environments property

The repository deployment environments

description property writable

The repository description

fork_policy property

Getter for the repository fork policy

group_permissions property

The repository group permissions

hooks property

The repository hooks.

is_private property writable

The repository private flag

issues property

The repository issues

name property writable

The repository name

pipelines property

The repository pipelines

pullrequests property

The repository pull requests

repository_variables property

The repository variables

size property

The repository size

slug property

The repository slug

tags property

The repository tags.

updated_on property

The repository last update time

uuid property

The repository uuid

delete(redirect_to=None)

Delete the repostory.

:param redirect_to: string (default is None): If a repository has been moved to a new location, use this parameter to show users a friendly message in the Bitbucket UI that the repository has moved to a new location. However, a GET to this endpoint will still return a 404.

:return: The response on success

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#delete

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
def delete(self, redirect_to=None):
    """
    Delete the repostory.

    :param redirect_to: string (default is None): If a repository has been moved to a new location, use this
                                                  parameter to show users a friendly message in the Bitbucket UI
                                                  that the repository has moved to a new location. However, a GET
                                                  to this endpoint will still return a 404.

    :return: The response on success

    API docs:
    https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#delete
    """
    params = {}
    if redirect_to is not None:
        params["redirect_to"] = redirect_to
    return super(Repository, self).delete(None, params=params)

get_avatar()

The repository avatar

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
375
376
377
def get_avatar(self):
    """The repository avatar"""
    return self.get(self.get_link("avatar"), absolute=True)

update(**kwargs)

Update the repository properties. Fields not present in the request body are ignored.

:param kwargs: dict: The data to update.

:return: The updated repository

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#put

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
283
284
285
286
287
288
289
290
291
292
293
294
def update(self, **kwargs):
    """
    Update the repository properties. Fields not present in the request body are ignored.

    :param kwargs: dict: The data to update.

    :return: The updated repository

    API docs:
    https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#put
    """
    return self._update_data(self.put(None, data=kwargs))

WorkspaceRepositories

Bases: RepositoriesBase

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
class WorkspaceRepositories(RepositoriesBase):
    ALLOW_FORKS = "allow_forks"
    NO_PUBLIC_FORKS = "no_public_forks"
    NO_FORKS = "no_forks"
    FORK_POLICIES = [
        ALLOW_FORKS,
        NO_PUBLIC_FORKS,
        NO_FORKS,
    ]

    def __init__(self, url, *args, **kwargs):
        super(WorkspaceRepositories, self).__init__(url, *args, **kwargs)

    def create(self, repo_slug, project_key=None, is_private=None, fork_policy=None):
        """
        Creates a new repository with the given repo_slug.

        :param repo_slug: string: The repo_slug of the project.
        :param project_key: string: The key of the project. If the project is not provided, the repository
                                    is automatically assigned to the oldest project in the workspace.
        :param is_private: boolean: Set to false if the repository shall be public.
        :param fork_policy: string: The fork policy (one of WorkspaceRepositories.ALLOW_FORKS,
                                    WorkspaceRepositories.NO_PUBLIC_FORKS, WorkspaceRepositories.NO_FORKS).

        :return: The created project object

        API docs:
        https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#post
        """

        data = {"scm": "git"}
        if project_key is not None:
            data["project"] = {"key": project_key}
        if is_private is not None:
            data["is_private"] = is_private
        if fork_policy is not None:
            if fork_policy not in self.FORK_POLICIES:
                raise ValueError("fork_policy must be one of {}".format(self.FORK_POLICIES))
            data["fork_policy"] = fork_policy
        return self._get_object(self.post(repo_slug, data=data))

    def each(self, role=None, q=None, sort=None):
        """
        Get all repositories in the workspace matching the criteria.

        :param role: string: Filters the workspaces based on the authenticated user's role on each workspace.
                             * member: returns a list of all the workspaces which the caller is a member of
                               at least one workspace group or repository
                             * collaborator: returns a list of workspaces which the caller has write access
                               to at least one repository in the workspace
                             * owner: returns a list of workspaces which the caller has administrator access
        :param q: string: Query string to narrow down the response. role parameter must also be specified.
                          See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
        :param sort: string: Name of a response property to sort results.
                             See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

        :return: A generator for the workspace objects

        API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D#get
        """
        params = {}
        if role is not None:
            params["role"] = role
        if q is not None:
            params["q"] = q
        if sort is not None:
            params["sort"] = sort
        for repository in self._get_paged(None, params):
            yield self._get_object(repository)

    def get(self, repository, by="slug"):
        """
        Returns the requested repository

        :param repository: string: The requested repository.
        :param by: string: How to interprate repository, can be 'slug' or 'name'.

        :return: The requested Repository object

        API docs:
        https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#get
        """
        if by == "slug":
            return self._get_object(super(WorkspaceRepositories, self).get(repository))
        elif by == "name":
            for r in self.each():
                if r.name == repository:
                    return r
        else:
            ValueError("Unknown value '{}' for argument [by], expected 'key' or 'name'".format(by))

        raise Exception("Unknown repository {} '{}'".format(by, repository))

    def exists(self, repository, by="slug"):
        """
        Check if repository exist.

        :param repository: string: The requested repository.
        :param by: string (default is "slug"): How to interpret repository, can be 'slug' or 'name'.

        :return: True if the repository exists

        API docs:
        https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#get
        """
        exists = False
        try:
            self.get(repository, by)
            exists = True
        except HTTPError as e:
            if e.response.status_code in (401, 404):
                pass
        except Exception as e:
            if not str(e) == "Unknown project {} '{}'".format(by, repository):
                raise e
        return exists

create(repo_slug, project_key=None, is_private=None, fork_policy=None)

Creates a new repository with the given repo_slug.

:param repo_slug: string: The repo_slug of the project. :param project_key: string: The key of the project. If the project is not provided, the repository is automatically assigned to the oldest project in the workspace. :param is_private: boolean: Set to false if the repository shall be public. :param fork_policy: string: The fork policy (one of WorkspaceRepositories.ALLOW_FORKS, WorkspaceRepositories.NO_PUBLIC_FORKS, WorkspaceRepositories.NO_FORKS).

:return: The created project object

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#post

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
def create(self, repo_slug, project_key=None, is_private=None, fork_policy=None):
    """
    Creates a new repository with the given repo_slug.

    :param repo_slug: string: The repo_slug of the project.
    :param project_key: string: The key of the project. If the project is not provided, the repository
                                is automatically assigned to the oldest project in the workspace.
    :param is_private: boolean: Set to false if the repository shall be public.
    :param fork_policy: string: The fork policy (one of WorkspaceRepositories.ALLOW_FORKS,
                                WorkspaceRepositories.NO_PUBLIC_FORKS, WorkspaceRepositories.NO_FORKS).

    :return: The created project object

    API docs:
    https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#post
    """

    data = {"scm": "git"}
    if project_key is not None:
        data["project"] = {"key": project_key}
    if is_private is not None:
        data["is_private"] = is_private
    if fork_policy is not None:
        if fork_policy not in self.FORK_POLICIES:
            raise ValueError("fork_policy must be one of {}".format(self.FORK_POLICIES))
        data["fork_policy"] = fork_policy
    return self._get_object(self.post(repo_slug, data=data))

each(role=None, q=None, sort=None)

Get all repositories in the workspace matching the criteria.

:param role: string: Filters the workspaces based on the authenticated user's role on each workspace. * member: returns a list of all the workspaces which the caller is a member of at least one workspace group or repository * collaborator: returns a list of workspaces which the caller has write access to at least one repository in the workspace * owner: returns a list of workspaces which the caller has administrator access :param q: string: Query string to narrow down the response. role parameter must also be specified. See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details. :param sort: string: Name of a response property to sort results. See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

:return: A generator for the workspace objects

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D#get

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
def each(self, role=None, q=None, sort=None):
    """
    Get all repositories in the workspace matching the criteria.

    :param role: string: Filters the workspaces based on the authenticated user's role on each workspace.
                         * member: returns a list of all the workspaces which the caller is a member of
                           at least one workspace group or repository
                         * collaborator: returns a list of workspaces which the caller has write access
                           to at least one repository in the workspace
                         * owner: returns a list of workspaces which the caller has administrator access
    :param q: string: Query string to narrow down the response. role parameter must also be specified.
                      See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
    :param sort: string: Name of a response property to sort results.
                         See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.

    :return: A generator for the workspace objects

    API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D#get
    """
    params = {}
    if role is not None:
        params["role"] = role
    if q is not None:
        params["q"] = q
    if sort is not None:
        params["sort"] = sort
    for repository in self._get_paged(None, params):
        yield self._get_object(repository)

exists(repository, by='slug')

Check if repository exist.

:param repository: string: The requested repository. :param by: string (default is "slug"): How to interpret repository, can be 'slug' or 'name'.

:return: True if the repository exists

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#get

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
def exists(self, repository, by="slug"):
    """
    Check if repository exist.

    :param repository: string: The requested repository.
    :param by: string (default is "slug"): How to interpret repository, can be 'slug' or 'name'.

    :return: True if the repository exists

    API docs:
    https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#get
    """
    exists = False
    try:
        self.get(repository, by)
        exists = True
    except HTTPError as e:
        if e.response.status_code in (401, 404):
            pass
    except Exception as e:
        if not str(e) == "Unknown project {} '{}'".format(by, repository):
            raise e
    return exists

get(repository, by='slug')

Returns the requested repository

:param repository: string: The requested repository. :param by: string: How to interprate repository, can be 'slug' or 'name'.

:return: The requested Repository object

API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#get

Source code in server/vendor/atlassian/bitbucket/cloud/repositories/__init__.py
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
def get(self, repository, by="slug"):
    """
    Returns the requested repository

    :param repository: string: The requested repository.
    :param by: string: How to interprate repository, can be 'slug' or 'name'.

    :return: The requested Repository object

    API docs:
    https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D#get
    """
    if by == "slug":
        return self._get_object(super(WorkspaceRepositories, self).get(repository))
    elif by == "name":
        for r in self.each():
            if r.name == repository:
                return r
    else:
        ValueError("Unknown value '{}' for argument [by], expected 'key' or 'name'".format(by))

    raise Exception("Unknown repository {} '{}'".format(by, repository))