Bitbucket cloud APIs have a good documentation, but I could not find a comprehensive examples showing how to make authenticated calls to those APIs.
My requirement is very simple. As a bitbucket cloud admin for a given workspace, I would like to get a list of all the repos the workspace has.
I would like to be able to do this from my python backend (a simple script & nothing else). There is no user interaction involved in this case. Now having gone through the documentation & a bunch of online resources, it appears that there are a few ways to get authentication tokens, which is (obviously) the first step to be able to call any other APIs.
Here are a few things I'm struggling with & would really appreciate any inputs around the same : (PS: pointing me to the right resources would also be great help. Don't necessarily need direct spoon fed answers
)
- What's the difference between the different tokens? On Bitbucket cloud I can see App Tokens & Oauth Consumers. Which one is the one to be used in my case above? And with each, what should be the respective header value?
- What's the endpoint to which the call needs to be made? For example to get a list of the all repos in the given workspace, for which I am an admin, would it be https://api.bitbucket.org/2.0/repositories/<my_workspace_name_here> or would it be https://bitbucket.org/<my_workspace_name_here>/2.0/repositories/ or would it be something else?
- There is this official python lib from Atlassian https://atlassian-python-api.readthedocs.io/index.html which does seem to talk about how to get the authentication done for Bitbucket cloud using the app password, something like using the below:
bitbucket_app_pw = Cloud(
url='https://api.bitbucket.org/',
username=bitbucket_username,
password=bitbucket_app_password,
cloud=True)
and then the corresponding API call to list the repos seems to be
bitbucket.project_list()
but the bitbucket Cloud object (in this case bitbucket_app_pw), obtained from the former snippet above, does not seem to have the project_list method at all. Am I missing something here?