Access Bitbucket API (via PowerShell)

edward71 January 23, 2020

I wanted to write a script that returns from all repositories the package.json or the nuget specification (to process them further)

For starters just to list the repositories but already there i get 0 results are there any additional rights requirements or do i need to call this in another way?

The following:

$url = 'https://api.bitbucket.org/2.0/repositories/MyCompany/'
Invoke-RestMethod -Method GET -Header $Header -ContentType "application/json" -uri $url | ConvertTo-Json

returns me a json return with 0 results while there should be dozens

{
"pagelen": 10,
"values": [

],
"page": 1,
"size": 0
}

When I try:

$url = 'https://api.bitbucket.org/2.0/repositories/mycompany/someproject/src/develop/package.json?format=meta'Invoke-RestMethod -Method GET -Header $Header -ContentType "application/json" -uri $url | ConvertTo-Json

I get

Invoke-RestMethod : Access denied. You must have write or admin access. 


with the following header:

$
Header = @{"Authorization" = 'Basic'+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($username+':'+$password))}

 

(and ofcourse via the UI i can normally access this) (should I use SSH ?)

 

 

1 answer

0 votes
Brent Dowdy July 7, 2020

@edward71 This appears to be correct, I tried your code and it works except I had to make one change. 

There needs to be a space ' ' after the 'Basic' so that the credentials aren't part of the "Basic" attribute. Once I added this space then it let me authenticate. Beyond this, you only need to make sure you have the correct privs. 

$Header = @{"Authorization" = 'Basic '+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($username+':'+$password))} 

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events