Atlassian Jira REST API


#1

Pozdrav.

Na poslu koristimo Atlassian Jira kao bug tracking rjesenje. Jira po defaultu dolazi sa ugradjenim REST API-em. (https://docs.atlassian.com/software/jira/docs/api/REST/latest/)
Kroz ovaj api mogu npr, da prijavim new issue bez da to radim kroz jira web interfejs, kako jira zapravo i radi. Da bi ovo sve radilo potrebno je da:

  1. Da je ovaj api podrzan na jiri koju koristite
  2. Da je na jiri omogucena opcija Accept remote API calls
  3. Da korisnik kojeg koriste ima prava citanja/pisanja na nekom Jira projektu

Ova tri uslova su u mom slucaju zadovoljena. Ovo je skripta u php-u koju koristim:

	$username = 'user';
        $password='pasword';

	
	$url = 'https://xxxxx.jira.com/rest/api/2/issue/BUG-123';

	$curl = curl_init();

	curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");

	curl_setopt($curl, CURLOPT_URL, $url);

	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);

	$issue_list = (curl_exec($curl));

	echo $issue_list;

Response na ovaj kod je:

Forbidden (403)
Encountered a “403 - Forbidden” error while loading this page.

Da li je neko mozda radio nesto slicno? Ne znam kako da ovo rijesim. Ono sto sam primjetio je da ako hocu da se ulogujem na jiru preko web interfejsa, a prethodno sam pokrenuo ovu skriptu, tada je potrebno da popunim i captchu. Kao da sam pokusao pogresan login nekoliko puta. Da li postoji jos nesto na jiri sto se mora podestiti?


#2

Možeš li koristiti sljedeće

$headers = array("Authorization: Basic " . base64_encode("$username:$password"));
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

umjesto

curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");

Za tu captchu, vjerovatno trebaš dodati “X-Atlassian-Token: nocheck” header. Pogledaj u dokumentaciji na linku koji si poslao.

P.S.

Pogledaj malo i ovaj PHP Jira client na github:
https://github.com/chobie/jira-api-restclient/blob/master/Jira/Api/Client/CurlClient.php

ili makar neki http klijent, CURL interfejs je po meni previše "low level"
http://pear.php.net/package/HTTP_Request2


#3

Hvala adise, pogledacu ovo sto si napisao.


#4

definitivno treba ici base64_encode("$username:$password").


#5

Isti problem i ovako.

Nisam jos probao ovo za captchu.