Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

🎃 New adapter: PlentyONE / plentymarkets (e-commerce ERP)

オープン
#1,014 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
50/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
json, typescript
領域
api

調査の方向性

Create packages/backend/src/adapters/de/plentymarkets.json by copying the LOGIN_TOKEN shape in de/hrworks.json:15-28, and check the authConfig fields against docs/connectors/login-token-auth.md. Add the 8 tools, keeping the write tool at "enabled": false, then run validate-adapters.mjs --warn and adapter-count.mjs --check. Done when the validator is clean, the spec de/plentymarkets.live.spec.ts passes, and no credentials appear in any file. The issue requires a claim comment before work starts.

索引モデルが issue の本文から書いたものです。

説明

enhancement hacktoberfest help wanted

Part of the October Challenge #997.

Why

PlentyONE (formerly plentymarkets) is one of the most widely used e-commerce ERPs among German online retailers: orders, items and variations, stock across warehouses, and customer contacts for shops and marketplaces such as Amazon, eBay and Otto. The catalog has JTL-Wawi, Xentral, weclapp and Billbee, but no plentymarkets (grep -ril plenty packages/backend/src/adapters finds nothing). With an adapter, a user could ask "which orders from yesterday are still in status 5?", "how much stock of SKU X is in the main warehouse?" or "show customer 1234's last orders".

Self-hosted vs Cloud

  • Self-hosted: available in Community and Business; no edition gating.
  • Cloud (DEPLOYMENT_MODE=cloud): available. PlentyONE systems are public SaaS (https://p<PID>.my.plentysystems.com), so the SSRF guard allows them. On Cloud trial plans, installs count toward the connector limit (license-guard.service.ts:65).
  • Who can use it: any role except VIEWER can install it (adapters.controller.ts:207). The username and password live encrypted in the organization's own connector authConfig. The cached bearer token is encrypted too and keyed by connector (docs/connectors/login-token-auth.md, "Security notes"). Nothing is shared across organizations.

What to build

packages/backend/src/adapters/de/plentymarkets.json. Start with npm run adapter:new -- plentymarkets --region de --auth LOGIN_TOKEN.

Tool Endpoint Expected hints
plentymarkets_list_orders GET /orders (statusFrom, statusTo, createdAtFrom, createdAtTo, contactId, with[], page, itemsPerPage) read-only
plentymarkets_get_order GET /orders/{orderId} (with[]=orderItems, addresses) read-only
plentymarkets_list_variations GET /items/variations (numberExact, itemName, barcode, isActive) read-only
plentymarkets_list_stock GET /stockmanagement/stock (variationId, warehouseId) read-only
plentymarkets_list_warehouses GET /stockmanagement/warehouses read-only
plentymarkets_list_contacts GET /accounts/contacts (email, fullText, page) read-only
plentymarkets_get_contact GET /accounts/contacts/{contactId} read-only
plentymarkets_update_order_status PUT /orders/{orderId} with body {statusId} write, destructive, idempotent (derived from PUT). Ship it with "enabled": false so a workspace turns it on deliberately

Hints come from the HTTP method (docs/tool-definition.md:503-545); do not hand-write annotations. Check each path and parameter against the REST reference and note any deviation in the PR.

Where to look

  • packages/backend/src/adapters/de/hrworks.json:15-28 — a working LOGIN_TOKEN adapter (POST credentials, read token, refresh).
  • docs/connectors/login-token-auth.md — authConfig fields (loginUrl, loginBody, tokenJsonPath, expiryJsonPath, expiryFormat).
  • packages/backend/src/adapters/de/jtl-wawi.json — a comparable German commerce ERP; copy how its instructions explain orders vs items vs stock.
  • packages/backend/src/adapters/intl/todoist.live.spec.ts — spec template; live calls behind RUN_PLENTYMARKETS_LIVE=1.
  • .github/CONTRIBUTING.md:136 — the "Add an adapter" checklist; #982 — adapter guide.

Acceptance criteria

  • de/plentymarkets.json with the 8 tools above; the write tool has "enabled": false.
  • validate-adapters.mjs --warn is clean (the validator requires instructions ≥ 800 chars and each tool description ≥ 60 chars, scripts/validate-adapters.mjs:32); catalog.ts is regenerated; adapter-count.mjs --check passes.
  • de/plentymarkets.live.spec.ts: static checks (auth type LOGIN_TOKEN, loginUrl ends with /rest/login, tokenJsonPath is access_token, write tool disabled); with RUN_PLENTYMARKETS_LIVE=1 it logs in and lists warehouses and orders on a trial system. npx jest src/adapters/de/plentymarkets passes in packages/backend.
  • No password or token appears in the spec, the fixtures or the PR.
  • Logo at packages/frontend/public/logos/connectors/plentymarkets.svg.
  • Docs updated: optional content/guides/en/plentymarkets-to-mcp.mdx.

Out of scope

  • Creating orders, items or contacts; deleting anything; stock corrections (/stockmanagement/.../correction).
  • The plugin/Ceres interface, webhooks (event procedures), marketplace-specific endpoints.
  • Using refresh_token. Re-login through LOGIN_TOKEN is enough.

Free account: PlentyONE offers a 30-day free test system without obligation (start from https://www.plentyone.com). Enable REST access for a user in it.

Size

M (1–2 days). The login flow and the order filters need testing against a real trial system.

How to claim

Comment "I'd like to work on this" and we'll assign you. Rules in #997.

主要言語
TypeScript
スター
856
フォーク
82
平均マージ
8時間 27分
マージ済み PR(30日)
104

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

HelpCode-ai/anythingmcp のほかの issue

HelpCode-ai/anythingmcp の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。