logo

Plone Documentation v6.0

⌘ K
  • Overview
  • Install
    • Containers
      • Official Images
        • plone/plone-backend
        • plone/plone-frontend
        • plone/plone-zeo
      • Examples of Plone 6 using containers
        • nginx, Frontend, Backend container example
        • nginx, Frontend, Backend, ZEO container example
        • nginx, Frontend, Backend, PostgreSQL container example
        • nginx, Plone Classic container example
        • HAProxy, Backend, ZEO container example
        • Traefik Proxy, Frontend, Backend, Varnish container example
    • Install Plone from its packages
    • Manage add-ons and packages
  • Upgrade guide
  • Deployment
    • Provisioning
    • Scaling
    • Backup and Restore
    • Caching
      • Installation
      • Control panel
      • Caching profiles
      • Rulesets and caching operations
      • Caching proxies
      • RAM cache
      • ETags
      • Composite views
      • REST API support
  • Frontend
    • Introduction
      • Getting Started
      • Developer roadmap
      • Other learning resources
    • Configuration
      • The configuration registry
      • Settings reference guide
      • Experimental features
      • Zero configuration builds
      • Component registry
      • Internal proxy to content backend API
      • Backend configuration
      • Programatically define the active add-ons and theme
      • volto-slate
        • volto-slate API
        • Editor Configuration
        • How to write a Slate editor plugin
      • Multilingual
      • Working copy support
      • Environment variables
      • API expanders
      • Locking support
    • Theming
      • About Semantic UI
      • Semantic UI Theming
      • How does the theming engine work?
      • Theming Strategy
      • Custom Styling
      • Using third party libraries and themes other than semantic-ui
    • Development recipes
      • Creating a new Volto project
      • Folder structure
      • How to use environment variables
      • Customizing Components
      • Customizing Volto Views
      • Creating Volto Views
      • Images
      • Internationalization
      • Custom Express middleware
      • Lazy loading
      • AppExtras component
      • Context navigation component
      • Pluggables framework
      • Forms and widgets
      • Legacy Browser Support (IE11 compatibility)
    • Blocks
      • Blocks Introduction
      • Blocks anatomy
      • Blocks settings
      • Blocks - Edit components
      • Block style wrapper
      • Block extensions mechanism
      • Server-side rendering for async blocks
      • Core Blocks developer notes
        • Listing block
        • Teaser Block
        • Grid block
        • Container
    • Volto add-ons
      • Add-on Internationalization
      • Best practices for add-ons
      • Create a Volto theme add-on
    • Integration with the backend
    • Deploying
      • Simple deployment
      • Deployment using a Node.js process manager (PM2)
      • Seamless mode
      • Apache
      • Integration with Sentry
      • critical.css (above the fold) optimizations
    • Upgrade Guide
    • User Manual
      • Edit content using blocks
      • Copy, Cut, and Paste blocks in Volto
      • Finding links and references to the current page
    • Contributing to Volto
      • Design principles
      • Style Guide
      • Language features and conventions
      • Linting
      • React
      • Redux
      • Routing
      • Icons
      • Testing
      • Acceptance testing
      • Accessibility guidelines
      • TypeScript
      • Volto core add-ons
    • Volto Release Notes
  • REST API
    • Introduction
    • Usage
      • Authentication
      • Batching
      • Content Manipulation
      • Customizing the API
      • Expansion
      • Explore the API using Postman
      • i18n: internationalization of screen messages
      • Serialization
      • Sharing
      • Types Schema
      • Volto Blocks support
    • Endpoints
      • Add-ons
      • Aliases
      • Breadcrumbs
      • Comments
      • Content Types
      • Content Rules
      • Context Navigation
      • Control Panels
      • Copy and Move
      • Database
      • Email Notification
      • Email Send
      • Groups
      • History
      • Link Integrity
      • Locking
      • Navigation
      • Navigation root
      • Portal Actions
      • Portraits
      • Principals
      • Querystring
      • Querystring Search
      • Registry
      • Relations
      • Roles
      • Search
      • Site
      • System
      • Transactions
      • Translations
      • TUS resumable upload
      • Types
      • Upgrade
      • Users
      • User schema
      • Vocabularies and Sources
      • Workflow
      • Working Copy
    • Upgrade Guide
    • Contributing to plone.restapi
      • Conventions
    • HTTP Status Codes
    • Glossary
  • Backend
    • Configuration Registry
    • Control panels
    • Content types
    • Behaviors
    • Annotations
    • Vocabularies
    • Fields
    • Relations
    • Widgets
    • Global utils and helpers
    • Portal Actions
    • Users and Groups
    • Security
    • Traversal and Acquisition
    • Workflows
    • Search
    • Indexing
    • ZODB
    • plone.api
      • About
      • Portal
      • Content
      • Users
      • Groups
      • Environment
      • Relations
      • API methods and descriptions
        • plone.api.portal
        • plone.api.content
        • plone.api.user
        • plone.api.group
        • plone.api.env
        • plone.api.relation
        • plone.api.exc
      • Contributing to plone.api
        • Development environment
    • Sending Email
    • Plone Upgrade Guide
      • Introduction
      • Preparations
      • Upgrade add-on products
      • Troubleshooting an upgrade
      • Version-specific migration procedures and tips
        • Upgrading Plone 4.x to 5.0
        • Upgrade a custom add-on to Plone 5.0
        • Upgrading Plone 5 within 5.x.x series
        • Upgrading Plone 5.0 to 5.1
        • Upgrade a custom add-on to Plone 5.1
        • Upgrading Plone 5.1 to 5.2
        • Migrating Plone 5.2 to Python 3
        • Migrate a ZODB from Python 2.7 to Python 3
        • Upgrading Plone 5.2 to 6.0
        • Migrating from Plone Classic UI to Volto
  • Classic UI
    • Cross-Site Request Forgery (CSRF)
    • Forms
    • Icons
    • Image handling
    • Layers
    • Portlets
    • Recipes
    • Static resources
    • Template global variables
    • Templates
    • Theming of Classic UI
      • Classic UI theming based on Barceloneta
      • Classic UI theming with Diazo
      • Classic UI theming from scratch
      • Through-the-web (TTW) theme customization
      • Color modes
    • Viewlets
    • Views
    • What's new in Plone 6 Classic UI
  • Internationalization and Localization
    • Translating text strings
    • Language negotiation
    • Translating content
    • Contributing Plone Core Translations
    • Resync translations
  • Contributing to Plone
    • First-time contributors
    • Contributing to documentation
      • Building and checking the quality of documentation
      • Authors guide
      • MyST reference
      • Themes and extensions
      • Administrators Guide
    • Contributing to plone.api
      • Development environment
    • Contributing to plone.restapi
      • Conventions
    • Contributing to Volto
      • Design principles
      • Style Guide
      • Language features and conventions
      • Linting
      • React
      • Redux
      • Routing
      • Icons
      • Testing
      • Acceptance testing
      • Accessibility guidelines
      • TypeScript
      • Volto core add-ons

