1
0

PythonでBacklogAPIを使ってみた

Last updated at Posted at 2024-05-27

はじめに

最近、PythonでBacklogAPIを使用して簡単なアプリを作りました。
次にBacklog APIを使用するときや、他の人も使用できるようにメモ程度にまとめます。

APIの使用方法

Backlog APIは2種類の認証と認可の方法が存在しています。

  • Backlogユーザ毎に発行されたAPIKeyを使用する方法
  • OAuth2.0を用いて取得したAPITokenを使用する方法

今回はAPIKeyを使用した方法を紹介します。

API Key

APIKeyはユーザーの設定画面から取得することができます。
個人設定 -> API -> 登録
Backlog_API.png

登録ボタンを押下すると、APIキーを発行することができます。こちらのAPIKeyを使用して、BacklogAPIを利用することができます。

スペース名

下の画像で囲まれているスペース名は後で使用するので控えておきます。
Backlog_API2.png

PythonでBacklogAPIを使用する

必要なライブラリ

基本的には、HTTPリクエストを送信してAPIを利用します。そのために必要な'requests'ライブラリを使用します。

pip install requests

スクリプトの作成

まず、最初にあらかじめ用意したAPIKeyとスペース名を設定します。

import requests

API_KEY = 'your_api_key_here'
SPACE_NAME = 'your_subdomain_here'

使用例1:課題一覧の取得

def get_projects():
  payload = {
    'apiKey' : API_KEY
  }
  response = requests.get(f'https://{SPACE_NAME}.backlog.com/api/v2/issues', payload)
  if response.status_code == 200:
      return response.json()
  else:
      print(f'Error: {response.status_code}')
      return None

projects = get_projects()
if projects:
    for project in projects:
        print(f'ID: {project["id"]}, Name: {project["summary"]}')

使用例2:課題の作成

def create_issue(project_id, summary, description, issue_type_id, priority_id):
  url = f'https://{SPACE_NAME}.backlog.com/api/v2/issues'
  payload = {
    'apikey' : API_KEY,
    'projectId': project_id,
    'summary': summary,
    'description': description,
    'issueTypeId': issue_type_id,
    'priorityId': priority_id
  }
  response = requests.post(url, json=payload)
  if response.status_code == 201:
    return response.json()
  else:
    print(f'Error: {response.status_code}')
    return None

# 課題の作成例
new_issue = create_issue(
  project_id='12345',
  summary='API経由での課題作成',
  description='これはAPI経由で作成された課題です。',
  issue_type_id='1',  # 課題タイプID(Backlogの設定で確認)
  priority_id='3'    # 優先度ID(Backlogの設定で確認)
)

if new_issue:
  print(f'Created issue: {new_issue["id"]}, {new_issue["summary"]}')

使用例3:課題の更新

def update_issue(issue_id, updates):
  url = f'https://{SPACE_NAME}.backlog.com/api/v2/issues/{issue_id}?apiKey={API_KEY}'
  response = requests.patch(url, json=updates)
  if response.status_code == 200:
    return response.json()
  else:
    print(f'Error: {response.status_code}')
    return None

# 課題の更新例
updated_issue = update_issue(
  issue_id=74043178,
  updates={
    'summary': '更新された課題のタイトル',
    'description': 'この課題はAPIを使用して更新されました。'
  }
)

if updated_issue:
  print(f'Updated issue: {updated_issue["id"]}, {updated_issue["summary"]}')

まとめ

Backlog APIを使用して、効率化しましょう。

1
0
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
0