Structured Content

This guide will help you configure an existing Edge Delivery Services project with Document Authoring to use the Structured Content feature, enabling schema-based content editing and JSON data delivery.

Structured Content brings form-based editing to Document Authoring, allowing you to define schemas and create structured data that can be consumed as JSON by your Edge Delivery Services blocks. If you're familiar with JSON Schema or form builders, you'll find the concepts familiar—but even if you're new to these tools, the guided interface makes it approachable.

Key Concepts

Before you begin, here are a few important concepts:

  1. Schemas define structure. Every structured content document is based on a schema that defines what fields are available and how they're organized.
  2. The editor has two panels. The Navigation panel shows your content hierarchy, while the Editor area provides full-width forms for each section.
  3. Changes auto-save. Unlike traditional forms, your content is automatically saved as you type—no save button needed.
  4. Data is delivered as JSON. Published content is automatically available via a JSON endpoint for your blocks to consume.

Overview

Structured Content allows you to:

Prerequisites

Required Access and Permissions

To set up and use Structured Content, you need:

If you don't have the required permissions, contact your Document Authoring organization administrator to request access.

Setup Steps

1. Create or Use an Existing Edge Delivery Services Project

If you don't have an Edge Delivery Services project yet, follow the official tutorial at https://www.aem.live/developer/tutorial

2. Configure Structured Content Storage

Structured content documents are stored in your project's content tree in Document Authoring.

Create a dedicated folder:

  1. Navigate to your project in Document Authoring at https://da.live/#/<ORG>/<SITE>
  2. Create a new folder (e.g., /forms, /data, or any custom name)
  3. This folder will store all your structured content documents

Enable the Structured Content Editor:

You must configure Document Authoring to use the Structured Content editor for documents in your chosen folder. This is done by adding a configuration entry that maps folder paths to the editor URL.

  1. Open the Document Authoring config page: https://da.live/config#/<ORG>/ (requires Organization Administrator role)
  2. Add a new config entry with the following:
key value
editor.path
/<ORG>/<SITE>/<FOLDER_NAME>=https://da-sc--da-live--adobe.aem.live/form#

Example:

key value
editor.path
/aemsites/myproject/forms=https://da-sc--da-live--adobe.aem.live/form#

This configuration tells Document Authoring: "For any document created in the /aemsites/myproject/forms folder, open it with the Structured Content editor instead of the default Document Authoring editor."

Multiple Folder Configuration:

If you want to use the Structured Content editor for multiple folders, add multiple entries separated by commas:

key value
editor.path
/aemsites/myproject/forms=https://da-sc--da-live--adobe.aem.live/form#
editor.path
/aemsites/myproject/data=https://da-sc--da-live--adobe.aem.live/form#

3. Create a Schema

Schemas define the structure of your content and are created using the Schema Editor app.

Creating a new schema:

  1. Open the Schema Editor app: https://da.live/apps/schema
  2. Use the dropdown menu to select "New Schema"
  3. Define your schema structure (see JSON Schema Details below)
  4. Save the schema

Note: Schemas are automatically saved as documents under your <ORG>/<SITE> path in the content repository. However, schemas are only visible and manageable through the Schema Editor app.

4. Create Your First Structured Content Document

  1. Navigate to your structured content folder: https://da.live/#/<ORG>/<SITE>/<FOLDER_NAME>
  2. Click "New" to create a new document
  3. Give your document a name

5. Select a Schema

When the Structured Content editor loads:

  1. As an author, you'll be prompted to select one of your created schemas
  2. Choose the appropriate schema for your content type
  3. The form-based editor will load with fields corresponding to your schema

6. Editing Your Content

The Structured Content editor is designed to make managing complex data structures straightforward. It consists of two main components:

Navigation Panel:

Editor Area:

As an author, you can:

7. Preview and Publish

When you preview or publish your document:

  1. Use the standard Preview or Publish buttons in the editor
  2. You'll be redirected to the delivery URL
  3. The page displays an overview of your structured data
  4. The same URL can be used by blocks to fetch JSON data

8. Consume Data in Blocks

Blocks on your Edge Delivery Services site can fetch structured content as JSON using the delivery endpoint.

Delivery Endpoint

Once your content is published, it becomes available as JSON through a delivery endpoint. This is how your Edge Delivery Services blocks will fetch the structured data.

Endpoint Format

https://mhast-html-to-json.adobeaem.workers.dev/<ENVIRONMENT>/<ORG>/<SITE>/<PATH_TO_DOCUMENT>

Parameters:

Example

curl 'https://mhast-html-to-json.adobeaem.workers.dev/live/aemsites/da-frescopa/forms/offer'

Note: The delivery endpoint URL may change in the future. We will communicate any changes through official channels.

Working with Schemas

Schemas are the foundation of structured content—they define what fields are available, what types of data they accept, and how they're organized.

Schema Format

Structured Content uses JSON Schema to define data structures. The Schema Editor app provides a visual interface for creating schemas.

Schemas can be defined using:

  1. Inline definitions: Properties defined directly in the schema
  2. $ref / $defs definitions: Reusable schema components referenced by path

Best Practices

Use descriptive titles:

  • sample (json)
{
  "type": "object",
  "title": "Product Information",
  "properties": {
    "name": {
      "type": "string",
      "title": "Product Name"
    },
    "price": {
      "type": "number",
      "title": "Price (USD)"
    }
  }
}

The title properties are displayed in the editor UI. If omitted, the property key will be used as-is.

Keep schemas simple:

Limitations

Maximum Depth Level

Using $ref / $defs definitions can lead to recursive structures. To prevent infinite loops:

Supported JSON Schema Features

The Structured Content editor supports:

Not currently supported:

If you need features not currently supported, please reach out to discuss your use case.

Example Workflow

Below is a complete example that walks through setting up a simple product catalog. This will give you a sense of how all the pieces fit together.

  1. Create folder: /products in your Document Authoring organization/site

  2. Configure editor path in Document Authoring config:

    /<ORG>/<SITE>/products=https://da-sc--da-live--adobe.aem.live/form#
    
  3. Create schema: "Product" with fields for name, description, price, and specifications

    Example schema:

  • schema (json)
{
  "type": "object",
  "title": "Product",
  "required": ["name", "price"],
  "properties": {
    "name": {
      "type": "string",
      "title": "Product Name"
    },
    "description": {
      "type": "string",
      "title": "Description"
    },
    "price": {
      "type": "number",
      "title": "Price (USD)",
      "minimum": 0
    },
    "specifications": {
      "type": "object",
      "title": "Specifications",
      "properties": {
        "brand": {
          "type": "string",
          "title": "Brand"
        },
        "model": {
          "type": "string",
          "title": "Model"
        },
        "weight": {
          "type": "number",
          "title": "Weight (kg)"
        }
      }
    },
    "inStock": {
      "type": "boolean",
      "title": "In Stock"
    }
  }
}
  1. Create document: /products/laptop-pro
  2. Edit content in the form-based editor
  3. Publish the document
  4. Fetch data from your block:
  • sample (javascript)
const response = await fetch(
  'https://mhast-html-to-json.adobeaem.workers.dev/live/<ORG>/<SITE>/products/laptop-pro'
);
const product = await response.json();

Troubleshooting

Below are solutions to common issues you may encounter.

Structured Content editor not loading

Schema not appearing in Schema Editor app

Data not fetching from delivery endpoint