tinacms-contentful
v0.7.15
Published
TinaCMS API Client, Media Client, and utilities for the Contentful APIs
Downloads
27
Keywords
Readme
tinacms-contentful
A library for using Contentful with TinaCMS
Usage
Installation
To install the package, run:
npm install tinacms-contentful contentful contentful-management
Setup
To setup TinaCMS with Contentful, you must create an instance of the TinaCMS ContentfulClient
for each space you want to edit content from.
For a single space:
import { ContentfulClient } from 'tinacms-contentful'
const contentful = new ContentfulClient({
spaceId: /* Contentful Space ID */,
defaultEnvironmentId: /* Contentful environment ID to use by default. Default: master */,
accessTokens: {
delivery: /* Contentful delivery access token for the space */,
preview: /* Contentful preview access token for the space */,
}
clientId: /* OAuth App Client ID */,
redirectUrl: /* OAuth App Callback URL */,
rateLimit: /* API Rate Limit for your Contentful Plan (Requests per second). Default: 4 */,
insecure: /* If true, uses same-site HTTPS cookies to create a session. Default: false */
})
const cms = new TinaCMS({
apis: {
contentful
}
})
Or if the CMS has already been created:
cms.registerApi('contentful', contentful)
For multiple spaces:
import { createContentfulClientForSpaces } from 'tinacms-contentful';
const spaces = [
{
spaceId: /* Contentful Space ID */,
defaultEnvironmentId: /* Contentful environment ID to use by default. Default: master */,
accessTokens: {
delivery: /* Contentful delivery access token for the space */,
preview: /* Contentful preview access token for the space */,
}
},
{
spaceId: /* Contentful Space ID */,
defaultEnvironmentId: /* Contentful environment ID to use by default. Default: master */,
accessTokens: {
delivery: /* Contentful delivery access token for the space */,
preview: /* Contentful preview access token for the space */,
}
}
]
const contentful = createClientForSpaces(spaces, {
clientId: /* OAuth App Client ID */,
redirectUrl: /* OAuth App Callback URL */,
rateLimit: /* API Rate Limit for your Contentful Plan (Requests per second). Default: 4 */,
insecure: /* If true, uses same-site HTTPS cookies to create a session. Default: false */
})
Media
To add support for media, you must setup a media store for the space media should be uploaded to.
For a single space:
import { ContentfulClient, ContentfulMediaStore } from 'tinacms-contentful'
const contentful = new ContentfulClient({
spaceId: /* Contentful Space ID */,
defaultEnvironmentId: /* Contentful environment ID to use by default. Default: master */,
accessTokens: {
delivery: /* Contentful delivery access token for the space */,
preview: /* Contentful preview access token for the space */,
}
clientId: /* OAuth App Client ID */,
redirectUrl: /* OAuth App Callback URL */,
rateLimit: /* API Rate Limit for your Contentful Plan (Requests per second). Default: 4 */,
insecure: /* If true, uses same-site HTTPS cookies to create a session. Default: false */
})
const contentfulMediaStore = new ContentfulMediaStore(contentful);
const cms = new TinaCMS({
apis: {
contentful
},
media: contentfulMediaStore
})
For multiple spaces:
The media store is only capable of acting on a single space at a time. To change spaces dynamically, run:
const spaceId = 'example-id'
const space = cms.api.contentful[spaceId]
cms.media.store = new ContentfulMediaStore(space)
APIs
The library has the following core APIs:
- ContentfulClient: an API client for communicating with Contentful that integrates directly with the CMS.
- ContentfulMediaStore
There are other public APIs as well. To learn more, read the full API documentation.
Contentful Client
Creates a TinaCMS API client for communicating with a Contentful Space.
Options
The client takes the following constructor arguments.
Properties
The Client has the following properties:
allowedOrigins
: the FQDNs allowed to receive Oauth bearer tokens. Defaults to the window hostname.environment
: the current Contentful environment the space is communicating with.rateLimit
: the rate limit at which API operation will be throttled to.sdks
: the Contentful SDK Client instances for this space.
Methods
The Client has the following methods:
authenticate
: triggers a popup window OAuth workflow .setEnvironment
: changes the environment the space is communicating with.getEntry
: fetch a publisheddelivery
, draftpreview
, or editablemanagement
entry.getEntries
: fetch multiple publisheddelivery
, draftpreview
, or editablemanagement
entries.createEntry
: create a new entry for a specific content model.updateEntry
: update an existing entry with new data.deleteEntry
: delete a specific entry.publishEntry
: publish a specific entry.unpublishEntry
: unpublish a specific entry.archiveEntry
: archive a specific entry.getAsset
: fetch a publisheddelivery
, or draftpreview
asset.getAssets
: fetch multiple publisheddelivery
, or draftpreview
assets.getAssetCollection
: fetch a paginated collection of publisheddelivery
, or draftpreview
assets.createAsset
: create a new asset from a file upload.updateAsset
: update an existing asset from a file upload.deleteAsset
: delete a specific asset.archiveAsset
: archive a specific asset.getContentType
: fetch a specific content type.sync
: [EXPERIMENTAL] Fetch all entries and assets from the space in the given environment to allow access without network connection.