Back

Adobe Experience Manager API Essential Guide

Aug 3, 20246 minute read

What type of API does Adobe Experience Manager provide?

GraphQL API

AEM offers a customized GraphQL API specifically designed for working with Content Fragments. Key points about the AEM GraphQL API include:

  • It's based on the standard GraphQL specification but customized for AEM's needs
  • Allows efficient delivery of Content Fragment data to JavaScript clients in headless CMS implementations
  • Avoids iterative API requests like with REST
  • Enables querying for exactly the content needed in a single API call
  • Provides a read-only API for querying content

REST API

AEM also offers REST APIs for various purposes:

  • Assets HTTP API for CRUD operations on assets
  • Content Fragments API
  • Can be used for create, read, update, delete (CRUD) operations

Other APIs

  • Java API
  • Sling API
  • JCR API
  • Granite UI API
  • Coral UI API

Key Considerations

  • GraphQL is the recommended API for headless content delivery scenarios
  • REST APIs are still available for other use cases and CRUD operations
  • AEM provides a GraphiQL interface for testing GraphQL queries
  • The GraphQL API is read-only, while REST allows full CRUD functionality

In summary, AEM offers multiple API types to suit different needs, with GraphQL being the primary API for headless content delivery and REST APIs available for other purposes. The choice of API depends on the specific requirements of the implementation.

Does the Adobe Experience Manager API have webhooks?

Webhooks Support

Yes, the official Adobe Experience Manager API does support webhooks. Adobe I/O Events provides webhook functionality that allows applications to be notified when certain events occur in AEM.

Types of Events

The search results mention some examples and general categories of events you can subscribe to:

  1. Content Fragment events:

    • Content Fragment modified event (event code: aem.sites.contentFragment.modified)
  2. Asset events:

    • Asset created event (event code: asset_created)
  3. AEM Cloud Service events

  4. AEM events powered by AEM add-on module

Key Points to Consider

  1. Event Registration: To receive events, you need to create an event registration specifying a webhook URL and the types of events you want to receive.
  2. Authentication: Depending on the scenario and the Adobe service you're targeting, you may need to set up authentication for your integration to receive events on behalf of users.
  3. Security: Adobe I/O Events implements several security measures for webhook events, including digital signatures for event payloads, public key verification, and recipient client ID verification.
  4. Synchronous Validation: When creating an event registration, Adobe I/O Events will first verify the webhook URL by sending an HTTP GET request with a 'challenge' query parameter.
  5. Event Format: Events are typically sent as HTTP POST requests to your webhook URL, with the event data in JSON format.

Best Practices

  1. Implement security verification for incoming webhook events using the provided digital signatures and public keys.
  2. Cache the public keys used for verification, but set the cache expiry to no more than 24 hours.
  3. Verify that you are the intended recipient of the event using the recipient_client_id field in the payload.
  4. Implement retry mechanisms for fetching public keys in case of transient errors.
  5. Use the x-adobe-signature header to validate that events originate from Adobe I/O.

In summary, the Adobe Experience Manager API does support webhooks through Adobe I/O Events, allowing you to subscribe to various types of events related to content fragments, assets, and other AEM-specific occurrences. The system provides robust security measures and best practices for implementing and managing these webhook integrations.

Rate Limits and other limitations

Based on the search results provided, there is no clear information about specific API rate limits for the Adobe Experience Manager (AEM) API. Here are the key points to consider:

  1. No definitive rate limits specified: The search results do not mention any specific rate limits for the AEM API ^4.

  2. Service-specific limits: According to one response, "each rate limit / throttling rule is service owned. So you would need to reach out to the service owners (IDK who they are) to get the answer" ^4. This suggests that rate limits may vary depending on the specific AEM service being used.

  3. No known API rate limit: For the AEM Query Builder and Assets API specifically, one response states "As far as I know there is no API rate limit" ^5.

  4. DDoS prevention recommended: While there may not be explicit API rate limits, it is recommended to "implement DDoS attack prevention at apache/akamai" ^5.

  5. Documentation lacking: The original question mentions that the documentation does not clearly explain rate limiting concepts for the Adobe Experience Cloud API ^4.

Key points to consider:

  • Rate limits may vary by specific AEM service
  • No definitive rate limits are publicly documented
  • Implementing DDoS prevention is recommended
  • Contacting Adobe support or specific service owners may be necessary to get definitive rate limit information

Best practices:

  • Implement reasonable throttling on your end to avoid overloading the API
  • Use caching where possible to reduce API calls
  • Contact Adobe support for authoritative information on rate limits for your specific use case
  • Monitor your API usage and watch for any throttling or errors that may indicate you're hitting limits

In summary, while there are no clearly defined API rate limits for AEM documented in the provided search results, it's best to implement your own reasonable limits and contact Adobe directly for definitive information related to your specific AEM services and use cases.

Latest API Version

