Examples

You can script Approvals for Confluence using Java/Groovy with a script-running tool.

Page Approvals

Get Page Approval

Get the Page Approval as an ApprovalJson and members as ApprovalMemberJson's.

Get Page Approval by Page ID and Page Version

import com.onresolve.scriptrunner.runner.customisers.WithPlugin import com.onresolve.scriptrunner.runner.customisers.PluginModule; import com.atlassian.confluence.user.AuthenticatedUserThreadLocal; import com.atlassian.confluence.user.ConfluenceUser; import co.uk.automationconsultants.approvals.api.ApprovalPluginComponent; import co.uk.automationconsultants.approvals.json.ApprovalJson; import co.uk.automationconsultants.approvals.json.ApprovalMemberJson;   @WithPlugin("co.uk.automationconsultants.approvals.approvals")   @PluginModule ApprovalPluginComponent approvalPluginComponent;   // Get User ConfluenceUser user = AuthenticatedUserThreadLocal.get()   // Get Page Approval for Page with ID '65547' and Version '10' ApprovalJson approval = approvalPluginComponent.getPageApproval(user, 65547, 10);   if(approval != null) {     // Does Exist, get some details     String creatorUserKey = approval.getCreatorUsername(); // Ignore name - it's User Key     Long pageId = approval.getPageId();     String macroId = approval.getMacroId();     String title = approval.getTitle();     Boolean sendRequestNotifications = approval.isRequestNotifications();     Boolean sendStatusNotifications = approval.isStatusNotifications();     Boolean expireOnEdit = approval.getExpireOnEdit();     Date expiryDate = approval.getExpiryDate();     Integer quorumSize = approval.getQuorumSize();     for(ApprovalMemberJson member : approval.getMembers()) {         String userKey = member.getUserKey();         String status = member.getStatus(); // "pending", "approved", "rejected" or "expired"         Date date = member.getDate();     }     Integer version = approval.getVersion();     String status = approval.getStatus();     String pageTitle = approval.getPageTitle();     Date createdDate = approval.getCreated();     Date updatedDate = approval.getUpdated(); } else {     // Doesn't Exist }

Macro Approvals

Get Macro Approval

Get the Macro Approval Details and Status as an ApprovalJson with ApprovalMemberJson's contained in the 'members' property (getMembers());

Get Macro Approval by Page ID and Page Version

import com.onresolve.scriptrunner.runner.customisers.WithPlugin import com.onresolve.scriptrunner.runner.customisers.PluginModule; import com.atlassian.confluence.user.AuthenticatedUserThreadLocal; import com.atlassian.confluence.user.ConfluenceUser; import co.uk.automationconsultants.approvals.api.ApprovalPluginComponent; import co.uk.automationconsultants.approvals.json.ApprovalJson; import co.uk.automationconsultants.approvals.json.ApprovalMemberJson; import co.uk.automationconsultants.approvals.service.exception.*;   @WithPlugin("co.uk.automationconsultants.approvals.approvals")   @PluginModule ApprovalPluginComponent approvalPluginComponent;   // Get User ConfluenceUser user = AuthenticatedUserThreadLocal.get()   // Get Macro Approval for Macro with Page ID '65547', Page Version '4', UUID "afi8y-f2f2-..." and Macro ID "bfi8y-f2f2-..." try {     ApprovalJson approval = approvalPluginComponent.getMacroApproval(user, 65547L, "afi8y-f2f2-...", "bfi8y-f2f2-...", 4);       if(approval != null) {         // Does Exist, get some details         String creatorUserKey = approval.getCreatorUsername(); // Ignore name - it's User Key         Long pageId = approval.getPageId();         String macroId = approval.getMacroId();         String title = approval.getTitle();         Boolean sendRequestNotifications = approval.isRequestNotifications();         Boolean sendStatusNotifications = approval.isStatusNotifications();         Boolean expireOnEdit = approval.getExpireOnEdit();         Date expiryDate = approval.getExpiryDate();         Integer quorumSize = approval.getQuorumSize();         for(ApprovalMemberJson member : approval.getMembers()) {             String userKey = member.getUserKey();             String status = member.getStatus();             Date date = member.getDate();         }         Integer version = approval.getVersion();         String status = approval.getStatus();         String pageTitle = approval.getPageTitle();         Date createdDate = approval.getCreated();         Date updatedDate = approval.getUpdated();     } else {         // Doesn't Exist     } } catch(NoPageException | NoSpacePermissionException | NoPagePermissionException | NoPageVersionException | NoApprovalException e) {     // An error has occurred - see Message or Class of Exception for more information     e.getMessage(); }