@@ -249,6 +249,40 @@ def get_plan_specs(self, plan_key, package=None, format="YAML"):
249249 params ["package" ] = package
250250 return self .get (self .resource_url (f"plan/{ plan_key } /specs" ), params = params )
251251
252+ def search_linked_repositories (self , search_term = None ):
253+ """Search globally configured Bamboo linked repositories.
254+
255+ The public Bamboo REST API can search existing linked repositories but
256+ does not create or update their connection configuration. Create those
257+ connections in Bamboo administration, then use the returned repository
258+ ID with :meth:`link_repository_to_project`.
259+
260+ :param search_term: Optional repository-name fragment.
261+ :return: Bamboo's paged linked-repository response.
262+ """
263+ params = {}
264+ if search_term is not None :
265+ params ["searchTerm" ] = search_term
266+ return self .get (self .resource_url ("repository" ), params = params )
267+
268+ def get_project_linked_repositories (self , project_key ):
269+ """Return linked repositories authorized for Bamboo Specs in a project."""
270+ return self .get (self .resource_url (f"project/{ project_key } /repository" ))
271+
272+ def link_repository_to_project (self , project_key , repository_id ):
273+ """Authorize an existing linked repository for Bamboo Specs in a project.
274+
275+ This grants a repository-stored Bamboo Specs repository permission to
276+ create or edit plans in ``project_key``. It does not change the
277+ repositories checked out by an existing plan; update and apply that
278+ plan's Bamboo Specs for plan-level repository changes.
279+ """
280+ return self .post (self .resource_url (f"project/{ project_key } /repository" ), data = {"id" : repository_id })
281+
282+ def unlink_repository_from_project (self , project_key , repository_id ):
283+ """Remove a project-level Bamboo Specs repository authorization."""
284+ return self .delete (self .resource_url (f"project/{ project_key } /repository/{ repository_id } " ))
285+
252286 def search_plans (self , search_term , fuzzy = True , start_index = 0 , max_results = 25 ):
253287 """
254288 Search plans by name
0 commit comments