Skip to content

Decision Log: Arda API Proxy

Tracks design and planning decisions for the @arda-cards/api-proxy package — covering path conventions, HTTP method authority, execution model, type derivation strategy, and scope boundaries.

#QuestionStatusDecisionRound
DQ-001Path authority: spec vs. endpoint catalogDecidedEndpoint catalog is authoritativeR1
DQ-002HTTP method authority: spec vs. endpoint catalogDecidedSpecification is authoritativeR1
DQ-003Execution model: single-agent vs. multi-agentDecidedSingle-agent sequentialR1
DQ-004Type derivation strategyDecidedLive OpenAPI primary, Kotlin fallbackR1
DQ-005pdf-render module scopeDecidedExplicitly out of scopeR1

DQ-001: Path Authority — Specification vs. Endpoint Catalog

Section titled “DQ-001: Path Authority — Specification vs. Endpoint Catalog”

Context: The specification and the documentation site’s API endpoint catalog disagree on several URL paths. Discrepancies include business affiliate roles (/business-role vs /roles), item CSV upload (/csv-upload vs /upload-job/upload-url), kanban detail queries, and order line paths. The correct paths are essential for proxy correctness.

OptionDescriptionTrade-offs
ASpecification paths are authoritativeMatches the preliminary spec but may diverge from actual API behavior
BEndpoint catalog paths are authoritativeMatches the live API documentation; spec paths must be corrected

Recommendation: Option B — the endpoint catalog reflects the actual deployed API.

Decision: Option B. The actual API endpoint catalog is authoritative. The double-entity path pattern (/v1/{module}/{entity}/...) is intentional — for data authority modules, the endpoint and module names coincide. Specification paths must be corrected to match the catalog before implementation.

Applied to:

  • Specification — all endpoint path tables need correction
  • Requirements — REQ-REF-002, REQ-REF-004, REQ-RES-002, REQ-PROC-002, REQ-PROC-003, REQ-PROC-004 path tables

DQ-002: HTTP Method Authority — Specification vs. Endpoint Catalog

Section titled “DQ-002: HTTP Method Authority — Specification vs. Endpoint Catalog”

Context: The specification and endpoint catalog disagree on HTTP methods for several operations: kanban summary endpoints (GET vs POST), order lifecycle operations (POST vs PUT), and order add-items/add-kanban-cards (POST vs PUT).

OptionDescriptionTrade-offs
ASpecification methods are authoritativeConsistent with the preliminary design intent
BEndpoint catalog methods are authoritativeMay reflect the actual deployed API but could be catalog errors

Recommendation: Option A — the specification was written with deliberate method choices.

Decision: Option A. The specification is authoritative for HTTP methods. The endpoint catalog may contain errors in method attribution.

Applied to:


Context: The project is a greenfield single-repo package with ~35 source files following a highly repetitive proxy pattern. Options range from a single-agent sequential build to multi-agent parallel implementation.

OptionDescriptionTrade-offs
ASingle-agent sequential (phases 1→4)Simpler coordination, no merge conflicts, one context window; slower wall-clock time
BMulti-agent parallel (shared infra first, then domain proxies in parallel)Faster wall-clock time; coordination overhead, potential merge conflicts, context-window splitting

Recommendation: Option A — the repetitive structure means the sequential approach is efficient and lower-risk.

Decision: Option A. Single-agent sequential execution following the specification’s phased approach.

Applied to:


Context: Only tenant has TypeScript types in api-mcp. The remaining 7 modules need types derived from some source. OpenAPI specs are cached in api-mcp/specs/ and available live from the staging server. Kotlin source in operations/accounts-component provides authoritative type definitions.

OptionDescriptionTrade-offs
AUse cached OpenAPI specs from api-mcp/specs/Available locally; may be stale
BFetch live OpenAPI specs from staging serverAlways current; requires network access
CDerive from Kotlin sourceMost authoritative; slower, requires reading Kotlin
DCombination: OpenAPI primary, Kotlin fallbackBest of both; two-step process

Recommendation: Option B with C as fallback — live specs are current, Kotlin resolves ambiguities.

Decision: Option B with C as fallback. Fetch live OpenAPI specs from the staging server as the primary type source. Fall back to Kotlin source in operations or accounts-component to resolve ambiguities or deficiencies in the OpenAPI spec. The api-mcp codebase is consultative only — not a primary source.

Applied to:

  • Specification § Per-Module Types
  • Run project plans — type derivation tasks reference this strategy

Context: The goal lists pdf-render (/v1/pdf-render, Print category) in the API endpoints table. The specification does not include a PdfRenderProxy or any Print domain directory.

OptionDescriptionTrade-offs
AInclude pdf-render in scopeAdds a proxy; increases scope by ~3 files
BExplicitly exclude pdf-renderReduces scope; can be added in a future project

Recommendation: Option B — keep the initial release focused on the core domains.

Decision: Option B. pdf-render is explicitly out of scope for this project. Marked as such in the goal’s API Endpoints table.

Applied to:

  • Goal — Status column set to Out of scope for pdf-render


Copyright: (c) Arda Systems 2025-2026, All rights reserved