Box Skills Payload
Box Skills Payload
When a new file is uploaded, copied, or moved to a folder monitored by a Skills app, the invocation URL that was specified during application setup and authentication will receive an event payload from Box.
The event payload will contain all information needed to read in the content of the uploaded file to send to a processing system, such as a machine learning system, and to write metadata back to the file once the processing system has completed.
Example payload and reference
Access Tokens
Every Skills payload includes a set of Access Tokens that can be used to access the file that triggered the event.
{
...
"token": {
"write": {
"access_token": "c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ",
"expires_in": 1540924150,
"restricted_to": ...,
"token_type": "bearer"
},
"read": {
"access_token": "Z3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQc3FIOG9vSGV4VHo4QzAyg5T1JvNnJo",
"expires_in": 1540924150,
"restricted_to": ...,
"token_type": "bearer"
}
},
...
}
The token.write.access_token
can be used to write metadata to the file, while
the token.read.access_token
can be only used to read the file content. The
read-only token is useful when creating a download URL for the file which can
then be shared with other services.
Downloadable file URL
Many machine learning services support directly passing a file URL to that
service for processing. To create a download URL for a Box file, you will need
to parse the token.read.access_token
as well as the source.id
from the event
payload.
{
...
"source": {
"type": "file",
"id": 12345,
},
"token": {
...
"read": {
"access_token": "Z3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQc3FIOG9vSGV4VHo4QzAyg5T1JvNnJo",
"expires_in": 1540924150,
"restricted_to": ...,
"token_type": "bearer"
}
},
...
}
The download URL for a file can be constructed as follows.
https://api.box.com/2.0/files/{source.id}/content?access_token={token.read.access_token}
In our example, this URL would be as follows.
https://api.box.com/2.0/files/12345/content?access_token=Z3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQc3FIOG9vSGV4VHo4QzAyg5T1JvNnJo