Edge Network Server API
10 Apr 2022 » Server Side
I have written multiple posts on Adobe server-side implementations. The last one was a few years ago because there was nothing new to report. Now, there is: Adobe has released the Edge Network Server API. I have just recently known about it, so I have not had the time to play with it. However, I thought that I would write an introductory post to it, in case you need it.
Web SDK and Mobile SDK
I would argue that this API is not entirely new. The Web SDK and the Mobile SDK were already using it. However, its interface documentation had not been published and, if you wanted to use it, you would need to reverse engineer it. The news is that it is now documented and that you can start using it.
But that is not all. There is one additional, and important, new feature: authentication.
Authentication
One of the problems with any client-side SDK is that you cannot add an authentication layer. Technically, you can, but you need to expose the credentials in the HTML or app storage, making it trivial for an attacker to gain access to your systems. Consequently, web analytics and personalization software do not offer this feature.
However, when you send data server-to-server, you can enforce authentication. Therefore, the Edge Network Server API now offers this feature. You can configure a datastream to require authentication or accept any data. The authentication mechanism is the same I explained in my series of posts on Adobe IO authentication (introduction, create an account, authentication with JWT).
More information, here.
Differences with data ingestion
If you have implemented an AEP project, you may be wondering why so much fuss about this new API. AEP already supports a plethora of data sources, both batch and streaming. In particular, one would think that the streaming data source should offer the same features as the Edge Network Server API. After all, both are meant to send data in real-time.
There is a difference, which you can see in the name of the latter: the edge network. This network offers some capabilities that the streaming data connector does not:
- Distributed network. There are multiple edge servers distributed around the world, to lower the latency.
- Interactions. The edge network offers bidirectional data flow, necessary when you want to use it for personalization.
- Adobe tools. Datastreams are not limited to AEP but can interact with other Adobe tools, like Analytics or Target.
- Event forwarding. If you have the right SKU, you can configure the edge network to forward any events to other endpoints, outside of the Adobe network.
In summary, if all you need to do is to send data unidirectionally to AEP from your server in real-time, you should use the streaming data source. On the other hand, if you need any of the above functionality, you must then use the edge network.
Data format
Unfortunately, I have not been able to find (yet) a public version of the data format that this API requires. I expect this to change in the near future. However, if you need to use it, I suggest you start with the examples shown in the documentation:
You will notice that the JSON object has the following objects:
-
event
: the top-most property, signalling that this is an Experience Event -
events
: only when sending data in batch, as it is an array of XDM objects -
xdm
: the XDM object, which needs to follow exactly the structure of your schema -
data
: additional data to be passed to Adobe Analytics, which can be mapped to eVars/props/events using processing rules; I believe there is an error in the Analytics example, as this property should be placed underevent
.
Photo by Taylor Vick on Unsplash