Jira Service ManagementのREST APIを触ってみた
こんにちは。たかやまです。
Jira Service ManagementではコンソールアクセスのほかAPIでのアクセスも提供しています。
APIを利用することで、テキストレベルでJira Service Managementのデータを取得/操作することができます。また、Jira Service Managementの自動化ルールを利用してAPIを利用した処理を行うことも可能です。
今回Jira Service ManagementのREST APIを触る機会があったので、その内容をお伝えします。
API トークンの取得
まずはこちらのドキュメントを参考にAPI トークンを取得します。
以下のURLからAtlassian API トークン管理画面にログインします。
ログイン後、「API トークンを作成する」を選択します。
APIトークンの作成画面で「名前」と「有効期限」を設定し、「作成」を選択します。
有効期限については、以前は無期限の設定が可能でしたが、2024年12月15日以降はセキュリティ強化のため、最長1年間までの設定となります。
After December 15, 2024, by default we set API tokens to expire in one year. When you create an API token, you can set the expiration date to be from 1 day up to one year.
This does not affect your existing API tokens.
APIトークンは作成後に一度だけ表示されます。再表示はできませんので、注意してください。
APIトークン作成後は、トークンの有効期限や最終アクセス日を確認することができます。
APIトークンは再表示されませんので、安全な場所に保存して管理してください。
API トークンを利用したアクセス
curlアクセス
では、APIトークンを利用してAPIにcurlでアクセスしてみたいと思います。
利用できるREST APIはこちらから確認できます。
ドキュメントのサンプルコマンド内では --header
オプションを利用して Authorization: Bearer <access_token>
を指定していますが、こちらのリクエストでは以下のエラーが発生しました。
{"error": "Failed to parse Connect Session Auth Token"}
なので、How to use an API tokenで紹介されている、 --user
オプションを利用して <email>:<api_token>
を指定する方法でアクセスしてみます。
curl --request GET \
--url 'https://<mysite>.atlassian.net/rest/servicedeskapi/servicedesk' \
--user '<me@example.com>:<my-api-token>'
--header 'Accept: application/json'
<mysite>
: Jira Service Managementのサブドメイン<me@example.com>
: 取得したトークン管理者メールアドレス<my-api-token>
: 取得したAPIトークン
こちらの方法でcurlを実行すると無事、以下のようなレスポンスが返ってきました。
curl --request GET \
--url 'https://<mysite>.atlassian.net/rest/servicedeskapi/servicedesk' \
--user '<me@example.com>:<my-api-token>' \
--header 'Accept: application/json'
{"size":XX,"start":X,"limit":XX,"isLastPage":true,"_links":{"self":"https://XX/rest/servicedeskapi/servicedesk","base":"https://XX","context":""},"values":[{"id":"XX","projectId":"XXXXX","projectName":"XX","projectKey":"XX","_links":{"self":"https://XX/rest/servicedeskapi/servicedesk/XX"}}, ... ]}
JSM自動化ルールアクセス
実際に運用の中では、JSM自動化ルールを組み合わせて利用するケースが多いかと思います。
合わせてJSM自動化ルール上でのAPIトークンの利用方法についても確認してみます。
JSM自動化ルールでAPIトークンを利用する場合、Webリクエストのコンポーネントを利用します。
さきほどのcurl形式のリクエストをWebリクエストとして送信する場合は以下のようになります。
curl --request GET \
--url 'https://<mysite>.atlassian.net/rest/servicedeskapi/servicedesk' \
--user '<me@example.com>:<my-api-token>' \
--header 'Accept: application/json'
ポイントとして--user
オプションで指定している <email>:<api_token>
は、ヘッダーに Authorization Basic
でBase64エンコードされた値を利用する必要があります。
Base64エンコードする方法は以下の通りです。
echo -n "<me@example.com>:<my-api-token>" | base64
値を設定できたら、Webリクエスト構成から検証が可能です。
こちらの「検証」を選択し、応答で 200
が返ってくれば成功です。
Node.jsでのアクセス
最後にNode.jsでのアクセス方法についても確認してみます。
Node.jsでのアクセスも同様に Authorization Basic
でBase64エンコードされた値を利用することでアクセスが可能です。
import fetch from 'node-fetch';
fetch('https://<mysite>.atlassian.net/rest/servicedeskapi/servicedesk', {
method: 'GET',
headers: {
'Authorization': 'Basic <Base64エンコード値>',
'Accept': 'application/json'
}
})
.then(response => {
console.log(
`Response: ${response.status} ${response.statusText}`
);
return response.text();
})
.then(text => console.log(text))
.catch(err => console.error(err));
最後に
Atlassian APIを利用したアクセス方法をご紹介しました。
実際の運用中では取得したAPIをもとにJSM自動化ルールを回したりすると思うので、Atlassian APIを利用した自動化ルールの活用なども紹介できればと思います。
この記事が誰かのお役に立てれば幸いです。
以上、たかやま(@nyan_kotaroo)でした。