REST API를 이용한 Confluence 문서 업데이트

REST API를 이용한 Confluence 문서 업데이트

Python
Jira
REST API를 이용한 Confluence 문서 업데이트
Author

gabriel yang

Published

October 9, 2024


Confluence 문서 정보를 업데이트하는 방법 중 하나는 Confluence REST API를 이용하는 것입니다. 이 API를 통해 프로그램적으로 문서를 조회, 생성, 수정할 수 있으며, 이를 위해 requests 라이브러리를 사용하여 HTTP 요청을 보낼 수 있습니다.

1. Confluence REST API 소개

Confluence의 REST API는 Confluence에서 문서를 생성하고 업데이트하는 데 필요한 다양한 기능을 제공합니다. 문서를 업데이트하려면 주로 PUT 요청을 사용합니다. 이 요청은 특정 페이지의 내용을 수정할 수 있게 해줍니다.

Confluence REST API를 사용하여 문서를 업데이트하려면 다음 사항이 필요합니다:

  • Confluence의 API 엔드포인트 (예: https://<your-domain>.atlassian.net/wiki/rest/api/content/{page_id})
  • Confluence 페이지 ID (수정할 페이지의 고유 식별자)
  • Atlassian API 토큰 (인증을 위해 필요)

2. 사전 준비

  1. API Token 생성: Atlassian 계정에서 API 토큰을 생성해야 합니다. Atlassian API Token 페이지에서 토큰을 생성할 수 있습니다.

  2. 필요한 Python 라이브러리 설치: Confluence REST API에 요청을 보내려면 requests 라이브러리를 사용합니다. 이 라이브러리가 없다면 아래와 같이 설치하세요:

    pip install requests

3. requests를 이용한 Confluence 문서 업데이트 예제

다음은 requests 라이브러리를 사용하여 Confluence 문서 정보를 업데이트하는 Python 코드 예제입니다.

3.1. API 엔드포인트 및 인증 정보 설정

import requests
import json

# Confluence 도메인, 페이지 ID 및 API 엔드포인트 설정
confluence_base_url = 'https://<your-domain>.atlassian.net/wiki'
page_id = '<your-page-id>'
api_url = f'{confluence_base_url}/rest/api/content/{page_id}'

# Atlassian 계정의 이메일과 API 토큰
auth_email = '<your-email>'
api_token = '<your-api-token>'

# 인증 정보
auth = (auth_email, api_token)

3.2. 문서 정보 가져오기

Confluence 페이지를 수정하기 전에 해당 페이지의 현재 정보를 가져와야 합니다. 특히 version 정보가 필요합니다. GET 요청을 사용하여 페이지 정보를 가져옵니다.

# 문서 정보 가져오기
response = requests.get(api_url, auth=auth)
page_info = response.json()

# 현재 버전 정보 가져오기
current_version = page_info['version']['number']

print(f'현재 페이지 버전: {current_version}')

3.3. 문서 업데이트

문서를 업데이트할 때는 새로운 내용과 함께 PUT 요청을 보내야 합니다. 이때, 업데이트하려는 페이지의 내용(body), 제목(title), 그리고 version 정보가 필요합니다.

# 업데이트할 새 버전
new_version = current_version + 1

# 업데이트할 문서 데이터 설정
update_data = {
    "id": page_id,
    "type": "page",
    "title": "업데이트된 페이지 제목",
    "version": {
        "number": new_version
    },
    "body": {
        "storage": {
            "value": "<p>이것은 새로 업데이트된 내용입니다.</p>",
            "representation": "storage"
        }
    }
}

# PUT 요청으로 문서 업데이트
update_response = requests.put(
    api_url,
    data=json.dumps(update_data),
    auth=auth,
    headers={"Content-Type": "application/json"}
)

# 응답 확인
if update_response.status_code == 200:
    print("문서가 성공적으로 업데이트되었습니다!")
else:
    print(f"문서 업데이트 실패: {update_response.status_code}")
    print(update_response.json())

3.4. 전체 코드

import requests
import json

# Confluence 도메인, 페이지 ID 및 API 엔드포인트 설정
confluence_base_url = 'https://<your-domain>.atlassian.net/wiki'
page_id = '<your-page-id>'
api_url = f'{confluence_base_url}/rest/api/content/{page_id}'

# Atlassian 계정의 이메일과 API 토큰
auth_email = '<your-email>'
api_token = '<your-api-token>'

# 인증 정보
auth = (auth_email, api_token)

# 문서 정보 가져오기
response = requests.get(api_url, auth=auth)
page_info = response.json()

# 현재 버전 정보 가져오기
current_version = page_info['version']['number']

# 업데이트할 새 버전
new_version = current_version + 1

# 업데이트할 문서 데이터 설정
update_data = {
    "id": page_id,
    "type": "page",
    "title": "업데이트된 페이지 제목",
    "version": {
        "number": new_version
    },
    "body": {
        "storage": {
            "value": "<p>이것은 새로 업데이트된 내용입니다.</p>",
            "representation": "storage"
        }
    }
}

# PUT 요청으로 문서 업데이트
update_response = requests.put(
    api_url,
    data=json.dumps(update_data),
    auth=auth,
    headers={"Content-Type": "application/json"}
)

# 응답 확인
if update_response.status_code == 200:
    print("문서가 성공적으로 업데이트되었습니다!")
else:
    print(f"문서 업데이트 실패: {update_response.status_code}")
    print(update_response.json())

4. 마무리

위 코드 예제는 Confluence REST API를 통해 문서를 수정하는 기본적인 방법을 보여줍니다. 실제 서비스에 적용할 때는 인증 정보를 환경 변수로 처리하거나 별도의 보안 장치를 마련하는 것이 좋습니다.