Resource Links
Resource Links are part of the Cross-space references feature set that allows you to link content across multiple spaces. It mainly uses ResourceLink links as a way to represent a relationship between entities from different spaces.
ResourceLink links are represented as a sys object containing urn, linkType and type:
As they are part of another space, resolving cross-space linked entities requires a special header to be passed in each request named x-contentful-resource-resolution.
Extra header for cross-space resolution
The x-contentful-resource-resolution header is a base64 encoded JSON object containing key-value pairs of spaceId/API Key. The plain JSON used to create the header should have the following shape:
That then needs to be stringified and encoded to base64. You can use JSON.stringify and btoa (JavaScript) to properly convert the JSON object to a stringified encoded version of it.
Here is a full example in JavaScript:
The value can then be passed to the x-contentful-resource-resolution header as-is. All cross-space references of matching space IDs will be returned within the includes property of the response.
Capabilities
- The
localequery parameter is propagated to all extra spaces present in the new header. - Only the first level of references of every extra space in the new header will be resolved. It applies to only one level of space. This is a behavior similar to
include=1. - The main space (space Id being requested in the URL) will still resolve up to 10 levels.
- Publishing new content in any of the extra spaces will cause the cache to be purged on every request that included that space Id.
- The
includesproperty of the response will include both cross-space entries and assets. - You can pass this new header in the Javascript SDK for automatic resolution.
Errors
Errors from cross-space requests are propagated back to the response payload in the errors property.
If a request to a single cross-space fails, the main space request and other spaces will still continue to process.
Errors property example
Limitations
- Up to
21spaces to be resolved in a single request - Only
20extra space tokens are supported. You can make a single API call that resolves up to21spaces at the same time:20extra spaces and the entries from the space Id in the initial request. - Up to
1000references in theincludesproperty in the response. - Only the first level of cross-space references is resolved from the original spaceId in the URL
- The
Authorizationheader is still required for every request and it should enable access to the main space Id in the URL. - Errors from the extra space tokens will be returned in the
errorsproperty of the response. - Using the new header will also consume the Rate Limiting from the space Ids present in it when the request is uncached.
- No Advanced Caching support
- No MRDI support
For more information, see the Resource Links FAQs.
Retrieval of linked Resource Links
Notes:
- The
includeparameter resolves links between entries and assets within a space. Links between content types within a space are not included in the response. - The
includeparameter is only available for the entry collection endpoint/spaces/{space_id}/environments/{environment_id}/entries.
To retrieve linked Resource Links, use the Get all entries of a Space endpoint.