Skip to content

Document the blocked partner reporting APIs (nexchange, Simplex, Bridgeless) - #231

Open
j0ntz wants to merge 1 commit into
masterfrom
jon/reports-server-blocked-providers
Open

Document the blocked partner reporting APIs (nexchange, Simplex, Bridgeless)#231
j0ntz wants to merge 1 commit into
masterfrom
jon/reports-server-blocked-providers

Conversation

@j0ntz

@j0ntz j0ntz commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

Dependencies

none

Description

Asana task

The blocked half of the umbrella task
reports-server: Umbrella,
split out so it cannot hold up
#228, which carries the
providers whose keys are known to work.

Tracked by
reports-server: unblock nexchange, Simplex and Bridgeless reporting.

This adds docs/blocked-partner-reporting.md and no plugin code. That is the
finding, not a shortcut: nexchange, Simplex and Bridgeless each need an external
action before any code is worth writing, and each of those was established by a
live request against the partner's own API rather than from documentation. The
doc records the request, the exact response, and the resulting ask, so the next
person does not repeat the investigation.

Partner Blocked on Who unblocks it
nexchange API key lacks the reporting scope nexchange support
Simplex A server-side reporting key that does not exist yet Simplex partner support
Bridgeless The partner API cannot express an incremental report Bridgeless engineering

Why no code

nexchange is not in this repo on purpose.
#229 already carries a
port descended from the same origin as ours
(#217): the test files
are byte-identical and the plugins differ by 96 diff lines. Shipping a second
copy would only conflict with it. Two fixes ours had that #229 lacks are written
up in the doc and posted on #229, so neither is lost. The real blocker is that
the key in env.json authenticates but returns 403 API key is not authorised for this resource, which is a scope problem no code change fixes.

Simplex is pointed at a retired host with the wrong auth header, and both are
now pinned down: the current API is /reporting/v1/payments and it wants
Authorization: ApiKey <key>, not X-API-KEY. The sandbox host's error text
separates a bad format from a bad key, which is what makes the scheme
identifiable without a valid credential. The plugin is deliberately not rewritten
because the response body has never been seen, and writing cleaners for an
unobserved payload would be inventing the schema.

Bridgeless needs no key at all, and aggregate commission is already readable.
Per-order reporting is blocked by the API's shape: records carry no timestamp of
any kind, so StandardTx.isoDate cannot be filled; there is no server-side
referral filter, so attribution means scanning all 100,210 records; and the store
is hash-ordered rather than append-ordered, so there is no cursor to resume from
and every run is a full rescan. A 20,000 record sample contained exactly one
record with referral_id == 2. Those compound into infeasible rather than merely
expensive.

Testing

Docs and CHANGELOG only, no runtime code. verify-repo.sh --base origin/master
passes every step except npm test, which fails identically on unmodified
master: the suite imports from the gitignored ../lib/util. That break is what
#228 fixes in its first
commit, so this branch goes green once #228 lands.

The claims in the doc were each verified by a live request; the commands are in
the doc itself and are reproducible without any Edge credential except the
nexchange key already in env.json.

nexchange, Simplex and Bridgeless all lack a working reporting plugin, and none
of them is blocked on work this repo can do alone. Record what each one needs,
with the live evidence behind it, so the investigation is not repeated.

nexchange is credential-scoped: its key authenticates but returns 403 on the
reporting resource. Simplex needs a server-side key that only their support
issues, and the shipped plugin also targets a retired host and the wrong auth
header. Bridgeless has no key at all, but its public API carries no timestamp,
no referral filter and no resumable cursor, which is what makes a plugin
infeasible rather than merely expensive.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant