by 7nohe · v0.0.3
Operate Backlog projects/issues via Dify tools
This community listing does not yet include every recommended support, privacy, pricing, and permission disclosure. Review the available package permissions before installing.
Available inside your emploidai workspace after installation.
Available inside your emploidai workspace after installation.
This package exposes the Backlog (Nulab) API as a tool-type plugin for Dify v1. With API Key authentication, it supports fetching projects/issues, creating issues, and adding comments.
GET /api/v2/projectsGET /api/v2/issues (pagination via count/offset)GET /api/v2/issues/{issueIdOrKey}POST /api/v2/issuesPOST /api/v2/issues/{issueIdOrKey}/commentsGET /api/v2/prioritiesGET /api/v2/projects/{projectIdOrKey}/issueTypesrequests with exponential backoff retries on 429 Too Many Requestsyourspace.backlog.jp / yourspace.backlog.com / yourspace.backlogtool.comDevelopment and verification tasks are provided in the Makefile.
make venv
make fmt lint test
.env
INSTALL_METHOD=remote
REMOTE_INSTALL_URL=debug.dify.ai:5003
REMOTE_INSTALL_KEY=<your-debug-key>
Install the plugin in Dify and run from the Tools screen.
.venv/bin/activate # for bash/zsh
.venv/bin/activate.fish # for fish shell
python3 main.py
Generate .difypkg with the Dify plugin CLI.
# Example if dify CLI is installed
dify plugin package ./
# Makefile helper target (documentation only)
make package
Upload the generated .difypkg from Dify -> Plugins -> Install from local file.
issueIdOrKey, projectId, assigneeId, statusId, projectIdOrKey)..difypkg fileSPACE_DOMAIN: e.g. yourspace.backlog.jp (no scheme)API_KEY: Backlog API keytools/list_projects.py)
archived (bool), all (bool){ "projects": [...] } and a text listtools/list_issues.py)
projectId (int[]), assigneeId (int[]), statusId (int[]), keyword (str), count (1..100)count/offset to return all items{ "issues": [...] } and a text summary (max 20 items)tools/get_issue.py)
issueIdOrKey (required){ "issue": { id, issueKey, summary, url, ... } }tools/create_issue.py)
projectId (required), summary (required), issueTypeId (required), priorityId (required), description, assigneeId, dueDate (YYYY-MM-DD){ "issue": { id, issueKey, summary, url } }tools/add_comment.py)
issueIdOrKey (required), content (required){ "commentId": number, "created": ISO8601 }tools/list_priorities.py)
{ "priorities": [...] }tools/list_issue_types.py)
projectIdOrKey (required){ "issueTypes": [...] }DEFAULT_PROJECT is set, it is used when input is emptyresponse.raise_for_status()429 Too Many Requests uses exponential backoff (2^n seconds)SPACE_DOMAIN, API_KEY) are stored securely by Dify and used only at runtimemanifest.yaml
_assets/
└─ icon.svg
provider/
├─ backlog.yaml
└─ backlog.py
tools/
├─ list_projects.yaml / list_projects.py
├─ list_issues.yaml / list_issues.py
├─ get_issue.yaml / get_issue.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
make fmt
make lint
make test
SPACE_DOMAIN must not include a scheme (https://)k[]=v format (requests expands list values)make venv && make test succeedsdify plugin package ./ can generate .difypkghttps://{SPACE_DOMAIN}/view/{ISSUE_KEY}MIT License. See LICENSE for details.
Contributor Covenant v2.1. See CODE_OF_CONDUCT.md. Please do not include sensitive information in reports.