Package Exports
- confluence.js
- confluence.js/api/analytics
- confluence.js/api/audit
- confluence.js/api/content
- confluence.js/api/contentAttachments
- confluence.js/api/contentBody
- confluence.js/api/contentChildrenAndDescendants
- confluence.js/api/contentComments
- confluence.js/api/contentLabels
- confluence.js/api/contentMacroBody
- confluence.js/api/contentPermissions
- confluence.js/api/contentProperties
- confluence.js/api/contentRestrictions
- confluence.js/api/contentStates
- confluence.js/api/contentVersions
- confluence.js/api/contentWatches
- confluence.js/api/dynamicModules
- confluence.js/api/experimental
- confluence.js/api/group
- confluence.js/api/index
- confluence.js/api/inlineTasks
- confluence.js/api/labelInfo
- confluence.js/api/longRunningTask
- confluence.js/api/models/accountId
- confluence.js/api/models/accountIdEmailRecord
- confluence.js/api/models/accountIdEmailRecordArray
- confluence.js/api/models/addContentRestriction
- confluence.js/api/models/addContentRestrictionUpdateArray
- confluence.js/api/models/affectedObject
- confluence.js/api/models/appDescriptor
- confluence.js/api/models/asyncContentBody
- confluence.js/api/models/asyncId
- confluence.js/api/models/attachment
- confluence.js/api/models/attachmentContainer
- confluence.js/api/models/attachmentMetadata
- confluence.js/api/models/auditRecord
- confluence.js/api/models/auditRecordArray
- confluence.js/api/models/auditRecordCreate
- confluence.js/api/models/availableContentStates
- confluence.js/api/models/blueprintTemplate
- confluence.js/api/models/blueprintTemplateArray
- confluence.js/api/models/breadcrumb
- confluence.js/api/models/bulkUserLookup
- confluence.js/api/models/bulkUserLookupArray
- confluence.js/api/models/buttonLookAndFeel
- confluence.js/api/models/changedValue
- confluence.js/api/models/connectModules
- confluence.js/api/models/container
- confluence.js/api/models/containerLookAndFeel
- confluence.js/api/models/containerSummary
- confluence.js/api/models/content
- confluence.js/api/models/contentArray
- confluence.js/api/models/contentBlueprintDraft
- confluence.js/api/models/contentBody
- confluence.js/api/models/contentBodyCreate
- confluence.js/api/models/contentBodyCreateStorage
- confluence.js/api/models/contentChildType
- confluence.js/api/models/contentChildren
- confluence.js/api/models/contentCreate
- confluence.js/api/models/contentHistory
- confluence.js/api/models/contentLookAndFeel
- confluence.js/api/models/contentPermissionRequest
- confluence.js/api/models/contentProperty
- confluence.js/api/models/contentPropertyArray
- confluence.js/api/models/contentPropertyCreate
- confluence.js/api/models/contentPropertyCreateNoKey
- confluence.js/api/models/contentPropertyUpdate
- confluence.js/api/models/contentRestriction
- confluence.js/api/models/contentRestrictionArray
- confluence.js/api/models/contentRestrictionUpdate
- confluence.js/api/models/contentRestrictionUpdateArray
- confluence.js/api/models/contentState
- confluence.js/api/models/contentStateResponse
- confluence.js/api/models/contentStateRestInput
- confluence.js/api/models/contentStateSettings
- confluence.js/api/models/contentTemplate
- confluence.js/api/models/contentTemplateArray
- confluence.js/api/models/contentTemplateBodyCreate
- confluence.js/api/models/contentTemplateCreate
- confluence.js/api/models/contentTemplateUpdate
- confluence.js/api/models/contentUpdate
- confluence.js/api/models/copyPageHierarchyRequest
- confluence.js/api/models/copyPageHierarchyTitleOptions
- confluence.js/api/models/copyPageRequest
- confluence.js/api/models/copyPageRequestDestination
- confluence.js/api/models/createdAttachment
- confluence.js/api/models/embeddable
- confluence.js/api/models/embeddedContent
- confluence.js/api/models/genericLinks
- confluence.js/api/models/getRestrictionsByOperation
- confluence.js/api/models/getViewers
- confluence.js/api/models/getViews
- confluence.js/api/models/group
- confluence.js/api/models/groupArray
- confluence.js/api/models/groupArrayWithLinks
- confluence.js/api/models/groupCreate
- confluence.js/api/models/groupName
- confluence.js/api/models/headerLookAndFeel
- confluence.js/api/models/horizontalHeaderLookAndFeel
- confluence.js/api/models/icon
- confluence.js/api/models/index
- confluence.js/api/models/label
- confluence.js/api/models/labelArray
- confluence.js/api/models/labelCreate
- confluence.js/api/models/labelCreateArray
- confluence.js/api/models/labelDetails
- confluence.js/api/models/labeledContent
- confluence.js/api/models/labeledContentPageResponse
- confluence.js/api/models/labeledContentType
- confluence.js/api/models/lifecycle
- confluence.js/api/models/longTask
- confluence.js/api/models/longTaskStatus
- confluence.js/api/models/longTaskStatusArray
- confluence.js/api/models/longTaskStatusWithLinks
- confluence.js/api/models/lookAndFeel
- confluence.js/api/models/lookAndFeelSelection
- confluence.js/api/models/lookAndFeelSettings
- confluence.js/api/models/macroInstance
- confluence.js/api/models/menusLookAndFeel
- confluence.js/api/models/message
- confluence.js/api/models/migratedUser
- confluence.js/api/models/migratedUserArray
- confluence.js/api/models/movePage
- confluence.js/api/models/navigationLookAndFeel
- confluence.js/api/models/operationCheckResult
- confluence.js/api/models/permissionCheckResponse
- confluence.js/api/models/permissionSubject
- confluence.js/api/models/permissionSubjectWithGroupId
- confluence.js/api/models/propertyValue
- confluence.js/api/models/relation
- confluence.js/api/models/relationArray
- confluence.js/api/models/relationData
- confluence.js/api/models/retentionPeriod
- confluence.js/api/models/screenLookAndFeel
- confluence.js/api/models/searchFieldLookAndFeel
- confluence.js/api/models/searchPageResponseSearchResult
- confluence.js/api/models/searchResult
- confluence.js/api/models/space
- confluence.js/api/models/spaceArray
- confluence.js/api/models/spaceCreate
- confluence.js/api/models/spaceDescription
- confluence.js/api/models/spaceDescriptionCreate
- confluence.js/api/models/spacePermission
- confluence.js/api/models/spacePermissionCreate
- confluence.js/api/models/spacePermissionCustomContent
- confluence.js/api/models/spacePermissionRequest
- confluence.js/api/models/spacePermissionV2
- confluence.js/api/models/spacePrivateCreate
- confluence.js/api/models/spaceProperty
- confluence.js/api/models/spacePropertyArray
- confluence.js/api/models/spacePropertyCreate
- confluence.js/api/models/spacePropertyCreateNoKey
- confluence.js/api/models/spacePropertyUpdate
- confluence.js/api/models/spaceSettings
- confluence.js/api/models/spaceSettingsUpdate
- confluence.js/api/models/spaceUpdate
- confluence.js/api/models/spaceWatch
- confluence.js/api/models/spaceWatchArray
- confluence.js/api/models/spaceWatchUser
- confluence.js/api/models/superBatchWebResources
- confluence.js/api/models/systemInfoEntity
- confluence.js/api/models/task
- confluence.js/api/models/taskPageResponse
- confluence.js/api/models/taskStatusUpdate
- confluence.js/api/models/theme
- confluence.js/api/models/themeArray
- confluence.js/api/models/themeNoLinks
- confluence.js/api/models/themeUpdate
- confluence.js/api/models/topNavigationLookAndFeel
- confluence.js/api/models/user
- confluence.js/api/models/userAnonymous
- confluence.js/api/models/userArray
- confluence.js/api/models/userProperty
- confluence.js/api/models/userPropertyCreate
- confluence.js/api/models/userPropertyKeyArray
- confluence.js/api/models/userPropertyUpdate
- confluence.js/api/models/userWatch
- confluence.js/api/models/usersUserKeys
- confluence.js/api/models/version
- confluence.js/api/models/versionArray
- confluence.js/api/models/versionRestore
- confluence.js/api/models/watch
- confluence.js/api/models/watchArray
- confluence.js/api/models/watchUser
- confluence.js/api/models/webResourceDependencies
- confluence.js/api/parameters/addContentWatcher
- confluence.js/api/parameters/addCustomContentPermissions
- confluence.js/api/parameters/addGroupToContentRestriction
- confluence.js/api/parameters/addGroupToContentRestrictionByGroupId
- confluence.js/api/parameters/addLabelWatcher
- confluence.js/api/parameters/addLabelsToContent
- confluence.js/api/parameters/addLabelsToSpace
- confluence.js/api/parameters/addPermissionToSpace
- confluence.js/api/parameters/addRestrictions
- confluence.js/api/parameters/addSpaceWatcher
- confluence.js/api/parameters/addUserToContentRestriction
- confluence.js/api/parameters/addUserToGroup
- confluence.js/api/parameters/addUserToGroupByGroupId
- confluence.js/api/parameters/archivePages
- confluence.js/api/parameters/asyncConvertContentBodyRequest
- confluence.js/api/parameters/asyncConvertContentBodyResponse
- confluence.js/api/parameters/checkContentPermission
- confluence.js/api/parameters/convertContentBody
- confluence.js/api/parameters/copyPage
- confluence.js/api/parameters/copyPageHierarchy
- confluence.js/api/parameters/createAttachments
- confluence.js/api/parameters/createAuditRecord
- confluence.js/api/parameters/createContent
- confluence.js/api/parameters/createContentProperty
- confluence.js/api/parameters/createContentPropertyForKey
- confluence.js/api/parameters/createContentTemplate
- confluence.js/api/parameters/createGroup
- confluence.js/api/parameters/createOrUpdateAttachments
- confluence.js/api/parameters/createPrivateSpace
- confluence.js/api/parameters/createRelationship
- confluence.js/api/parameters/createSpace
- confluence.js/api/parameters/createSpaceProperty
- confluence.js/api/parameters/createSpacePropertyForKey
- confluence.js/api/parameters/createUserProperty
- confluence.js/api/parameters/deleteContent
- confluence.js/api/parameters/deleteContentProperty
- confluence.js/api/parameters/deleteContentVersion
- confluence.js/api/parameters/deleteLabelFromSpace
- confluence.js/api/parameters/deletePageTree
- confluence.js/api/parameters/deleteRelationship
- confluence.js/api/parameters/deleteRestrictions
- confluence.js/api/parameters/deleteSpace
- confluence.js/api/parameters/deleteSpaceProperty
- confluence.js/api/parameters/deleteUserProperty
- confluence.js/api/parameters/downloadAttachment
- confluence.js/api/parameters/exportAuditRecords
- confluence.js/api/parameters/findSourcesForTarget
- confluence.js/api/parameters/findTargetFromSource
- confluence.js/api/parameters/getAllLabelContent
- confluence.js/api/parameters/getAndAsyncConvertMacroBodyByMacroId
- confluence.js/api/parameters/getAndConvertMacroBodyByMacroId
- confluence.js/api/parameters/getAnonymousUser
- confluence.js/api/parameters/getAttachments
- confluence.js/api/parameters/getAuditRecords
- confluence.js/api/parameters/getAuditRecordsForTimePeriod
- confluence.js/api/parameters/getAvailableContentStates
- confluence.js/api/parameters/getBlueprintTemplates
- confluence.js/api/parameters/getBulkUserLookup
- confluence.js/api/parameters/getBulkUserMigration
- confluence.js/api/parameters/getContent
- confluence.js/api/parameters/getContentById
- confluence.js/api/parameters/getContentByTypeForSpace
- confluence.js/api/parameters/getContentChildren
- confluence.js/api/parameters/getContentChildrenByType
- confluence.js/api/parameters/getContentComments
- confluence.js/api/parameters/getContentDescendants
- confluence.js/api/parameters/getContentForSpace
- confluence.js/api/parameters/getContentProperties
- confluence.js/api/parameters/getContentProperty
- confluence.js/api/parameters/getContentRestrictionStatusForGroup
- confluence.js/api/parameters/getContentRestrictionStatusForUser
- confluence.js/api/parameters/getContentState
- confluence.js/api/parameters/getContentStateSettings
- confluence.js/api/parameters/getContentTemplate
- confluence.js/api/parameters/getContentTemplates
- confluence.js/api/parameters/getContentVersion
- confluence.js/api/parameters/getContentVersions
- confluence.js/api/parameters/getContentWatchStatus
- confluence.js/api/parameters/getCurrentUser
- confluence.js/api/parameters/getDescendantsOfType
- confluence.js/api/parameters/getGroupByGroupId
- confluence.js/api/parameters/getGroupByName
- confluence.js/api/parameters/getGroupByQueryParam
- confluence.js/api/parameters/getGroupMembers
- confluence.js/api/parameters/getGroupMembersByGroupId
- confluence.js/api/parameters/getGroupMembershipsForUser
- confluence.js/api/parameters/getGroups
- confluence.js/api/parameters/getHistoryForContent
- confluence.js/api/parameters/getIndividualGroupRestrictionStatusByGroupId
- confluence.js/api/parameters/getLabelsForContent
- confluence.js/api/parameters/getLabelsForSpace
- confluence.js/api/parameters/getLookAndFeelSettings
- confluence.js/api/parameters/getMacroBodyByMacroId
- confluence.js/api/parameters/getMembersByQueryParam
- confluence.js/api/parameters/getPrivacyUnsafeUserEmail
- confluence.js/api/parameters/getPrivacyUnsafeUserEmailBulk
- confluence.js/api/parameters/getRelationship
- confluence.js/api/parameters/getRestrictions
- confluence.js/api/parameters/getRestrictionsByOperation
- confluence.js/api/parameters/getRestrictionsForOperation
- confluence.js/api/parameters/getSpace
- confluence.js/api/parameters/getSpaceContentStates
- confluence.js/api/parameters/getSpaceProperties
- confluence.js/api/parameters/getSpaceProperty
- confluence.js/api/parameters/getSpaceSettings
- confluence.js/api/parameters/getSpaceTheme
- confluence.js/api/parameters/getSpaces
- confluence.js/api/parameters/getTask
- confluence.js/api/parameters/getTaskById
- confluence.js/api/parameters/getTasks
- confluence.js/api/parameters/getTheme
- confluence.js/api/parameters/getThemes
- confluence.js/api/parameters/getUser
- confluence.js/api/parameters/getUserProperties
- confluence.js/api/parameters/getUserProperty
- confluence.js/api/parameters/getViewers
- confluence.js/api/parameters/getViews
- confluence.js/api/parameters/getWatchersForSpace
- confluence.js/api/parameters/getWatchesForPage
- confluence.js/api/parameters/getWatchesForSpace
- confluence.js/api/parameters/index
- confluence.js/api/parameters/isWatchingLabel
- confluence.js/api/parameters/isWatchingSpace
- confluence.js/api/parameters/movePage
- confluence.js/api/parameters/publishLegacyDraft
- confluence.js/api/parameters/publishSharedDraft
- confluence.js/api/parameters/registerModules
- confluence.js/api/parameters/removeContentState
- confluence.js/api/parameters/removeContentWatcher
- confluence.js/api/parameters/removeGroup
- confluence.js/api/parameters/removeGroupById
- confluence.js/api/parameters/removeGroupByName
- confluence.js/api/parameters/removeLabelFromContent
- confluence.js/api/parameters/removeLabelFromContentUsingQueryParameter
- confluence.js/api/parameters/removeLabelWatcher
- confluence.js/api/parameters/removeMemberFromGroup
- confluence.js/api/parameters/removeMemberFromGroupByGroupId
- confluence.js/api/parameters/removeModules
- confluence.js/api/parameters/removePermission
- confluence.js/api/parameters/removeSpaceWatch
- confluence.js/api/parameters/removeTemplate
- confluence.js/api/parameters/removeUserFromContentRestriction
- confluence.js/api/parameters/resetLookAndFeelSettings
- confluence.js/api/parameters/resetSpaceTheme
- confluence.js/api/parameters/restoreContentVersion
- confluence.js/api/parameters/searchByCQL
- confluence.js/api/parameters/searchContentByCQL
- confluence.js/api/parameters/searchGroups
- confluence.js/api/parameters/searchTasks
- confluence.js/api/parameters/searchUser
- confluence.js/api/parameters/setContentState
- confluence.js/api/parameters/setLookAndFeelSettings
- confluence.js/api/parameters/setRetentionPeriod
- confluence.js/api/parameters/setSpaceTheme
- confluence.js/api/parameters/updateAttachmentData
- confluence.js/api/parameters/updateAttachmentProperties
- confluence.js/api/parameters/updateContent
- confluence.js/api/parameters/updateContentProperty
- confluence.js/api/parameters/updateContentTemplate
- confluence.js/api/parameters/updateLookAndFeel
- confluence.js/api/parameters/updateLookAndFeelSettings
- confluence.js/api/parameters/updateRestrictions
- confluence.js/api/parameters/updateSpace
- confluence.js/api/parameters/updateSpaceProperty
- confluence.js/api/parameters/updateSpaceSettings
- confluence.js/api/parameters/updateTaskById
- confluence.js/api/parameters/updateUserProperty
- confluence.js/api/relation
- confluence.js/api/search
- confluence.js/api/settings
- confluence.js/api/space
- confluence.js/api/spacePermissions
- confluence.js/api/spaceProperties
- confluence.js/api/spaceSettings
- confluence.js/api/template
- confluence.js/api/themes
- confluence.js/api/users
- confluence.js/callback
- confluence.js/clients/baseClient
- confluence.js/clients/client
- confluence.js/clients/confluenceClient
- confluence.js/clients/index
- confluence.js/config
- confluence.js/index
- confluence.js/interfaces/extractBaseType
- confluence.js/interfaces/index
- confluence.js/interfaces/oneOrMany
- confluence.js/package.json
- confluence.js/pagination
- confluence.js/paramSerializer
- confluence.js/requestConfig
- confluence.js/services/authenticationService/authenticationService
- confluence.js/services/authenticationService/authentications/createBasicAuthenticationToken
- confluence.js/services/authenticationService/authentications/createJWTAuthentication
- confluence.js/services/authenticationService/authentications/createOAuth2AuthenticationToken
- confluence.js/services/authenticationService/authentications/index
- confluence.js/services/authenticationService/base64Encoder
- confluence.js/services/authenticationService/index
- confluence.js/services/index
Readme
JavaScript / TypeScript library for Node.JS and browsers to easily interact with Atlassian Confluence API
About
confluence.js is a powerful Node.JS / Browser module that allows you to interact with the Confluence API very easily.
Usability, consistency, and performance are key focuses of confluence.js, and it also has nearly 100% coverage of the Confluence API. It receives new Confluence features shortly after they arrive in the API.
Table of contents
Installation
Node.js 20.0.0 or newer is required.
Install with the npm:
npm install confluence.jsInstall with the yarn:
yarn add confluence.jsInstall with the pnpm
pnpm add confluence.jsUsage
Authentication
There are several types of authentication to gain access to the Confluence API. Let's take a look at a few of them below
Basic authentication
// TODO refine Basic authentication allows you to log in with credentials. How to release API Token, read how to do it here, and use it together with email.
import { ConfluenceClient } from 'confluence.js';
const client = new ConfluenceClient({
host: 'https://your-domain.atlassian.net',
authentication: {
basic: {
email: 'YOUR@EMAIL.ORG',
apiToken: 'YOUR_API_TOKEN',
},
},
});OAuth 2.0
Only the authorization token is currently supported. To release it, you need to read the documentation and write your own code to get the token.
Example of usage
import { ConfluenceClient } from 'confluence.js';
const client = new ConfluenceClient({
host: 'https://your-domain.atlassian.net',
authentication: {
oauth2: {
accessToken: 'YOUR_ACCESS_TOKEN',
},
},
});JWT
import { ConfluenceClient } from 'confluence.js';
const client = new ConfluenceClient({
host: 'https://your-domain.atlassian.net',
authentication: {
jwt: {
issuer: 'ISSUER',
secret: 'shhhh',
expiryTimeSeconds: 180,
},
},
});Your first request and using algorithm
import { ConfluenceClient } from 'confluence.js'; // Or import ServerClient if using standalone (Server) API
const client = new ConfluenceClient({
host: 'https://your-domain.atlassian.net',
authentication: {
basic: {
email: 'YOUR_EMAIL',
apiToken: 'YOUR_API_TOKEN',
},
},
});
async function main() {
const space = await client.space.createSpace({
name: 'My new space',
key: 'SPACENAME',
});
console.log(space);
}
main();
// Expected output:
// {
// id: 558714,
// key: 'SPACENAME',
// name: 'My new space',
// description: {
// plain: {
// value: '',
// representation: 'plain',
// embeddedContent: []
// },
// _expandable: {view: ''}
// },
// homepage: {
// id: '555312',
// type: 'page',
// status: 'current',
// title: 'My new space Home',
// macroRenderedOutput: {},
// extensions: {position: 581},
// _expandable: {
// container: '/rest/api/space/SPACENAME',
// metadata: '',
// restrictions: '/rest/api/content/555312/restriction/byOperation',
// history: '/rest/api/content/555312/history',
// body: '',
// version: '',
// descendants: '/rest/api/content/555312/descendant',
// space: '/rest/api/space/SPACENAME',
// childTypes: '',
// operations: '',
// schedulePublishDate: '',
// children: '/rest/api/content/555312/child',
// ancestors: ''
// },
// _links: {
// self: 'https://xxx.atlassian.net/wiki/rest/api/content/555312',
// tinyui: '/x/qIoI',
// editui: '/pages/resumedraft.action?draftId=555312',
// webui: '/spaces/SPACENAME/overview'
// }
// },
// type: 'global',
// permissions: [...],
// status: 'current',
// _expandable: {
// settings: '/rest/api/space/SPACENAME/settings',
// metadata: '',
// operations: '',
// lookAndFeel: '/rest/api/settings/lookandfeel?spaceKey=SPACENAME',
// identifiers: '',
// icon: '',
// theme: '/rest/api/space/SPACENAME/theme',
// history: ''
// },
// _links: {
// context: '/wiki',
// self: 'https://xxx.atlassian.net/wiki/rest/api/space/SPACENAME',
// collection: '/rest/api/space',
// webui: '/spaces/SPACENAME',
// base: 'https://xxx.atlassian.net/wiki'
// }
// }The algorithm for using the library:
client.<group>.<methodName>(parametersObject);Available groups:
- analytics
- audit
- content
- contentAttachments
- contentBody
- contentChildrenAndDescendants
- contentComments
- contentLabels
- contentMacroBody
- contentPermissions
- contentProperties
- contentRestrictions
- contentStates
- contentVersions
- contentWatches
- dynamicModules
- experimental
- group
- inlineTasks
- labelInfo
- longRunningTask
- relation
- search
- settings
- space
- spacePermissions
- spaceProperties
- spaceSettings
- template
- themes
- users
The name of the methods is the name of the endpoint in the group without spaces and in camelCase.
The parameters depend on the specific endpoint. For more information, see here.
apiPrefix config parameter
The apiPrefix parameter is used to specify the prefix for the API. For example, if you use the custom domain https://mydomain.atlassian.net/api for API.
Example of use:
import { ConfluenceClient } from 'confluence.js';
const client = new ConfluenceClient({
host: 'https://your-domain.atlassian.net',
apiPrefix: '/api',
});Decreasing Webpack bundle size
If you use Webpack and need to reduce the size of the assembly, you can create your client with only the groups you use.
import { BaseClient } from 'confluence.js';
import { Content } from 'confluence.js/api/content';
import { Space } from 'confluence.js/api/space';
export class CustomConfluenceClient extends BaseClient {
content = new Content(this);
space = new Space(this);
}Take a look at our other products
- Jira.js - A JavaScript / TypeScript wrapper for the JIRA REST API
- Trello.js - JavaScript / TypeScript library for Node.JS and browsers to easily interact with Atlassian Trello API
License
Distributed under the MIT License. See LICENSE for more information.