0
Help us understand the problem. What are the problem?

posted at

updated at

Organization

VS CodeからREST APIを実行してConfluenceライセンスを付与する

この記事は MicroAd Advent Calendar 2021 の 10 日目の記事です。

概要

こんにちは、コーポレートエンジニアの まいまい です。
この記事では VS Code の Extension (拡張機能) である「REST Client」を使って REST API を実行し、指定した Atlassian アカウントに Confluence ライセンスを付与する方法を紹介します。

目的

いろいろなサービスで提供されている Web API を使った開発では、事前に API を実行して動作検証をすると思います。

私の場合、Chrome のアプリや Postman などを利用していましたが、VS Code を使って作業をしているので、「VS Code から API を実行できるなら実行したい」と思っていました。

また、私は業務で Atlassian 製品の管理や構成、API を使った開発をしているので、REST API の利用方法を紹介したいと思っていました。

以上から、今回の記事の目的は

  • VS Code から REST API を実行する
  • REST API を実行して指定した Atlassian アカウントに Confluence ライセンスを付与する

の2つについて紹介することになります。

前提

今回は Confluence Cloud Standard プラン を利用しています。
また、Confluenceライセンスを付与するため、 サイト管理者の権限を持った Atlassian アカウント で API トークンを発行し、REST API を実行しています。

ちなみに、Free プランでも REST API は使えるようです。

VS Code から REST API を実行する

VS Code に「REST Client」をインストールすることで、VS Code から REST API を実行できるようになります。

REST Client のインストール

REST Client を VS Code にインストールする方法は以下の通りです。

  1. VS Codeを起動して 拡張機能 アイコンをクリックします。
  2. 検索バーに「REST Client」と入力します。
  3. 一番上に「REST Client」が表示されますので、これをインストールします。

REST Client.png

REST Client の使い方

POST する場合の基本的な使い方です。

POST
POST https://example.com/comments HTTP/1.1
content-type: application/json

{
    "name": "sample",
    "time": "Wed, 21 Oct 2015 18:27:50 GMT"
}
  1. VS Codeを開き、上記の形式でリクエストを入力します。リクエストヘッダから1行空けてリクエストボディを書きます。
  2. 以下のいずれかの方法でリクエストを送信します。
    • Windows の場合 Ctrl + Alt + R
    • Mac の場合 command + option + R
    • VS Code メニューの 表示コマンド パレットSend Request Send Request.png
  3. レスポンスが VS Code の画面右側に表示されます。 Response.png

REST Client の操作方法についてはこちらの記事で詳しく紹介されていますので、ご興味のある方はご参照ください。

REST API を実行して指定した Atlassian アカウントに Confluence ライセンスを付与する

続きまして、REST API を実行して指定した Atlassian アカウントに Confluence ライセンスを付与する方法を紹介します。

APIトークンの準備と認証

Atlassian 製品の REST API を利用するには API トークン が必要になります。
API トークンを作成するには、自分の Atlassian アカウント管理ページの [セキュリティ] → [API トークン] → [API トークンの作成と管理] にアクセスし、作成します。

APIトークンの作成.png

APIトークンの作成2.png

Atlassian Support による公式ドキュメントもありますので、こちらもご参照ください。

Basic 認証方法

REST Client から Jira Cloud REST API を実行する場合、作成した API トークン your-api-token を以下のように指定して Basic 認証します。

Authorization: Basic hogehoge@example.com:your-api-token

補足:Google Apps Script や Python などで利用する場合

GAS や Python など、コードから Jira Cloud REST API を実行する場合、先ほどの hogehoge@example.com:your-api-token を直接指定するのではなく、BASE64 エンコードされた文字列を指定して Basic 認証します。

(1) hogehoge@example.com:your-api-token を BASE64 エンコードします。

Linux/Unix/MacOS
echo -n hogehoge@example.com:your-api-token | base64
Windows10
$Text = 'hogehoge@example.com:your-api-token'
$Bytes = [System.Text.Encoding]::UTF8.GetBytes($Text)
$EncodedText = [Convert]::ToBase64String($Bytes)
$EncodedText

(2) 出力された文字列 (例:dXNlcmVtYWlsOmFwaV90b2tlbg==) をヘッダに指定し、Basic 認証します。
※REST Client でもこの形式で指定できます。

Authorization: Basic dXNlcmVtYWlsOmFwaV90b2tlbg==

今回紹介した内容も含め、Atlassian の開発者向けサイトに Basic 認証についてのドキュメントが公開されていますので、こちらもご参照ください。
https://developer.atlassian.com/cloud/jira/platform/basic-auth-for-rest-apis/

REST APIの実行

Confluence のライセンスを付与するには

Web の管理画面でライセンス付与/削除する場合、そのユーザーのアカウント画面を開き、対象の製品のアクセスを ON/OFF しますが、ここの ON/OFF に連動してその製品用の Atlassian グループ (例:confluence-users) にユーザー追加/削除されています。

また、製品用の Atlassian グループにユーザー追加/削除すると、追加/削除したユーザーの製品アクセスもON/OFFされます。

管理画面.png

以上から、REST API を実行し、指定した Atlassian アカウントを Atlassian グループ confluence-users にユーザー追加すると、Confluence のライセンスを付与することができます。

ちなみに、Jira Software 用のグループは jira-software-users、Jira Service Management 用のグループは jira-servicedesk-users になります。

使用する REST API

Confluence Cloud REST API を利用する場合、以下を利用します。
your-domain に自分の利用しているインスタンス名、{name}confluence-users を指定します。

Confluence-Cloud-REST-API
https://your-domain.atlassian.net/wiki/rest/api/group/user?name={name}

Jira Cloud も利用している場合は Jira Cloud REST API を利用してグループにユーザー追加することもできます。
こちらも your-domain に自分の利用しているインスタンス名、{groupname}confluence-users を指定します。

Jira-Cloud-REST-API
https://your-domain.atlassian.net/rest/api/3/group/user?groupname={groupname}

POST する際に、グループに追加する Atlassian アカウントの accountId を指定します。

JSON
{
    "accountId": "<string>"
}

accountId は Web のユーザー管理画面や各ユーザーのプロファイルページのURLから確認できます。

AccountId.png

グループにユーザーを追加

実際に REST API を実行して confluence-users グループに追加します。

Confluence-Cloud-REST-API
POST https://your-domain.atlassian.net/wiki/rest/api/group/user?name=confluence-users  HTTP/1.1
Authorization: Basic hogehoge@example.com:your-api-token
Accept: application/json
Content-Type: application/json

{
    "accountId": "<string>"
}
Jira-Cloud-REST-API
POST https://your-domain.atlassian.net/rest/api/3/group/user?groupname=confluence-users  HTTP/1.1
Authorization: Basic hogehoge@example.com:your-api-token
Accept: application/json
Content-Type: application/json

{
    "accountId": "<string>"
}

応用事例

今回は REST Client から REST API を実行しましたが、
この内容を応用して、例えば Jira Service Management で Atlassian アカウントの申請を管理している場合、ライセンスの付与/削除を Automation for JiraSmart Values を利用して自動化できます。
Automation for Jira では Web リクエストを送信することができ、その際に Smart Values でユーザーの accountId を指定できます。

機会があれば、この自動化設定についても書いてみたいと思います。

自動化の設定画面.png

最後に

Atlassian のクラウド製品は Free プランもあるので、業務で使っていないという方でも自分用にインスタンスを作成して利用することが可能です。
ご興味のある方は試してみては如何でしょうか?

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?