Wednesday, December 25, 2019

Overview of Adobe I/O

Our customers are always looking for various ways to access and extend the capabilities of our solutions and APIs are a natural way to provide them with additional capabilities that the UI may not provide. Adobe I/O allows developers to find documentation and tools to integrate with the Experience, Creative, and Document Clouds in a streamlined manner. In addition, it allows developers to add more functionality to Adobe solutions and customize them to tailor experiences for their customers.

The Adobe I/O platform has four primary components which I'll cover at a high level. I wrote about this in more detail on Medium where I coauthored a post on the architecture of Adobe I/O and its uses cases. This post also shows how each of these components interact with each other and the Experience Cloud solutions.


  • Adobe Developer Console (Tool): The Adobe Developer console provides you with a UI to access APIs across the three Adobe clouds as shown below. Developers can create integrations with each of these solutions primarily via three authentication methods (Api key, OAuth and JWT) to access APIs for solutions such as Adobe Analytics, Audience Manager, Campaign etc. The previous article I wrote shows how to access these APIs using JWT via Postman.



  • Adobe I/O Gateway (Service): Adobe I/O Gateway is the infrastructure that sits in front of Adobe services and exposes the APIs. It does things like throttling and logging, routing and load balancing, authentication and security, whitelisting, validating API keys, tokens among others. There isn't much documentation available and it's not an actual product or UI that clients have access to.

  • Adobe I/O Events (Service)Adobe I/O Events allow you to programmatically deliver targeted, expedited, and personalized experiences based on user behavior. I/O Developers can subscribe to webhooks and can define what they want to be notified for whenever certain events occur. An example is triggers which allows you to send an email if a user abandons an eCommerce cart or update your 3rd party CRM system based on any action performed on the website. Some other examples of Events are as follows:
    • When an AEM asset is uploaded or updated, republish the page with the newly updated asset
    • If Adobe Analytics traffic spikes, create a segment
    • Get a cadence and order of occurrence of events via the Journaling API
    • Some other use cases around the creative and document clouds is outlined here.

  • Adobe I/O Runtime (Service): Adobe I/O Runtime is a  powerful and serverless way for developers to extend the capabilities of Adobe Experience Cloud solutions with no server management required. It allows developers to transform their code into applications by writing and deploying code on top of the Adobe Experience Cloud stack. It is built on top of Apache OpenWhisk, which is an open source project that is very flexible and allows you to code in many programming languages such as Node.js, JavaScript, Swift, Python, PHP, Java to name a few. The great thing about is that you don't have to setup any servers or software to run your code. Some use cases for I/O Runtime are as follows:
    • Write code to perform ETL on records stored in a 3rd party CRM system and send these to Adobe Audience Manager or Campaign
    • Allows you to open an internal ticket if a negative review is added
    • This article covers a very pertinent use case for integrating Adobe Campaign Classic with Adobe Experience Platform
    • Some other Runtime related use cases are outlined here.

As a continuation to my previous post on accessing Adobe APIs using Postman, here's another example of how to access a User Management API to get a list of all products a user is subscribed to which can allow you to retrieve this information without logging into the Admin console UI. Please note that you need to access the Adobe Developer console to create an integration with the User Management API.

The first step is to get an access token using the JWT token created in the Developer console.


Call the API to get user information by using the Bearer token generated in the previous step and getting a list of all groups a user has subscribed to. There's another API which allows you to get a list of all users and their groups tied to a particular Adobe IMS org.

I'll update this post once I've created a diagram to show how each of the I/O components talk to each other. So, how do you use Adobe I/O in your organization?

No comments: