Backlog (Nulab) の API を、Dify v1 の「ツール型」プラグインとして利用できるようにするパッケージです。API Key 認証で、プロジェクト/課題の取得、課題の作成、コメント追加を行います。
- Backlog API Key 認証(個人設定→API で発行)
- 6 つのツールを提供:
- List Projects:
GET /api/v2/projects
- List Issues:
GET /api/v2/issues
(count/offset でページング) - Create Issue:
POST /api/v2/issues
- Add Comment:
POST /api/v2/issues/{issueIdOrKey}/comments
- List Priorities:
GET /api/v2/priorities
- List Issue Types:
GET /api/v2/projects/{projectIdOrKey}/issueTypes
- List Projects:
- HTTP クライアントは
requests
を使用し、429 Too Many Requests
を指数バックオフで再試行 - Dify v1(runner=python 3.12)対応
- すべてのツールは JSON(構造化)に加えて、人間向けのテキストも出力(一覧/要約)。
- Python 3.12
- Dify(プラグイン v1 対応環境)
- Backlog API Key
- Space ドメイン(例):
yourspace.backlog.jp
/yourspace.backlog.com
/yourspace.backlogtool.com
開発・検証用の仮想環境と基本タスクは Makefile
で提供しています。
make venv
make fmt lint test
.difypkg
は Dify のプラグイン CLI で生成します。
# dify CLI が導入済みの場合の例
# 参考: https://github.com/langgenius/dify#plugins (導入方法は環境により異なります)
dify plugin package ./
# Makefile の補助ターゲット(案内のみ)
make package
生成された .difypkg
は、Dify の「プラグイン」画面 → 「プラグインをインストール」→「ローカルファイルから」でインストールします。
- ツールのパラメータは YAML に定義した camelCase 名に厳密に従います(例:
issueIdOrKey
,projectId
,assigneeId
,statusId
,projectIdOrKey
)。 - エイリアス(別名)や入れ子キー(
inputs
/parameters
など)による解決は行いません。ワークフローからは YAML 名で渡してください。
- プラグインをインストール(.difypkg をアップロード)
- Provider 認証を設定(Backlog Provider)
SPACE_DOMAIN
: 例yourspace.backlog.jp
(https:// を付けない)API_KEY
: Backlog の API キー
- Workflow / Agent の「ツール」から以下のツールを選択し、必要パラメータを入力
-
List Projects(
tools/list_projects.py
)- 入力:
archived
(bool),all
(bool) - 出力:
{ "projects": [{ id, projectKey, name }, ...] }
に加えて、人間向けの簡易テキスト一覧も同時に出力
- 入力:
-
List Issues(
tools/list_issues.py
)- 入力:
projectId
(int[]),assigneeId
(int[]),statusId
(int[]),keyword
(str),count
(1..100) - 備考:
count
/offset
でページングし、全件をまとめて返却 - 出力:
{ "issues": [{ id, issueKey, summary, status, assignee, updated }, ...] }
とテキスト要約(最大 20 件表示)
- 入力:
-
Create Issue(
tools/create_issue.py
)- 入力:
projectId
(必須, ID もしくは projectKey 文字列),summary
(必須),issueTypeId
(必須),priorityId
(必須),description
,assigneeId
,dueDate(YYYY-MM-DD)
- 出力:
{ "issue": { id, issueKey, summary, url } }
(url はhttps://{SPACE_DOMAIN}/view/{ISSUE_KEY}
)
- 入力:
-
Add Comment(
tools/add_comment.py
)- 入力:
issueIdOrKey
(必須),content
(必須) - 出力:
{ "commentId": number, "created": ISO8601 }
- 入力:
-
List Priorities(
tools/list_priorities.py
)- 入力: なし
- 出力:
{ "priorities": [{ id, name }, ...] }
-
List Issue Types(
tools/list_issue_types.py
)- 入力:
projectIdOrKey
(必須, ID もしくは projectKey 文字列) - 出力:
{ "issueTypes": [{ id, name, color }, ...] }
- 備考: Provider の
DEFAULT_PROJECT
を設定しておくと、入力が空でもその値を使用します
- 入力:
- HTTP エラーは
response.raise_for_status()
に委譲(Dify 側のデフォルト処理に従います) 429 Too Many Requests
の場合は指数バックオフ(2^n 秒)で所定回数リトライ- よくあるエラー:
- 401/403: API キー不正または権限不足
- 404: ドメイン/プロジェクト/課題キーの誤り
- 400: 必須パラメータ不足や形式不正
- 認証情報(
SPACE_DOMAIN
,API_KEY
)は Dify 側で安全に保管され、本プラグインは実行時にのみ利用します - ログへ機密情報を出力しない実装方針
- 可能な限り最小権限の API キーを使用してください
manifest.yaml
_assets/
└─ icon.svg
provider/
├─ backlog.yaml
└─ backlog.py
tools/
├─ list_projects.yaml / list_projects.py
├─ list_issues.yaml / list_issues.py
├─ create_issue.yaml / create_issue.py
├─ add_comment.yaml / add_comment.py
├─ list_priorities.yaml / list_priorities.py
└─ list_issue_types.yaml / list_issue_types.py
tests/
├─ conftest.py
├─ test_list_projects.py
├─ test_list_issues.py
├─ test_create_issue.py
├─ test_add_comment.py
├─ test_get_issue.py
└─ test_list_issues_params.py
Makefile
pyproject.toml
requirements.txt
README.md
PRIVACY.md
# フォーマット / Format
make fmt
# Lint(ruff)
make lint
# テスト(pytest)
make test
SPACE_DOMAIN
にはスキーム(https://)を含めないでください- List Issues は最大 100 件/ページで全件をループ取得します
- Backlog の配列クエリは
k[]=v
形式(requests
は list を渡すと自動展開) - すべてのパラメータは YAML の camelCase 名を使用してください(別名は非対応)。
make venv && make test
がローカルで成功するdify plugin package ./
実行で.difypkg
が生成できる- Dify 上で Provider 認証設定が通り、6 ツールが UI から実行できる
- List Issues で 100 件超をページング取得できる
- Create Issue 実行後に
https://{SPACE_DOMAIN}/view/{ISSUE_KEY}
形式の URL を返す
- 0.0.1: 初版
本リポジトリは MIT License です。詳細は LICENSE
を参照してください。
本プロジェクトは Contributor Covenant v2.1 に準拠した行動規範を採用しています。詳細は CODE_OF_CONDUCT.md
を参照してください。違反や懸念の報告は、本リポジトリの Issue で受け付けます(機微情報は記載しないでください)。
- Backlog API v2 ドキュメント(Nulab)
- Dify プラグイン開発ガイド