npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

confluence.js

v1.7.4

Published

confluence.js is a powerful Node.JS/Browser module that allows you to interact with the Confluence API very easily

Downloads

19,330

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 10.0.0 or newer is required.

Install with the npm:

npm install confluence.js

Install with the yarn:

yarn add confluence.js

Usage

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

Basic authentication allows you to log in with credentials. You can use username and password, but this login method is not supported in the online version, and most standalone versions, so it's better to release API Token, read how to do it here, and use it together with email.

Username and password example:

import { ConfluenceClient } from 'confluence.js';

const client = new ConfluenceClient({
  host: 'https://your-domain.atlassian.net',
  authentication: {
    basic: {
      username: 'YOUR_USERNAME',
      password: 'YOUR_PASSWORD',
    },
  },
});

Email and API Token example:

import { ConfluenceClient } from 'confluence.js';

const client = new ConfluenceClient({
  host: 'https://your-domain.atlassian.net',
  authentication: {
    basic: {
      email: '[email protected]',
      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,
    },
  },
});
Personal access token
import { ConfluenceClient } from 'confluence.js';

const client = new ConfluenceClient({
  host: 'https://your-domain.atlassian.net',
  authentication: {
    personalAccessToken: 'secrectPAT',
  },
});

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:

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 { Api } from 'confluence.js';

export class CustomConfluenceClient extends BaseClient {
  content = new Api.Content(this);
  space = new Api.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.