Box File Utilities

Overview

Provides Smart Services and custom functions to integrate Appian with Box document management

Key Features & Functionality

Custom Functions

  • Create JSON Web Token (JWT) - createtoken() provides the user with a JWT that can be used for up to 60 seconds as authentication with the Box “token” API
  • Construct URL Custom Function - constructboxurl() expression function facilitates the creation of a servlet download link
  • Generate Box URL - generateboxurl() calls box url and intercepts the redirect url. It requires a valid Client Credentials Grant authorization token.

Smart Services

  • File Upload - after obtaining a JWT, this smart service uses the access token and calls the file upload API passing in the contents of a provided Appian Document
  • File Download to Appian - this smart service can download a file from Box and store it in a provided Appian Knowledge Center or Folder
    Servlet
  • File Download - downloads a file directly to the browser for the user to view/save to their computer. For security reasons most of the parameters passed to the servlet are obfuscated. Use the "constuctboxurl" function to create a URL to access the servlet securely.

Please see the Box File Utilities guide included with the download for complete setup and usage instructions.

Anonymous
  • Hi, I want to create Folder in Box by using this plug-in but there is no feature for this? May I know is there any feasibility to do this?

  • Hi, we have upgraded the plugin from version 1.1 to 1.3 and we started having issues with the BoxFileDownloadServlet. From our logs we are getting the following error:

    com.appiancorp.ap2.WrapFilter - Root cause:
    java.lang.NoClassDefFoundError: Could not initialize class org.apache.tika.mime.MimeTypesReader
    at org.apache.tika.mime.MimeTypesFactory.create(MimeTypesFactory.java:71)
    at org.apache.tika.mime.MimeTypesFactory.create(MimeTypesFactory.java:102)
    at org.apache.tika.mime.MimeTypesFactory.create(MimeTypesFactory.java:191)
    at org.apache.tika.mime.MimeTypes.getDefaultMimeTypes(MimeTypes.java:155)
    at org.apache.tika.config.TikaConfig.getDefaultMimeTypes(TikaConfig.java:260)
    at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:219)
    at org.apache.tika.config.TikaConfig.getDefaultConfig(TikaConfig.java:330)
    at org.apache.tika.Tika.<init>(Tika.java:119)
    at com.appiancs.plugins.boxFileUtilities.servlet.BoxFileDownloadServlet.doGet(BoxFileDownloadServlet.java:144)

    We are running Appian 22.1 but also encountered this issue in 21.4. 

    Do you have any help/ideas where to proceed from here?

    Thanks!

  • v1.3.0 Release Notes
    • Added Function generateboxurl
  • v1.2.0 Release Notes
    • Updated JAR with missing property files from last submission
  • v1.2.0 Release Notes
    • Updated with latest versions of dependent libraries
  • I'm currently working on an on prem installation that is making use of an older version of this plugin. I'm waiting to get access to the folders I need to install the latest version, but wanted to ask this question, just in case the upgrade doesn't solve the issue. I've followed all the steps in the guide, but can't seem to generate a JWT token. Based on what was sent to me in the logs, the issue is with the private key file as it's generating the following error messages:

    Could not reconstruct the private key: java.security.InvalidKeyException: IOException : DerInputStream.getLength(): lengthTag=70, too big.
    ERROR com.appiancorp.ps.plugins.boxFileUtilities.jwt.CreateJWT - Error creating JWT
    com.auth0.jwt.exceptions.SignatureGenerationException: The Token's Signature couldn't be generated when signing using the Algorithm: SHA256withRSA

    Is this due to using an older version of the plugin?

    Thanks!

  • Hi,
    Assuming 

    that you verified your JWT token, you can now use that to generate Access token that you can use to manipulate data on the box account.

    1. You will need to create an Integration smart service, which queries the data with a post request. The curl of thre request as follows.
    curl -X POST \
    
    api.box.com/.../token \
    
    -H 'Content-Type: application/x-www-form-urlencoded' \
    
    -H 'Host: api.box.com' \
    
    -d 'grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&client_id=ENTER_JWT_TOKEN_HERE'
    
    1. Once you get the response, you want to grab the following value result.body.access_token
    2. In your smart service Node, open Data and wherever it asks for "token", you want to pass the value received from Accesstoken

    This should enable you to download the files.

  • Hello,

    I am trying to get the Box File Upload smart service to work properly.  I configured my BOX application exactly how it was done in the instructions, and was able to generate an access token using createtoken(). 
    However, upon running that file upload node, nothing happens. Inspecting the system logs yeilds an Error 401 with a Null response from box.

    Do you have any help/ideas where to proceed from here?

  • Hi , I've updated the download packaged to include the guide.