@managed-api/confluence-cloud-v2-core
TypeScript icon, indicating that this package has built-in type declarations

2.1.0 • Public • Published

Managed API for Confluence Cloud

Managed API for Confluence Cloud is an API Client for Confluence Cloud by Adaptavist primarily designed for the use in ScriptRunner Connect. You can read more about Managed APIs here.

This is a runtime agnostic version of the Managed API (with core suffix) that makes it easy to port it to any runtime you may want to use this Managed API on.

Platform specific ports

Supported API calls

Porting to other runtimes

While the primary reason for creating Managed APIs was to use them in ScriptRunner Connect runtime, then you can easily port them to any runtime of your choosing.

You can do so by extending the *Core Managed API class where you'll be asked to provide implementation for getPlatformImplementation function. In this implementation you have to specify how to perform buffer encoding/decoding operations and how to perform HTTP calls:

{
    buffer: {
        encode(input: string): ArrayBuffer;
        decode(input: ArrayBuffer): string;
    },
    performHttpCall(request: Request): Promise<Response>
}

Here is an example how to create a Node port of the Managed API:

import { ConfluenceCloudApiCore } from "@managed-api/confluence-cloud-v2-core";
import { PlatformImplementation, Request, Response, Headers } from "@managed-api/commons-core";
import fetch from "node-fetch";

export class ConfluenceCloudApi extends ConfluenceCloudApiCore {
    constructor(private baseUrl: string, private authToken: string) {
        super();
    }

    protected getPlatformImplementation(): PlatformImplementation {
        return {
            buffer: {
                encode: (input) => Buffer.from(input, 'utf-8'),
                decode: (input) => Buffer.from(input).toString('utf-8')
            },
            performHttpCall: (request) => this.performHttpCall(request)
        };
    }
    
    private async performHttpCall(request: Request): Promise<Response> {
        const requestUrl = `${this.baseUrl}${request.url}`; // Substitute base URL
        request.headers.set('Authorization', `Basic ${this.authToken}`); // Substitute auth token
        const response = await fetch(requestUrl, {
            method: request.method,
            headers: request.headers as any,
            body: request.method.toLowerCase() !== 'get' ? Buffer.from((await request.arrayBuffer()) ?? new ArrayBuffer(0)) : undefined
        });

        const apiHeaders = new Headers();
        response.headers.forEach((value, key) => apiHeaders.append(key, value));

        const body = await response.arrayBuffer();

        return super.buildResponse(response.url, response.status, response.statusText, apiHeaders, body);
    }
}

Please note that the authentication handling details may not be accurate and serve as an example. If you wish to use these Managed APIs without having to concern yourself how to deal with and secure authentication details when working with APIs, then feel free to evaluate ScriptRunner Connect platform.

Contact

At this time Managed APIs are unlicensed and close sourced, but feel free to drop an email to eknoll@adaptavist.com for ideas, suggestions and improvements.

Changelog

