In This Article
- The Point-to-Point Problem: n squared Connections
- The Three-Layer API Architecture
- System APIs: Abstracting Source Complexity
- Process APIs: Composing Business Logic
- Experience APIs: Serving Applications
- API Design: RESTful, Versioned, Documented
- API Governance: Lifecycle, Security, Monitoring
- MuleSoft vs Azure API Management
- Go Deeper
The Point-to-Point Problem: n squared Connections
An enterprise with 20 systems creates point-to-point integrations: CRM calls ERP, ERP calls WMS, WMS calls TMS, marketing calls CRM, analytics calls everything. The formula: n systems create up to n x (n-1)/2 integrations — 20 systems produce up to 190 connections. Each is custom-built, specific to two systems, fragile to changes, undocumented after the developer leaves, and ungoverned. When the ERP upgrades, 12 integrations break. Nobody knows which 12 until production fails.
API-led integration replaces 190 connections with ~60 APIs in three layers. Each source has one system API (20). Business logic in process APIs (20). Applications consume experience APIs (20). When the ERP upgrades, one system API changes — process and experience APIs are unaffected because they consume the abstraction, not the source directly.
The Three-Layer API Architecture
| Layer | Purpose | Consumers | Change Frequency |
|---|---|---|---|
| System API | Expose source system data through standard interface | Process APIs only | Low (source systems change infrequently) |
| Process API | Compose business logic across system APIs | Experience APIs | Medium (business rules evolve) |
| Experience API | Serve specific application needs | End applications | High (UX changes frequently) |
System APIs: Abstracting Source Complexity
Each source system gets one system API abstracting internal complexity behind standard REST. The SAP system API exposes: GET /customers, GET /orders?customer_id=123, POST /orders. It translates between SAP's BAPI/RFC interface and REST — consuming applications don't need SAP protocol knowledge.
Design principles: One API per source system (single control point). Expose data, not business logic (logic belongs in process layer). Abstract source formats (dates to ISO 8601, currencies to base currency). System APIs rarely change — they reflect the source schema. Business rule changes happen in process APIs.
Process APIs: Composing Business Logic
Process APIs combine data from multiple system APIs and apply business logic. The "Customer 360" process API calls: CRM (demographics), ERP (transactions), support (tickets), and marketing (interactions) — composing a unified customer view no single system contains. It calculates CLV from transaction history, determines segment from purchase patterns, and flags at-risk customers from declining engagement.
Process APIs are the reusable logic layer. The same "Customer 360" serves: the customer portal, sales dashboard, ML churn model, and support agent desktop — four consumers, one shared API. Business logic defined once and reused.
Experience APIs: Serving Applications
Experience APIs tailor process outputs for specific consumers. Mobile app API returns: compact JSON (bandwidth), paginated results (screen size), and cached responses (offline). Dashboard API returns: rich datasets (desktop display), pre-aggregated summaries (card widgets), and streaming updates (real-time refresh). Same data from process APIs, different presentations for different contexts.
Experience APIs change frequently as UX evolves — without affecting the stable system and process layers. The three-layer architecture absorbs change at the right level: source changes in system APIs, logic changes in process APIs, presentation changes in experience APIs — no cascading across layers.
API Design: RESTful, Versioned, Documented
RESTful design: Resources as nouns (GET /customers, not GET /getCustomerList). HTTP methods for operations. Standard status codes (200, 201, 400, 404, 500). HATEOAS links for navigation. Self-descriptive APIs — developers understand capabilities from URL structure.
Versioning: URI path versioning (/v1/customers, /v2/customers). Deprecation policy: v(n-1) supported 12 months after v(n) launches. Consumers migrate on their timeline — no surprise breaking changes.
OpenAPI documentation: Every API documented with OpenAPI spec — endpoints, parameters, schemas, authentication, examples. Auto-generates: interactive docs (try from browser), client SDKs (Python, JS, C#), and test suites (contract testing). Eliminates "email the team to learn the API" friction.
API Governance: Lifecycle, Security, Monitoring
Lifecycle: Design → Develop → Test → Publish → Monitor → Deprecate → Retire. Each stage has gates: design review (naming conventions, patterns), security review (auth, validation), performance testing, and documentation review. APIs that skip gates don't reach production.
Security: OAuth 2.0 for authentication. Scopes for authorization. Rate limiting per consumer. Input validation. TLS encryption — no exceptions. Every API call authenticated, authorized, encrypted, and logged.
Monitoring: Per-API metrics: request volume, response time (P50/P95/P99), error rate (4xx/5xx), and consumer analytics. The dashboard shows: operational health, usage trends, and deprecation data (who still uses v1?).
MuleSoft vs Azure API Management
| Capability | MuleSoft Anypoint | Azure API Management |
|---|---|---|
| Three-layer architecture | Native — designed for API-led | Supported — requires architectural discipline |
| Transformation | DataWeave — most capable | Policy-based — simpler, less flexible |
| Connectors | Anypoint Exchange — 300+ | Logic Apps — 400+ SaaS connectors |
| Cost | $100K-300K/year licensing | Pay-per-use ($3-5/M API calls) |
| Best for | 200+ APIs, multi-cloud, Salesforce | Azure-native, cost-conscious, M365/Dynamics |
Selection guidance: Azure-native with M365/Dynamics → Azure API Management (ecosystem + cost). Multi-cloud with 200+ APIs → MuleSoft (flexibility + DataWeave). Salesforce-centric → MuleSoft (native Salesforce integration). The choice follows ecosystem and scale, not feature checklists.
API Reuse Economics: Why Three Layers Save Money
The ROI of API-led integration is driven by reuse. In point-to-point, each new connection is built from scratch: 40-80 development hours per integration. With API layers, the system API (built once: 80-120 hours) is reused by every process API that needs that source system's data. The first process API costs 40-60 hours. The second one that reuses the same system API costs 20-30 hours — the system API already exists. By the tenth consumer, the marginal integration cost is 10-15 hours. The math: 10 point-to-point integrations at 60 hours each = 600 hours. 1 system API (100 hours) + 10 process APIs at 25 hours each (250 hours) = 350 hours. 42% less development effort — and every subsequent integration is cheaper because the system API inventory grows. Over 3 years with 50+ integrations, API-led architectures typically cost 50-60% less than point-to-point in total development and maintenance effort.
Event-Driven APIs: When REST Isn't Enough
REST APIs work for request-response patterns — "give me this customer's data now." But many enterprise integration patterns are event-driven: "when an order is placed, notify inventory, shipping, and billing." Event-driven APIs use webhooks (HTTP POST to a subscriber URL when the event occurs) or message-based protocols (AMQP, CloudEvents published to a message broker). The API-led architecture accommodates both: system APIs can publish events to Azure Service Bus or Event Grid when source data changes, process APIs subscribe to relevant events and compose business logic reactively, and experience APIs serve real-time updates to applications through WebSocket or Server-Sent Events. The three-layer architecture works for both synchronous (REST) and asynchronous (event-driven) communication — the layers provide the same separation of concerns regardless of communication pattern. Real-time streaming patterns extend API-led architecture for high-throughput event processing.
API Testing: Contract, Integration, and Performance
Contract testing: Verify that the API's actual behavior matches its OpenAPI specification. Every endpoint returns the documented status codes, response schemas, and error formats. Contract tests run in CI/CD — a code change that breaks the API contract fails the pipeline before reaching production. Integration testing: Verify that the API interacts correctly with its dependencies — database queries return expected results, downstream API calls succeed, and error handling works as designed. Performance testing: Verify latency and throughput under production-equivalent load — P95 response time under 500ms, throughput of 1,000 requests/second, and graceful degradation under 2x peak load. The three test layers provide defense in depth: contract tests catch specification violations, integration tests catch functional bugs, and performance tests catch scalability issues.
API Versioning in Practice: Breaking vs Non-Breaking Changes
Non-breaking changes (no new version needed): Adding a new optional field to the response, adding a new endpoint, adding new enum values to an existing field, and increasing rate limits. These are backward-compatible — existing consumers continue working without modification. Breaking changes (new version required): Removing a field from the response, renaming a field, changing a field's data type, making an optional field required, and changing the URL structure. These require a new API version. The practical approach: accumulate non-breaking changes in the current version. When a breaking change is necessary, bundle it with other planned breaking changes into the next version — minimizing the version proliferation that creates maintenance burden. Each version has a support lifecycle: active (current features and bug fixes), maintenance (critical fixes only), and deprecated (security fixes only, with retirement date).
API-Led Architecture for Data Integration
API-led integration applies to data integration as well as application integration. System APIs expose source data as queryable resources. Process APIs implement data transformation and enrichment logic — combining, filtering, and computing derived fields from multiple system APIs. Experience APIs serve data consumers: the data warehouse receives full-detail extracts (bulk API with pagination), the real-time dashboard receives pre-aggregated summaries (streaming API), and the ML pipeline receives feature vectors (batch API with point-in-time queries). This pattern replaces traditional ETL with API-mediated data access — sources publish data through APIs; consumers pull data through APIs; the API layer handles transformation, security, and monitoring. The API gateway provides a single audit point for all data access — who consumed what data, when, and how much.
API Analytics: Measuring Integration Health
API analytics provides visibility into how integrations perform across the enterprise. Key metrics per API: availability (uptime percentage — target 99.9% for production APIs), latency (P95 response time — under 500ms for synchronous APIs), error rate (5xx errors below 0.1% — higher rates indicate backend instability), consumption growth (monthly request volume trend — growing consumption indicates the API is valuable), and consumer diversity (number of distinct applications consuming the API — higher diversity means higher reuse value). Analytics dashboard reviewed weekly by the integration team. APIs with declining usage may be deprecation candidates. APIs with rising error rates need investigation. APIs with growing consumer count need capacity review.
The Xylity Approach
We implement API-led integration with the three-layer architecture — system APIs for source abstraction, process APIs for business logic, experience APIs for application serving. Our data architects and data engineers design the API strategy, implement on MuleSoft or Azure (based on ecosystem), and establish the governance framework that makes APIs discoverable, secure, and sustainable.
Go Deeper
Continue building your understanding with these related resources from our consulting practice.
Replace Spaghetti With Three Layers
System APIs, process APIs, experience APIs — 190 connections become 60 reusable, governed APIs.
Start Your API-Led Integration →