\\
Box supports external integration through an HTTP-based REST API.\\
\\
__Restriction:__\\
-REST API does not support resume on upload\\
-No mdtm(File modification time) changes.\\
-REST API does not support streaming on upload. At Large file (greater then 25 MB) upload: CrushFTP stores the uploaded file temporary at CrushFTP install folder/box/<<box username>>\\
\\
\\
Create new custom app at [https://app.box.com/developers/console].\\
[attachments|box_create_custom_app.png]\\
\\ 
CrushFTP use __JWT Authentication__ method ([https://developer.box.com/guides/authentication/jwt/]), and not OAuth2. Select JWT based authentication.\\
\\
[attachments|box_jwt_auth.png]\\
\\
Check the "Make API calls using the as-user header" checkbox at __Configuration -> Advanced Features__\\
\\
[attachments|box_as_user_header.png]\\
\\
Generate the RSA keypair for JWT at __Configuration -> Add and Manage Public Keys__\\
\\
[attachments|box_rsa_keypair.png]\\
\\
Save your app changes and dwonload JSON file from __Configuration -> App Settings__\\
The JSON file should contains:
{{{
{
  "boxAppSettings": {
    "clientID": "ogXXXXXXXXXXXXXXXX",
    "clientSecret": "laAXXXXXXXXXXXX",
    "appAuth": {
      "publicKeyID": "cgXXXXXXXXX",
      "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY-----\nXXXXXXXXXXXXXXXXXXXXXnblc=\n-----END ENCRYPTED PRIVATE KEY-----\n",
      "passphrase": "aXXXXXXXXXXXXXXXXXXXXe"
    }
  },
  "enterpriseID": "2XXXXXXXXX5"
}
}}}
\\
__Configuration__ -> On CrushFTP at remote connection settings provide the following:\\
\\
User name : - box login username\\
Password: - "clientSecret" from the JSON config file\\
Client Id: - "clientID" from the JSON config file\\
Enterprise Id: - "enterpriseID" from the JSON config file\\
Public Key Id: - "publicKeyID" from the JSON config file\\
Private Key: - "privateKey" from the JSON config file\\
\\
[attachments|box_vfs_settings.png]\\
\\