2.1.0

  • Updated OpenApi Specification.

    • Added new fields include-labels, include-properties, include-operations, include-versions and include-version to Attachment.getAttachmentById.
    • Added new field purge toAttachment.deleteAttachment.
    • Added new field purge toCustomContent.deleteCustomContent.
    • Added new field version to Comment.Attachment.getComments.
    • Added new fields include-labels, include-properties, include-operations, include-versions, include-version and include-favorited-by-current-user-status to CustomContent.getCustomContentById.
    • Added new fields draft and purge to BlogPost.deleteBlogPost.
    • Added new fields draft and purge to Page.deletePage.
    • Added new field root-level to Page.createPage.
    • Added new fields include-labels, include-properties, include-operations, include-versions, include-version, include-likes, and include-favorited-by-current-user-status to Page.getPageById.
    • Added new fields favorited-by and not-favorited-by to Space.getSpaces.
    • Added new fields include-labels, include-properties, include-operationsand include-permissions to Space.getSpaceById.
    • Added new fields include-properties, include-operations, include-versions, include-version and include-likes to Comment.Footer.getCommentById.
    • Added new fields include-properties, include-operations, include-versions, include-version and include-likes to Comment.Inline.getCommentById.
    • Added new field body-format to Task.updateTask.
    • Removed deleted from status in BlogPost.updateBlogPost.
    • Added new field ownerId to Page.updatePage.
    • Attachment definition got changed to AttachmentSingle.
    • New properties in PageSingle definition.
    • New properties in PageBulk definition.
  • Added support for the following Comment.CustomContent method:

  • Added support for the following Whiteboard methods:

    • Create whiteboard that can be used as Whiteboard.createWhiteboard or All.getWhiteboard.
    • Get whiteboard by id that can be used as Whiteboard.getWhiteboardById or All.getWhiteboardById.
    • Delete whiteboard that can be used as Whiteboard.deleteWhiteboard or All.deleteWhiteboard.
  • Added support for the following Content.Property.Whiteboard methods:

  • Added support for the following Ancestor method:

  • Fixed following methods:

    • Get footer comments that can be used as Comment.Footer.getComments or All.getFooterComments.
    • updateComment that can be used as Comment.Footer.updateComment or All.updateFooterComment.
    • deleteComment that can be used as Comment.Footer.deleteComment or All.deleteFooterComment.
    • getCommentById that can be used as Comment.Inline.getCommentById or All.getInlineCommentById.
    • updateComment that can be used as Comment.Inline.updateComment or All.updateInlineComment.
    • deleteComment that can be used as Comment.Inline.deleteComment or All.deleteInlineComment.
  • The following methods are deprecated:

2.0.0

  • Breaking change: URL and query string parameters are now URL encoded, meaning if you encoded them explicitly before you have to remove your own encoding, otherwise they will get double encoded.

