Download a single file from a repo using python
Asked by Mart? Bastida Comas:

So I have been struggling with this for a while now.

I need to simply download a file from a private repo using python (I want to use this file later on the same python script).

Due to the lack of documentation (and all my failed attempts) now I'm simply trying to make it work via curl. I switched to curl as a way of finding the right structure (there's a lot more issues on internet using curl than python) to later be able to translate it into python.

But still no luck. I've tried:

    curl -O -u username:password https://bitbucket.org/username/repository/raw/branch/filename.txt

```
https://bitbucket.org/<account>/<repo-name>/raw/<commit-sha-or-HEAD>/<filename
```

    curl --user myuser@mydomain.com:password "https://api.bitbucket.org/2.0/repositories/MyCompany/myrepo/src/master/path/to/file.txt

etc.

with no luck.

When it says password in the curl commands I've used an app password that has read access to the repo.

So can anyone point me in the right direction? At this point I dont care if it's Python or curl :)


Answers:
author: R Arda Duman
body: Hello [@Mart? Bastida Comas](/t5/user/viewprofilepage/user-id/4658327)

<br />

Thank you reaching out Atlassian Community.

<br />

Can you please try the following **curl** command?

> ```
> curl -u username:password https://api.bitbucket.org/2.0/repositories/MyCompany/myrepo/src/master/path/to/file.txt -o file.txt
> ```

Regards.  
Arda Duman

comments: author: Mart? Bastida Comas
body: Hi, thanks for your response.

This command at least doesn't give an error:

```
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
```

But still the file downloaded is blank, There's nothing in it.


author: R Arda Duman
body: Hello,  

Can you send the command with -v flag to see verbose output?

```
curl -u username:password https://api.bitbucket.org/2.0/repositories/MyCompany/myrepo/src/master/path/to/file.txt -o file.txt -v
```

Regards.  
Arda Duman


author: Mart? Bastida Comas
body: Great the problem was mine. I was input the email instead of the username.

Now it works.

One last thing: Could you point me the specific page where this endpoint is documented? It's probably me but if i search the bitbucket 2.0 REST API I can't find this. I ask it because I will need other info (like list the directories in a folder) and I don't want to have to open a question for each endpoint :)


author: R Arda Duman
body: Hello,

<br />

I am glad that your problem resolved. You can refer to <https://developer.atlassian.com/cloud/bitbucket/rest/intro/> for further information about cloud REST APIs.

<br />

Regards.  
Arda Duman


author: Mart? Bastida Comas
body: That's where I was looking for. But for example, the endpoint you have given me is not listed on the repositories section. The closest one is the Get a repository endpoint. Is this correct or I'm looking somewhere not right?

How could one (for example) list all the directories in a specific folder?


author: R Arda Duman
body: You can refer to the section [Get file or directory contents.](https://developer.atlassian.com/cloud/bitbucket/rest/api-group-source/#api-repositories-workspace-repo-slug-src-commit-path-get)

<br />

Regards.  
Arda Duman


author: sriya pradhan
body: Hi [@R Arda Duman](/t5/user/viewprofilepage/user-id/4692243)

I have been trying to do the same that you have suggested but instead of the raw file content, I am getting the output in HTML.

Could you please help me out ?  

My repository is a private one.


Tags: api

bitbucket-cloud

cloud

curl

download

python