Appendices

  • Glossary

plone.org plone.org

Link Integrity – REST API
  • repository
  • open issue
  • suggest edit
  • .md

Link Integrity

Link Integrity#

When you create relations between content objects in Plone (for example, via relation fields or links in text blocks), these relations are stored in the database. The Plone user interface will use those stored relations to show a warning when you try to delete a content object that is still referenced elsewhere. Link integrity avoids broken links ("breaches") in the site.

The @linkintegrity endpoint returns the list of reference breaches that would happen if some content items would be deleted. This information can be used to show the editor a confirmation dialog.

This check includes content objects that are located within a content object ("folderish content").

You can call the /@linkintegrity endpoint on the site root with a GET request and a list of content UIDs in the JSON body:

http

GET /plone/@linkintegrity?uids=SomeUUID000000000000000000000002 HTTP/1.1
Accept: application/json
Authorization: Basic YWRtaW46c2VjcmV0

curl

curl -i -X GET 'http://nohost/plone/@linkintegrity?uids=SomeUUID000000000000000000000002' -H "Accept: application/json" --user admin:secret

httpie

http 'http://nohost/plone/@linkintegrity?uids=SomeUUID000000000000000000000002' Accept:application/json -a admin:secret

python-requests

requests.get('http://nohost/plone/@linkintegrity?uids=SomeUUID000000000000000000000002', headers={'Accept': 'application/json'}, auth=('admin', 'secret'))

The endpoint accepts a single parameter:

uids

A list of object UIDs that you want to check.

The server will respond with the result:

HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "@id": "http://localhost:55001/plone/doc-2",
        "@type": "Document",
        "breaches": [
            {
                "@id": "http://localhost:55001/plone/doc-1",
                "title": "First document",
                "uid": "SomeUUID000000000000000000000001"
            }
        ],
        "description": "",
        "items_total": 0,
        "review_state": "private",
        "title": "Second document",
        "type_title": "Page"
    }
]

The result includes a list of objects corresponding to the UIDs that were requested. Each result object includes:

breaches

A list of breaches (sources of relations that would be broken)

items_total

Count of items contained inside the specified UIDs.

previous

History

next

Locking

By the Plone community
© Copyright Plone Foundation.

The text and illustrations in this website are licensed by the Plone Foundation under a Creative Commons Attribution 4.0 International license. Plone and the Plone® logo are registered trademarks of the Plone Foundation, registered in the United States and other countries. For guidelines on the permitted uses of the Plone trademarks, see https://plone.org/foundation/logo. All other trademarks are owned by their respective owners.

Deploys by Netlify