1.0.0

  • Added support for the following Attachment methods:

    • Get attachments that can be used as Attachment.getAttachments or All.getAttachments.
    • Get attachment by id that can be used as Attachment.getAttachmentById or All.getAttachmentByIds.
    • Delete attachment that can be used as Attachment.deleteAttachment or All.deleteAttachment.
  • Added support for the following Attachment.BlogPost method:

  • Added support for the following Attachment.CustomContent method:

  • Added support for the following Attachment.Label method:

  • Added support for the following Attachment.Page method:

  • Added support for the following Ancestor method:

  • Added support for the following BlogPost methods:

  • Added support for the following Children methods:

  • Added support for the following Comment.Attachment method:

  • Added support for the following Comment.Footer.Page method:

  • Added support for the following Comment.Inline.Page method:

  • Added support for the following Comment.Footer.BlogPost method:

  • Added support for the following Comment.Inline.BlogPost method:

  • Added support for the following Comment.Footer methods:

    • Get footer comments that can be used as Comment.Footer.getComments or All.getFooterComments.
    • Create footer comment that can be used as Comment.Footer.createComment or All.createFooterComment.
    • getCommentById that can be used as Comment.Footer.getCommentById or All.getFooterCommentById.
    • updateComment that can be used as Comment.Footer.updateComment or All.updateFooterComment.
    • deleteComment that can be used as Comment.Footer.deleteComment or All.deleteFooterComment.
    • Get children footer comments that can be used as Comment.Footer.getChildrenComments or All.getChildrenFooterComments.
  • Added support for the following Comment.Inline methods:

    • Get inline comments that can be used as Comment.Inline.getComments or All.getInlineComments.
    • Create inline comment that can be used as Comment.Inline.createComment or All.createInlineComment.
    • getCommentById that can be used as Comment.Inline.getCommentById or All.getInlineCommentById.
    • updateComment that can be used as Comment.Inline.updateComment or All.updateInlineComment.
    • deleteComment that can be used as Comment.Inline.deleteComment or All.deleteInlineComment.
    • Get children inline comments that can be used as Comment.Inline.getChildrenComments or All.getChildrenInlineComments.
  • Added support for the following Content method:

  • Added support for the following Content.Property.Attachment methods:

  • Added support for the following Content.Property.BlogPost methods:

  • Added support for the following Content.Property.CustomContent methods:

  • Added support for the following Content.Property.Page methods:

  • Added support for the following Content.Property.Comment methods:

  • Added support for the following CustomContent.BlogPost method:

  • Added support for the following CustomContent methods:

  • Added support for the following CustomContent.Page method:

  • Added support for the following CustomContent.Space method:

  • Added support for the following Label.Attachment method:

  • Added support for the following Label.BlogPost method:

  • Added support for the following Label.CustomContent method:

  • Added support for the following Label.Page method:

  • Added support for the following Label method:

    • Get labels that can be used as Label.getLabels or All.getLabels.
  • Added support for the following Label.Space methods:

  • Added support for the following Like.BlogPost methods:

  • Added support for the following Like.Page methods:

  • Added support for the following Like.Comment.Footer methods:

  • Added support for the following Like.Comment.Inline methods:

  • Added support for the following Page methods:

    • Get pages for label that can be used as Page.getPagesForLabel or All.getPagesForLabel.
    • Get pages that can be used as Page.getPages or All.getPages.
    • Create page that can be used as Page.createPage or All.createPage.
    • Get page by id that can be used as Page.getPageById or All.getPageById.
    • Update page that can be used as Page.updatePage or All.updatePage.
    • Delete page that can be used as Page.deletePage or All.deletePage.
    • Get pages in space that can be used as Page.getPagesInSpace or All.getPagesInSpace.
  • Added support for the following Space methods:

    • Get spaces that can be used as Space.getSpaces or All.getSpaces.
    • Get space by id that can be used as Space.getSpaceById or All.getSpaceById.
  • Added support for the following Space.Property methods:

  • Added support for the following Task methods:

    • Get tasks that can be used as Task.getTasks or All.getTasks.
    • Get task by id that can be used as Task.getTaskById or All.getTaskById.
    • Update task that can be used as Task.updateTask or All.updateTask.
  • Added support for the following Version.Attachment methods:

  • Added support for the following Version.BlogPost methods:

  • Added support for the following Version.Page methods:

  • Added support for the following Version.CustomContent methods:

  • Added support for the following Version.Comment.Footer methods:

  • Added support for the following Version.Comment.Inline methods:

  • Added support for the following V1.Content methods:

  • Added support for the following V1.Content.Attachment methods:

    • Create or update attachment that can be used as V1.Content.Attachment.createOrUpdateAttachment or All.createOrUpdateContentAttachment.
    • Create attachment that can be used as V1.Content.Attachment.createAttachment or All.createContentAttachment.
    • Update attachment properties that can be used as V1.Content.Attachment.updateAttachmentProperties or All.updateContentAttachmentProperties.
    • Update attachment data that can be used as V1.Content.Attachment.updateAttachmentData or All.updateContentAttachmentData.
  • Added support for the following V1.Content.Body method:

  • Added support for the following V1.Content.Move method:

  • Added support for the following V1.Content.Descendant methods:

  • Added support for the following V1.Content.Copy methods:

    • Copy page hierarchy that can be used as V1.Content.Copy.copyPageHierarchy or All.copyPageHierarchy.
    • Copy single page that can be used as V1.Content.Copy.copySinglePage or All.copySinglePage.
  • Added support for the following V1.Content.Body.Macro method:

  • Added support for the following V1.Content.Label methods:

  • Added support for the following V1.Content.Restriction methods:

    • Get restrictions that can be used as V1.Content.Restriction.getRestrictions or All.getContentRestrictions.
    • Update restrictions that can be used as V1.Content.Restriction.updateRestrictions or All.updateContentRestrictions.
    • Add restrictions that can be used as V1.Content.Restriction.addRestrictions or All.addContentRestrictions.
    • Delete restrictions that can be used as V1.Content.Restriction.deleteRestrictions or All.deleteContentRestrictions.
    • Get restrictions by operation that can be used as V1.Content.Restriction.getRestrictionsByOperation or All.getContentRestrictionsByOperation.
    • Get restrictions for operation that can be used as V1.Content.Restriction.getRestrictionsForOperation or All.getContentRestrictionsForOperation.
  • Added support for the following V1.Content.Restriction.Group methods:

  • Added support for the following V1.Content.Version methods:

  • Added support for the following V1.Watcher methods:

  • Added support for the following V1.Watcher.Content methods:

  • Added support for the following V1.Watcher.Label methods:

    • Get label watch status that can be used as V1.Watcher.Label.getWatcherStatus or All.getLabelWatcherStatus.
    • Add label watcher that can be used as V1.Watcher.Label.addWatcher or All.addLabelWatcher.
    • Remove label watcher that can be used as V1.Watcher.Label.removeWatcher or All.removeLabelWatcher.
  • Added support for the following V1.Watcher.Space methods:

    • Get space watch status that can be used as V1.Watcher.Space.getWatcherStatus or All.getSpaceWatcherStatus.
    • Add space watcher that can be used as V1.Watcher.Space.addWatcher or All.addSpaceWatcher.
    • Remove space watch that can be used as V1.Watcher.Space.removeWatcher or All.removeSpaceWatcher.
  • Added support for the following V1.UserGroup methods:

    • Get groups that can be used as V1.UserGroup.getUserGroups or All.getUserGroups.
    • Create new user group that can be used as V1.UserGroup.createUserGroup or All.createUserGroup.
    • Delete user group that can be used as V1.UserGroup.deleteUserGroupById or All.deleteUserGroupById.
    • Get group that can be used as V1.UserGroup.getUserGroupById or All.getUserGroupById.
  • Added support for the following V1.UserGroup.Member methods:

  • Added support for the following V1.Label method:

  • Added support for the following V1.LongRunningTask methods:

    • Get long-running tasks that can be used as V1.LongRunningTask.getLongRunningTasks or All.getLongRunningTasks.
    • Get long-running task that can be used as V1.LongRunningTask.getLongRunningTask or All.getLongRunningTask.
  • Added support for the following V1.Relation methods:

  • Added support for the following V1.Search methods:

    • Search content that can be used as V1.Search.searchContent or All.searchContent.
    • Search users that can be used as V1.Search.searchUsers or All.searchUsers.
  • Added support for the following V1.Setting methods:

  • Added support for the following V1.Space methods:

    • Create space that can be used as V1.Space.createSpace or All.createSpace.
    • Update space that can be used as V1.Space.updateSpace or All.updateSpace.
    • Delete space that can be used as V1.Space.deleteSpace or All.deleteSpace.
  • Added support for the following V1.Space.Private method:

  • Added support for the following V1.Space.Setting methods:

    • Get space settings that can be used as V1.Space.Setting.getSettings or All.getSpaceSettings.
    • Update space settings that can be used as V1.Space.Setting.updateSettings or All.updateSpaceSettings.
  • Added support for the following V1.Template methods:

  • Added support for the following V1.Theme methods:

    • Get themes that can be used as V1.Theme.getThemes or All.getThemes.
    • Get global theme that can be used as V1.Theme.getGlobalTheme or All.getGlobalTheme.
    • Get theme that can be used as V1.Theme.getTheme or All.getTheme.
    • Get space theme that can be used as V1.Theme.getSpaceTheme or All.getSpaceTheme.
    • Set space theme that can be used as V1.Theme.setSpaceTheme or All.setSpaceTheme.
    • Reset space theme that can be used as V1.Theme.resetSpaceTheme or All.resetSpaceTheme.
  • Added support for the following V1.User methods:

Copyright Adaptavist 2024 (c) All rights reserved

Readme

Keywords

none

Package Sidebar

Install

npm i @managed-api/confluence-cloud-v2-core

Weekly Downloads

49

Version

2.1.0

License

UNLICENSED

Unpacked Size

1.84 MB

Total Files

1358

Last publish

Collaborators

  • ratwal
  • skitson
  • mtapsi
  • jtrumm
  • theshumanator
  • ssarapov
  • adaptavist-horizon-dev
  • jsaks
  • eknoll