Repository navigation
Close catalog gaps customers fill with hand-built connectors (block 18 A) - #1209
Merged
Merged
Conversation
OTTO Ads uses its own advertising-services scope, so it is a separate adapter: adding the scope to otto-market would break token requests for partner apps without the Ads interface. eBay Browse reads public listings with an application token, which the seller-only ebay-sell adapter cannot get.
Klardaten: DATEV Anwalt and user management reads, an optional DATEV profile, and order update, time entry and responsibilities writes (off by default). Lexware Office: delivery notes, quotation drafts, articles and document PDFs. Sellsy: contact and company edits. weclapp: responsible-user shortcuts, supply sources, manufacturers and item groups. Zammad: ticket update and merge. Fatture in Cloud: FatturaPA XML and received documents. Mollie: payment links. Magento: CMS pages and blocks.
helpcodeai
force-pushed
the
helpcodeai/block18a-adapter-gaps
branch
from
October 22, 2026 16:52
b7cf8ea to
43c4a7b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Paying Cloud workspaces keep a hand-built connector next to our catalog adapter for the parts the adapter lacks. This adds those tools to the catalog, modelled on the customers' own tool definitions that have successful calls in production, checked against the vendor docs, and live-checked read-only with the customers' existing credentials where a read tool was involved.
Why, from
tool_invocations(successful calls of the hand-built connectors):Changes
New adapters (519 listed, up from 517)
otto-ads(de, 20 tools): Sponsored Product Ads campaigns, targets, keywords and bids, change-request polling, SPA reporting (campaign and product KPIs, CSV reports). Separate fromotto-marketbecause Ads uses its own OAuth scopeadvertising-services; adding it tootto-market's scope list would make the token request fail for partner apps without the Ads interface.otto_ads_delete_keywordsinstalls switched off; report requests are POSTs marked read-only (they change nothing, but count against OTTO's 200 reports/24 h).ebay-browse(intl, 4 tools, read-only): item search, item, item by legacy id, item group, with an application token (client credentials).ebay-sellneeds a seller's user token and covers selling only.Extended adapters
klardaten(+16): DATEV Anwalt reads (files, parties, budget, jurisdiction levels, custom fields, reference sheet, expenses, one catalog tool for the 12 reference lists), DATEV users and groups (SCIM, read-only),klardaten_get_order, and three writes installed switched off:klardaten_update_order,klardaten_create_expense_posting,klardaten_set_client_responsibilities. New optionalKLARDATEN_PROFILE_ID, sent asx-profile-idon every DATEVconnect call (also the existing passthrough) and left out when empty; the customer sends a profile on every call and Eigenorganisation writes need an EO employee profile.lexware-office(+8): get delivery note, delivery note PDF, invoice PDF, create delivery note (draft), create quotation draft, get/create/update article.sellsy(+4): get contact, list a contact's companies, edit contact, edit company (partial PUT of the given fields; archive viais_archived).weclapp(+6, and 3 lists inweclapp_list_reference_data):weclapp_set_{sales_invoice,sales_order,party}_responsible(single-field shortcuts the customer's AI calls reliably; same request asweclapp_edit_*), add supply source, manufacturer, item group; reference data now listsmanufacturer,articleSupplySource,articleItemGroup.zammad(+2): edit ticket (state, owner, group, priority, pending time), merge ticket.fatture-in-cloud(+2): FatturaPA XML of an issued document, received document detail.mollie(+4): list/get payment links, payments of a link, create payment link.magento(+8): search/get CMS pages and blocks; create/update page and block installed switched off, no delete. CMS tools always use theallstore code ({{MAGENTO_BASE_URL}}/rest/all/V1/..., as the customer's working connector does) so a page written throughdefaultis not reassigned to one store view.New tool names were checked against every tool name in installed connectors of these adapters on Cloud (catalog re-sync matches by name): no collisions.
Verification
DCO10009(no DATEVconnect licence) for every module, with and without profile, while the diagnostics endpoint answers 200; the customer's last DATEVconnect success was 01:37 UTC today. Not live-verified./rest/alland/rest/defaultLive checks ran inside the Cloud backend container: credentials were decrypted in memory and never printed or stored, only GET requests were sent, only status and response shape were printed, no OAuth refresh token was used (stored access tokens, or a client-credentials token for OTTO, Sellsy and eBay app keys). No write, send or cost-generating call was made with customer credentials.
Commands (all from the repository root unless noted):
node scripts/validate-adapters.mjs --warn: exit 0; no warnings on new tools (remaining ones on these adapters predate this PR: short descriptions on older Magento/Mollie tools,FIC_COMPANY_IDreference).node scripts/regenerate-catalog.mjs: 533 adapters across 15 regions.node scripts/adapter-count.mjs --check: OK, 519 adapters (23 keyless, 7951 tools) after updating README×4, glama.json, CITATION.cff, server.json, package.json.packages/backend:npm run lintexit 0 (11 pre-existing warnings; two unrelated--fixrewrites reverted),npx tsc --noEmit -p tsconfig.jsonexit 0,npm test: 737 suites passed, 4 skipped; 22,048 tests passed, 1,540 skipped. No baseline failures.de/otto-ads.live.spec.ts,intl/ebay-browse.live.spec.ts(RestEngine request tests + live blocks behindRUN_OTTO_ADS_LIVE=1/RUN_EBAY_BROWSE_LIVE=1); added cases to the klardaten (incl. profile header omitted when empty), lexware-office, sellsy, weclapp, zammad, fatture-in-cloud, mollie and magento specs.Cloud and self-hosted
Same behaviour in both: these are catalog adapters with no deployment-specific code. New adapters appear in the catalog; existing connectors get the new tools only when the workspace applies the connector update, as with any catalog change. Writes on Klardaten and Magento CMS install switched off. On self-hosted instances the vendors' public hosts must be reachable as before (Zammad and Magento stay on the customer's own host).
Not in this PR
accessTokenwhen there is no refresh token, soaccessToken: "{{FIC_ACCESS_TOKEN}}"plus optional client vars would work at call time. But the guided setup page always starts the provider sign-in for anoauth_browseradapter, so a token-only install would end on an authorization error. That needs a small setup-flow change (e.g. an env-var flag that skips the sign-in when filled), which is an authentication change to discuss first.Follow-ups (Matteo decides)
otto-adsandebay-browseneed guides in 7 languages.DCO10009since early today; worth a look before nudging.Type
Checklist
npm test)