LoginSignup
1
1

More than 1 year has passed since last update.

Atlassian API を利用して、 Confluence にページを作成する

Posted at

方法

API トークンの作成

Manage API tokens for your Atlassian account | Atlassian Support

API を利用したページの作成

The Confluence Cloud REST API (atlassian.com) の例を利用してページを作成することができた。

この例はパラメタが多いので、独自のクラスを作成。

import json

import requests
from requests.auth import HTTPBasicAuth


class Confluence:
   def __init__(self, user_name, api_key, url):
       self.user_name = user_name
       self.api_key = api_key
       self.url = f'https://{url}'

   def create_page(self, title, content, space, parent_page_id):
       url = f"https://{self.url}/wiki/rest/api/content"
       payload = json.dumps({
           "title": title,
           "type": "page",
           "status": "current",
           "space": {
               "key": space
           },
           "ancestors": [
               {
                   "id": parent_page_id
               }
           ],
           "body": {
               "storage": {
                   "value": content,
                   "representation": "storage"
               },
           }
       })
       return self.post(payload, url)

   def post(self, payload, url):
       auth = HTTPBasicAuth(self.user_name, self.api_key)
       headers = {
           "Accept": "application/json",
           "Content-Type": "application/json"
       }
       return requests.request(
           "POST",
           url,
           data=payload,
           headers=headers,
           auth=auth
       )

   def get_page_by(self, page_id):
       url = f"{self.url}/wiki/rest/api/content/{page_id}?expand=body.storage"
       auth = HTTPBasicAuth(self.user_name, self.api_key)
       headers = {
           "Accept": "application/json",
           "Content-Type": "application/json"
       }
       return requests.request(
           "GET",
           url,
           headers=headers,
           auth=auth
       )

   def get_page_content_by(self, page_id):
       response = self.get_page_by(page_id)
       return json.loads(response.text)['body']['storage']['value']

下記のように実行することで、ページをとりあえず作成することができた。

confluence = confluence.Confluence(
   '<user name>',
   '<api key>',
   '<url>'
)
response = confluence.create_page('ページのタイトル', 'コンテンツ', 'スペース名', <親ページのID>)

Ref

How to create new page in Confluence using their REST API? - Stack Overflow

Solved: how to get full content body (html) using confluen... (atlassian.com)

なんかうまく使えなかった。

Welcome to Confluence’s documentation! — confluence 0.1 documentation (pythonhosted.org)

Forge App。これはこれで利用できたが、今回の目的には適さなかった。

Getting started (atlassian.com)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1