Changelog

In the Public API Changelog you’ll find an overview of all significant changes to our API, including new features, deprecations, and breaking changes. Our goal is to provide a clear and structured update history, helping you stay informed about improvements and necessary adjustments.

Please consult the API Versioning Strategy for more information on how we manage API versions.

Bug fixes are not listed here. If you encounter issues, please report them to the Livingdocs Customer Solutions team.

March 2025

🎁

API Versioning

We’re introducing a new API Versioning Strategy that allows us to iterate on the API without breaking existing integrations.

With the introduction of a new versioning strategy, the v1 and beta versions are now available as 2025-03 version. If you use any of those versions, you can safely change your integration to the 2025-03 version, which now contains both functionalities without any other changes.

🎁

Media Library: Serve Image

We’ve added a new public API endpoint:

/api/2025-03/mediaLibrary/serve-image/:key

This endpoint provides access to an image in its original dimensions, as long as it has not been revoked or marked as invalid. It can serve as a source for proxies or image processing services.

Please check the API reference for more details.

January 2025

🎁

Brand Conditions

Conditional components provide the ability to render a component in the delivery based on a brands or dateTime condition. The conditions are stored with the component data and can be input in the Livingdocs Editor.

To support country- or brand-specific content, we are introducing a new component condition: the brands condition. This allows downstreams to configure a set of brands, from which one or more can be selected on components to define for which brands a component should be included. This condition works alongside the already existing dateTime condition.

Brands component condition

For more information, please refer to our conditional components documentation.

The brands condition is supported by all API endpoints where the existing dateTime component condition is supported:

  • GET /api/v1/documents/:documentId/latestPublication
  • GET /api/v1/documents/latestPublications
  • GET /api/v1/documents/:documentId/latestPublication/renditions/:renditionHandles
  • GET /api/v1/publications/search
  • GET /api/v1/document-lists/:id
  • GET /api/beta/documents/:documentId/latestDraft
  • GET /api/beta/documents/:documentId/latestPublication
  • GET /api/beta/documents/latestPublications
  • POST /api/beta/composition/:documentId

November 2024

⚠️

Deprecate Menu Tool

The Menu Tool is deprecated and will be removed in release-2025-05. Please migrate your menus to data records, using the li-tree plugin and, if needed, the li-unique-id metadata plugin. For detailed instructions on setting up menus with data records, refer to our guide. We are here to assist with the migration as needed.

🎁

Document Command API: New Commands

We have extended the Document Command API with five new commands, which are also available for Assistants. Each command supports an optional oldValue parameter. When specified, the system verifies that the value being updated matches the provided oldValue. This prevents accidental overwrites that might occur due to changes made between reading a document and issuing the command. If the oldValue does not match, a conflict error is thrown.

setComponentCondition

{
  operation: 'setComponentCondition',
  componentId: 'doc-123',
  conditionName: 'dateTime',
  value: {
    gte: '2025-01-01T10:30:00.000Z',
    lt: '2025-02-02T14:30:00.000Z'
  },
  oldValue: {
    gte: '2024-01-01T10:30:00.000Z',
    lt: '2024-02-02T14:30:00.000Z'
  }
}

setComponentStyle

{
  operation: 'setComponentStyle',
  componentId: 'doc-123',
  propertyName: 'background',
  value: '#1fc47a',
  oldValue: '#000'
}

setStyleDirective

{
  operation: 'setStyleDirective',
  componentId: 'doc-123',
  directiveName: 'appearance',
  propertyName: 'background',
  value: '#1fc47a',
  oldValue: '#000'
}

setLinkDirective

{
  operation: 'setLinkDirective',
  componentId: 'doc-123',
  directiveName: 'link',
  value: {
    href: 'https://livingdocs.io/article/123',
    target: '_blank',
    $ref: 'document',
    reference: {id: '123'}
  },
  oldValue: {
    href: 'https://livingdocs.io/'
  }
}

setIncludeDirective

The setIncludeDirective command supports updating both include params and overrides. These properties depend on each other: if only params are provided, any existing overrides are removed. Conversely, specifying overrides without params is invalid and will return a validation error. To update overrides, both the params and overrides properties must be provided.

{
  operation: 'setIncludeDirective',
  componentId: 'doc-123',
  directiveName: 'related-article',
  value: {
    params: {
      teaser: {
        $ref: 'document',
        reference: {id: '3'}
      },
    },
    overrides: [{
      id: 'teaser-normal-3',
      content: {
        link: {href: 'https://livingdocs.io'},
        title: 'Changed title',
      },
      originalSnapshot: {...},
      contentProperties: [...]
    }]
  },
  oldValue: null
}

July 2024

🎁

Document Command API: New Commands

We have extended the Document Command API with two new commands, which are also available for Assistants.

removeComponent

{
  operation: 'removeComponent',
  componentId: 'doc-4a2b3g4d5'
}

unpublish

{
  operation: 'unpublish'
}