Overview
The AEM OpenAPI integration lets Gradial use Adobe’s OpenAPI-based AEM APIs for AEM as a Cloud Service. Through it, Gradial can search, read, create, copy, and update Content Fragments, stage Content Fragment changes in Launches, create DAM folders, search assets, and use Adobe’s page-management APIs where your organization has them.Server-to-server
Authenticate as user
Before you start
You need:- An AEM as a Cloud Service author URL, such as
https://author-p12345-e67890.adobeaemcloud.com. - Access to Adobe Developer Console and the Adobe Admin Console for the target IMS organization.
- An AEM project repository and permission to run a Cloud Manager config pipeline.
- A Gradial organization admin. Only admins can add, edit, or remove organization integrations.
Ensure AEM API access is enabled
Adobe Developer Console exposes AEM API products only after the target AEM as a Cloud Service environment is modernized and its required Product Profile services are enabled. If an AEM API card is unavailable or disabled in Developer Console, have the Cloud Manager and Adobe Admin Console owners update the environment as needed, add the required Product Profiles, and enable the related service before creating the credential. Adobe documents this as a one-time preparation step per environment in its OpenAPI setup guide.Roles and coordination
An AEM OpenAPI rollout usually involves more than one administrator. Assign each responsibility before starting:Configure Adobe
1. Create an Adobe Developer Console project
In Adobe Developer Console, create a project for the target AEM environment. Add the Adobe API products required for the work Gradial will perform:2. Choose and create the credential
Use one of the following credential types in the same Adobe Developer Console project:3. Grant the right Adobe and AEM permissions
For server-to-server access, associate the credential with an Adobe product profile that has the minimum AEM permissions required for the mapped content paths. For user authentication, each person who clicks Connect AEM must have the appropriate Adobe product-profile and AEM permissions. To create a Server-to-Server credential, the person configuring the Adobe Developer Console project must be an Adobe organization administrator or a Developer on the Product Profile where the required AEM API service is enabled. Otherwise, Adobe does not offer that credential option for the API. Adobe’s default API product profiles can be read-only. If reads work but creates, updates, or deletes return403 Forbidden, the product profile needs write permission.
Start with a non-production environment and reduce permissions to the smallest set that works. Write, publish, and launch permissions should be granted only when required.
For a least-privilege configuration, grant access only to the mapped AEM paths. Typical boundaries are a site root under /content, a DAM root under /content/dam, and any Content Fragment or Launch paths needed by the selected workflow. A publish or promotion workflow may require additional permission beyond ordinary content authoring.
4. Allowlist the Adobe Client ID in AEM
Every credential’s Client ID must be allowlisted in the AEM environment. Add anapi.yaml file under a top-level config directory in the AEM project repository:
author entry. Adobe also accepts publish and preview lists for other clients. Adobe states that this YAML file is the only supported way to configure the allowlist; environment variables are not supported for it.
Deploy this file with a Cloud Manager config pipeline (choose Targeted Deployment when creating the pipeline). Full Stack and Web Tier pipelines do not deploy this configuration. For a Rapid Development Environment, install it with aio aem:rde:install -t env-config ./config. For additional environments or credentials, add their Client IDs to the allowlist and deploy the configuration to each environment.
5. Plan environments deliberately
Use separate Adobe credentials and separate Gradial integrations for each AEM environment. This keeps development credentials out of production and lets you remove one environment’s access without disrupting the others.Adobe-side checklist
Before entering credentials in Gradial, confirm all of the following:- The required Adobe API products are attached to the Developer Console project.
- The chosen OAuth credential has a Client ID and Client Secret.
- The credential or each user has the intended AEM permissions, including write permission if Gradial will make changes.
- The credential’s Client ID is in
config/api.yamlunder theauthorallowlist. - A Cloud Manager config pipeline has deployed the allowlist to the intended environment.
- The AEM author URL and the intended Site and DAM roots are known.
Add the integration in Gradial
The Add AEM OpenAPI integration dialog has two tabs, Basic and Mappings.Open the dialog
Enter the connection details on Basic
Set the optional Basic settings
Select Next
Add page mappings
Select Save
What mappings control
Mappings set the AEM paths Gradial may work in. Gradial checks every Content Fragment, folder, asset, and page operation against them:/content/dam, which Adobe validates instead. Add at least one mapping before using the integration. You can add, edit, or delete mappings later by editing the integration.
Cloud Manager log access
- Read-only. Gradial only lists environments and reads or downloads the logs that Cloud Manager makes available. It makes no changes in Cloud Manager.
- Which logs. Gradial can access the logs Adobe offers for each environment, such as the author and publish
aemerror,aemrequest, andaemaccesslogs and the Dispatcherhttpderror,httpdaccess, andaemdispatcherlogs. Gradial limits reads to the last 7 days, which matches Adobe’s retention period. - Who and when. A signed-in Gradial engineer reads logs on demand from an internal Gradial support tool. Gradial’s AI agents do not read Cloud Manager logs, and no background job collects them.
- No storage. Gradial streams log contents from Adobe for viewing or download and does not store them.
- Audit trail. Gradial records an audit event for each access. The event names the Gradial user, the integration, and the environment, service, and log, but not the log contents.
- In the Adobe Developer Console project for this integration, add the Cloud Manager API to the OAuth Server-to-Server credential, and assign a product profile that can read environment logs. Adobe’s Cloud Manager API permissions allow the Developer and Deployment Manager roles to list logs; downloading log files requires Deployment Manager.
- Find your IMS organization ID. It is shown on the credential details in Adobe Developer Console, in the form
1234567890ABCDEF@AdobeOrg. - Find your Program ID. It is the number after
/program/in the Cloud Manager URL, and the number afterauthor-pin your author URL. For example, inhttps://author-p12345-e67890.adobeaemcloud.comthe Program ID is12345. - Send both values to your Gradial representative. Only Gradial staff can enter the IMS organization ID and Program ID fields on the integration, and both must be set together.
Connect an individual AEM user
This step applies only to Authenticate as user integrations. After an admin has saved the integration:- Each Gradial user opens Settings -> Integrations.
- On the AEM OpenAPI integration, select Connect AEM.
- Sign in through Adobe and approve the requested access.
- Return to Gradial. A confirmation reads “AEM OpenAPI account connected”, and the button shows Connected to AEM.
- The stored authorization can no longer be used: “The stored AEM authorization can no longer be used. Reconnect to continue.”
- Adobe did not grant a permission Gradial needs, such as AEM Launches or the experimental AEM APIs. Gradial names the missing permission. Enable the matching AEM API in the Adobe Developer Console project, then reconnect.
- Adobe did not report the granted permissions. Confirm the required AEM APIs are enabled in Adobe Developer Console, then reconnect.
Manage an existing integration
Open the integration and select Edit to change its name, mappings, Content fragments workflow, Experience Cloud tenant, or Legacy AEM read fallback. The connection details are read-only. To change the AEM base URL, authentication type, Client ID, or Client secret, create a new integration.Verify the setup
Because Next and Save do not call Adobe with the credential, the first operation is the real test. Start with a safe read inside a mapped path, such as searching Content Fragments or assets. Then test the write workflow appropriate for your environment.Verification checklist
- Confirm the integration saves and appears under Settings -> Integrations.
- Confirm each mapping’s Site path and DAM path validated against AEM, rather than showing “Path format is valid, but AEM access was not remotely verified.”
- Run a read within a mapped path, such as a Content Fragment or asset search.
- In a non-production environment, run the smallest relevant write operation.
- For Authenticate as user, verify the resulting AEM audit information shows the signed-in Adobe user rather than a technical account.
Capability boundaries
Through AEM OpenAPI alone, Gradial can:- Search, read, create, copy, and update Content Fragments, and search their variations.
- Create and promote Content Fragment Launches.
- Create DAM folders and search assets.
- List, read, create, update, and delete pages through Adobe’s page-management APIs, where available. Adobe still marks these APIs experimental, while its Folders, Assets, Content Fragments, and Launches APIs are stable.
- Page previews and screenshots. AEM OpenAPI tokens cannot render author pages. Gradial renders previews with a legacy AEM integration in your organization whose author URL matches; this does not depend on the Legacy AEM read fallback setting. Without one, the preview shows “AEM preview not configured”.
- Asset uploads. Uploading a file to the DAM uses AEM’s classic upload flow, so Gradial runs uploads through a legacy AEM integration for the same author environment. Importing an asset from a URL is not available in Gradial today.
- Other legacy operations, such as asset downloads, metadata updates and renditions, tags, publishing, workflows, Experience Fragments, MSM and language copies, and versions.
api.yaml allowlist, product profile, or AEM path permissions instead.
Troubleshooting
The AEM OpenAPI card is not visible
The AEM OpenAPI card is not visible
403 Forbidden: IMS Client ID not allowlisted
403 Forbidden: IMS Client ID not allowlisted
config/api.yaml, or the config pipeline has not deployed it to this environment. Confirm that the pipeline deployed to the same environment as the AEM base URL and that the allowlisted Client ID belongs to the credential saved in Gradial. A Full Stack or Web Tier pipeline does not deploy the allowlist.403 Forbidden: The access token is missing required scopes
403 Forbidden: The access token is missing required scopes
Other 403 Forbidden errors
Other 403 Forbidden errors
The required Adobe API product is not available
The required Adobe API product is not available
AEM returns 404 for an OpenAPI operation
AEM returns 404 for an OpenAPI operation
Authenticate as user does not connect
Authenticate as user does not connect
A mapping path shows an error
A mapping path shows an error
An operation fails because the path is not allowed
An operation fails because the path is not allowed
A page preview shows AEM preview not configured
A page preview shows AEM preview not configured
Adobe references
- Adobe Experience Manager API catalog
- OpenAPI-based AEM APIs overview
- Set up OpenAPI-based AEM APIs
- Register a Client ID with
api.yaml - Use config pipelines
- Invoke OpenAPI-based AEM APIs with an OAuth Web App