方法
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。これはこれで利用できたが、今回の目的には適さなかった。