API Categories

API Layers

We talk about “the API” like it's a single thing, but an API obviously has a number of layers to it with different kinds of APIs supporting the overall experience.

When we start with an app, it actually has its own Experience API. The Experience AP contains things like security to connect to the backend and local information specific to that app which drives the experience of users interacting with the app.

When the Experience API connects to the Process API it's leveraging the business logic that can be applied at the Process API layer. In our fictional example we're see the Mobile App Experience API call to the Shipments Process API. The shipment may be in either FedEx or UPS System APIS but the Process API is able to make that logical decision and then call to the correct System API.

That System API is the encapsulated source of truth for a particular data set. In this case that particular data is sitting in Vendor APIs that we call out to, but as far as the Experience, Process and System layers are concerned this is just a stack of APIs that forms a single API call.

Obviously the web app may have its own Experience API and it can call to the same Process APIs that the mobile Experience API calls to. The Process APIs are the business backbone of the organization.  It is only at the Process API level that we can do orchestration. The order status can call to the order history API for example, or it can call to the Customers Process service, but once that Customers Process service connects to the System AP, the only thing that that system API will know about is its own native data.

The Customers Process API can decide whether to connect to the Salesforce Customers Ssytem API or the SVB Customer API, where Salesforce consumes an vendor API and SVB consumes native data, but to the Process APIs, it’s all just native data with a single connector.

Remember, the bottom of the pile is data managed by System APIs, wither that data is a vendor API or an encapsulated database -- it's all about containing and normalizing that data at the System API level to allow the Process APIs to do the business logic that needs to happen without being directly connected to the data. At the same time the Process APIs are able to give consistent, structured responses to the Experience APIs while those Experience APIS are able to present very specific things without messing around with the general business processes.