Based on the search results provided, here are the key points regarding the most recent version of the Adobe Experience Manager API:

  1. The most recent version mentioned is Adobe Experience Manager 6.5.21.0, which is a Service Pack release dated June 6, 2024 [2].

  2. For AEM as a Cloud Service, the current feature release is 2024.7.0, released on July 25, 2024. The next feature release (2024.8.0) is planned for August 29, 2024 [4].

  3. The API documentation for AEM 6.5 includes:

    • Adobe AEM 6.5.0 API
    • Granite UI (Touch-enabled) API documentation
    • Coral UI guide
    • Widgets API (Classic UI) documentation
    • UI test framework JavaScript API reference
    • Editor core JavaScript API reference
    • AEM Single-Page Application (SPA) Editor SDK framework JavaScript API references [1]
  4. For AEM as a Cloud Service, there are several APIs available, including:

    • Content Fragments and Models API
    • Assets API
    • Folders API
    • Adaptive Forms Runtime API
    • Document Generation API
    • Search API (Query Builder)
    • Events API
    • Workflow API
    • Statistics API
    • Translation HTTP API [5]
  5. The UberJar for Experience Manager 6.5.21.0 is available in the Maven Central repository [2].

  6. For AEM as a Cloud Service, Adobe recommends using APIs in the following order of preference:

    1. Adobe Experience Manager as a Cloud Service API
    2. Apache Sling API
    3. Apache Jackrabbit Oak API
    4. Apache Felix API [3]

It's important to note that the most recent version and available APIs may vary depending on whether you're using AEM 6.5 or AEM as a Cloud Service. For the most up-to-date information, it's recommended to check the official Adobe documentation or consult with Adobe support.

How to get a Adobe Experience Manager developer account and API Keys?

To get a developer account for Adobe Experience Manager (AEM) and create an API integration, you need to follow these steps:

1. Gain Developer Access

  1. Contact an Admin Console administrator in your organization to add you as a developer to an Experience Platform product profile using the Adobe Admin Console.

  2. The administrator should follow these steps:

    • Go to the Adobe Admin Console
    • Click "Add Developer"
    • Enter your email address
    • Click the "Assign Products" tab
    • Select the product and product profiles (e.g., Cloud Manager - Deployment Manager)
    • Click "Save"
  3. Once assigned as a developer, you can start creating integrations in Adobe Developer Console.

2. Create an API Integration Project

  1. Go to the Adobe Developer Console (https://developer.adobe.com/console).

  2. Click the "Create new project" button or select an existing project.

  3. (Optional) Click the "Edit project" button to give your project a title and description.

  4. Click the "Add to Project" button and select "API" from the drop-down menu.

  5. Under the Experience Cloud section, select "Cloud Manager" and click "Next".

  6. Select "OAuth Server-to-Server" authentication.

  7. Select one of the Product Profiles to assign the integration to a specific Cloud Manager role.

3. Gather Credentials

Once the API has been added to the project, you'll receive the following credentials required for all calls to Experience Platform APIs:

  • {API_KEY} (Client ID)
  • {ORG_ID} (Organization ID)

4. Generate Access Token

You'll need to generate an access token to authenticate your API calls. The access token needs to be refreshed every 24 hours.

5. Test Access Credentials

You can test your credentials by making an API call.

By following these steps, you should be able to set up a developer account for Adobe Experience Manager and create an API integration successfully.

What can you do with the Adobe Experience Manager API?

Based on the search results, here are the key data models you can interact with using the Adobe Experience Manager API, along with what is possible for each:

Assets

  • Allows CRUD (Create, Read, Update, Delete) operations on digital assets
  • Can interact with:
    • Binary files
    • Metadata
    • Renditions
    • Comments
  • Accessible via the Assets HTTP API

Content Fragments

  • Special type of asset for accessing structured data (texts, numbers, dates, etc.)
  • Supports:
    • CRUD operations via Assets HTTP API
    • GraphQL API for querying
    • Specific Content Fragment APIs

Folders

  • Can interact with:
    • Properties
    • Child assets/entities
    • Links

Core Components

  • Allows JSON export of component data
  • Can enable JSON export for custom components

Experience Data Model (XDM) Schemas

  • Can perform CRUD operations on XDM schemas and classes
  • Accessible via Schema Registry API

Profiles

  • Can interact with Real-Time Customer Profile data
  • Supports querying and updating profile data

Segments

  • Allows creating and managing audience segments
  • Accessible via Segmentation Service API

Datasets

  • Supports ingesting and managing datasets
  • Accessible via Dataset Service API

Queries

  • Allows running SQL queries on data
  • Accessible via Query Service API

Sandboxes

  • Supports managing development sandboxes
  • Accessible via Sandbox API

Policies

  • Allows managing data governance policies
  • Accessible via Policy Service API

For each of these data models, the APIs generally allow performing standard CRUD operations, querying data, and managing related configurations. The exact capabilities may vary between services, but the APIs follow RESTful principles and use common authentication methods across Adobe Experience Platform.