oshiro のプロフィール画像@oshiro

投稿日
2023/05/20

JiraのREST APIにPHPでHTTPリクエストを送ってみた

はじめに

新卒で入社し、2か月目に突入したoshiroです!インターン時代にJiraのREST APIを学ぶ機会がありましたので、その時に作成したサンプルコードを共有いたします!
JiraのREST APIを使って自動化などを検討されている方の参考になれば嬉しいです!!

動作環境

プログラミング言語 バージョン
PHP 7.4

認証方法

Jira REST APIsでは2つの認証方法がサポートされています。

本記事では、基本認証を使用します。
基本認証では、Jiraアカウントのメールアドレスと取得したAPIトークンが必要です。
Atlassianアカウントにログインし、APIトークンの作成をしてください。

REST APIを使ったJiraの操作方法

それでは、準備が整いましたので実際にサンプルコードを見ていきましょう。

Issueの作成

Issue作成のサンプルコードは以下になります。

$request_url = 'https://{サイト名}.atlassian.net/rest/api/2/issue';
$user_name = 'Jiraのメールアドレス';
$api_token = 'JiraのAPIトークン';
$header = [
    'Accept: application/json',
    'Content-Type:application/json'
];

$post_data = [
    "fields" => [
        "project" => [
            "key" => "プロジェクトキー"
        ],
        "issuetype" => [
            "name" => "課題タイプ名"
        ],
        "summary" => "タイトル",
        "description" => "説明"
    ]
];

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $request_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_USERPWD, "{$user_name}:{$api_token}");
curl_exec($curl);

フィールドには上記以外にも、ラベルやカスタムフィールドなどを指定できます!

実行するとチケットが作成され、以下の返り値が得られます。

{
    "id": "issue id",
    "key": "issue key",
    "self": "issue url"
}

Issue情報の取得

次に、先ほど作成したIssueの情報を取得するサンプルコードです。

$request_url = 'https://{サイト名}.atlassian.net/rest/api/2/issue/{issueキー}';
$user_name = 'Jiraのメールアドレス';
$api_token = 'JiraのAPIトークン';

$header = [
    'Accept: application/json',
    'Content-Type:application/json'
];

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $request_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_USERPWD, "{$user_name}:{$api_token}");
curl_exec($curl);

返り値には、チケットの全ての情報が含まれます。

添付ファイルの追加

最後に、Issueに添付ファイルを追加するサンプルコードです。

$request_url = 'https://{サイト名}.atlassian.net/rest/api/2/issue/{issueキー}/attachments';
$user_name = 'Jiraのメールアドレス';
$api_token = 'JiraのAPIトークン';

$header = [
    'X-Atlassian-Token: nocheck',
];

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $request_url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_USERPWD, "{$user_name}:{$api_token}");

curl_setopt($curl, CURLOPT_POSTFIELDS, [
    'file' => new CURLFile('ファイルパス')
]);
curl_exec($curl);

ファイル名や著者などの情報が返り値として渡されます。

おわりに

JiraのREST APIにリクエストを送ることで、Issueの作成や取得などを自動化できることができるようになります。
他にもいろいろな使い方がありますので、もしJira操作で自動化してみたいことがありましたら、ドキュメントを一読してみて下さい!
Jira REST API reference

参考記事

0