node package manager
Painless code sharing. npm Orgs help your team discover, share, and reuse code. Create a free org ยป


HAPI Assets Upload

This script populates a HAPI instance with assets taken from a specified folder in the form of images. The asset images need to follow a specific naming convention, which defines all the attributes for the assets. (see below for explanation)

Before starting using the script make sure that you have all the details of the HAPI instance you want to interact with, and also the details of the amazon s3 bucket you want to use as storage.

HAPI details needed:

s3 details needed:

  • bucket name (e.g. huzutech-sv-test)
  • s3Secret (e.g. 1ttggTSpwJ5Mhy64mh2oGF0LxuF056HO5JScB/gG)


You need coffee-script 1.6.x installed globally on your machine:

npm install -g coffee-script@1.6.x

then install the scripts with

npm install -g hapi.assetsupload


Make sure there is a client application defined in HAPI called AssetsUploadScript. You can verify that through the CMS. You will need to take note of its client id and secret as the script will ask for them in the setup phase.

If there is no client application called AssetsUploadScript in your HAPI instance, create a new one with that name, type Server and set the redirectUrl to http://localhost/.


First thing you need to setup the script with all the credentials needed to communicate with a HAPI instance and uploade files to a S3 Bucket.

Run hapi.assetsupload setup

It will ask you a series of questions regarding the HAPI instance you want to interact with and the S3 bucket you want to use.

Running the script

Once you've setup your credentials, you can run the script.

hapi.assetsupload upload <path to assets folder>

the path can be absolute or relative to the folder you are running the script from.

Asset images naming convention

The script will process only .png, .jpeg and .jpg files.

The file names need to follow this structure:

For thumbnail images:



In this example the process will interpret the file as:

  • GOODLABEL = princess
  • ASSETLABEL = promqueen

And it will know to treat it as a thumbnail.

For layers:


Note that the last part of the file name for layers, defines the layer's properties (index and colour) which are separated with a - (dash) instead of an _ (underscore).


In this example the process will interpret the file as:

  • GOODLABEL = princess
  • ASSETLABEL = promqueen
  • LAYERLABEL = image
  • INDEX = 0
  • COLOUR = 0

LAYERLABEL needs to be unique within each representation.

For example if you try and upload the following two files:

princess_head_promqueen_standard_image-00-0.png princess_head_promqueen_standard_image-01-1.png

the script will create only one layer called 'image', keeping only the image and details of the last processed.

INDEX can only be an integer value which defines the stacking order of the layer. It can have n leading '0', for example '001'.

Possible values for COLOUR are:

  • 0 = none
  • 1 = primary
  • 2 = secondary

As for LAYER it can have n leading '0', for example '001'.

Assets Folder structure

Assets can be placed in nested folders, the script will walk through all of them.