These ADRs capture the non-obvious decisions behind n8n-nodes-fedex and why the alternatives were
rejected. Each file is the durable record of one decision; later ADRs can supersede earlier ones.
For the synthesized picture, start with the System Overview.
| ADR | Decision (one line) | Status |
|---|---|---|
| 0001 | One Environment dropdown drives both the OAuth token URL and the API base URL together, defaulting to sandbox, so a request can never straddle sandbox and production. |
Active for the environment switch; the "single credential" part is partially superseded by 0004. |
| 0002 | Keep the node declarative and turn FedEx's base64 label into n8n binary data in a postReceive hook, rather than going fully programmatic. |
Active |
| 0003 | Do the request/response logic routing can't express in pure, n8n-free cores behind thin preSend/postReceive adapters, covered by a vitest unit runner. |
Active |
| 0004 | Each resource maps 1:1 to a FedEx dev-portal project and binds that project's credential — Tracking (Track) and Shipping (Get Rates, Create, Validate) — because the two projects have disjoint entitlements. | Active; supersedes 0001's single-credential assumption. |
- 0001 and 0004 together define authentication: 0001 set up one environment-switched credential; 0004 split that into two credential types (one per FedEx project) while keeping 0001's environment-switch mechanism intact.
- 0002 and 0003 together define the code shape: 0002 introduced the
postReceivecarve-out for the label binary; 0003 generalized that into the pure-core pattern used by address/contact assembly, rate shaping, and label extraction.
- ADRs are immutable records. When a decision changes, add a new ADR and mark the old one superseded rather than rewriting history. Factual descriptions inside an ADR may be corrected with a dated note.
- New ADRs are numbered sequentially (
000N-short-slug.md).