Asset Version
Asset Versions are specific instances of static files that you can host at a particular domain in an Environment.
The steps to create Assets are as follows:
-
Create an
Asset
-
Create an Asset Version
(this resource)
You will need the Asset Version SID that the create request returns to include this Asset in a Build.
Resource properties
sid
type: SID<ZN>
The unique string that we created to identify the Asset Version resource.
Pattern:
^ZN[0-9a-fA-F]{32}$
service_sid
type: SID<ZS>
The SID of the Service that the Asset Version resource is associated with.
Pattern:
^ZS[0-9a-fA-F]{32}$
asset_sid
type: SID<ZH>
The SID of the Asset resource that is the parent of the Asset Version.
Pattern:
^ZH[0-9a-fA-F]{32}$
path
type: string
The URL-friendly string by which the Asset Version can be referenced. It can be a maximum of 255 characters. All paths begin with a forward slash ('/'). If an Asset Version creation request is submitted with a path not containing a leading slash, the path will automatically be prepended with one.
visibility
type: enum<string>
The access control that determines how the Asset Version resource can be accessed. Can be: public
, protected
, or private
.
Possible values:
public
private
protected
date_created
type: string<date-time>
url
type: string<uri>
The absolute URL of the Asset Version resource.
Create an Asset Version resource to upload a file to an Asset resource. The Asset Version resource is created by making a POST
request to a dedicated URL—a URL that is different from the URL used to read and fetch the resource.
https://serverless-upload.twilio.com/v1/Services/ {ServiceSid}/Assets/{AssetSid}/Versions
The following example creates an Asset Version resource using the language of your choice (or curl) and an external file, my-asset.png
, which contains the Asset to upload.
_36const fs = require('fs');
_36// Before running this code, install "form-data" and "axios" using `npm install form-data axios`
_36const FormData = require('form-data');
_36const axios = require('axios');
_36// Find your Account SID and Auth Token at twilio.com/console
_36// and set the environment variables. See http://twil.io/secure
_36const apiKey = process.env.TWILIO_API_KEY;
_36const apiSecret = process.env.TWILIO_API_SECRET;
_36const serviceSid = 'ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
_36const assetSid = 'ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
_36const serviceUrl = `https://serverless-upload.twilio.com/v1/Services/${serviceSid}`;
_36const uploadUrl = `${serviceUrl}/Assets/${assetSid}/Versions`;
_36const form = new FormData();
_36form.append('Path', '/my-asset.png');
_36form.append('Visibility', 'public');
_36form.append('Content', fs.createReadStream('my-asset.png'), {
_36 contentType: 'image/png',
_36// Create a new Asset Version
_36 .post(uploadUrl, form, {
_36 headers: form.getHeaders(),
_36 .then((response) => {
_36 const newVersionSid = response.data.sid;
_36 console.log(newVersionSid);
Warning
Note that the Serverless upload endpoint is on a different subdomain from the rest of the Serverless API (serverless-upload.twilio.com
instead of serverless.twilio.com
), and is not supported by the Twilio Helper Libraries at this time.
The create
action accepts these parameters:
Parameter | Description |
---|
Content | The asset to upload. |
AssetSid | The SID of the Asset resource to upload this asset to. |
Path | The path to assign the asset. Must be URL Friendly, without fragments, and ;,?:@+&$()' " are disallowed). |
ServiceSid | The SID of the Asset's Service. |
Visibility | The visibility of the asset. Can be public , protected , or private . |
GET https://serverless.twilio.com/v1/Services/{ServiceSid}/Assets/{AssetSid}/Versions/{Sid}
URI parameters
ServiceSid
type: string
The SID of the Service to fetch the Asset Version resource from.
AssetSid
type: SID<ZH>
The SID of the Asset resource that is the parent of the Asset Version resource to fetch.
Pattern:
^ZH[0-9a-fA-F]{32}$
Sid
type: SID<ZN>
The SID of the Asset Version resource to fetch.
Pattern:
^ZN[0-9a-fA-F]{32}$
_12// Download the helper library from https://www.twilio.com/docs/node/install
_12// Find your Account SID and Auth Token at twilio.com/console
_12// and set the environment variables. See http://twil.io/secure
_12const accountSid = process.env.TWILIO_ACCOUNT_SID;
_12const authToken = process.env.TWILIO_AUTH_TOKEN;
_12const client = require('twilio')(accountSid, authToken);
_12client.serverless.v1.services('ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_12 .assets('ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_12 .assetVersions('ZNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_12 .then(asset_version => console.log(asset_version.sid));
_10 "sid": "ZNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_10 "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_10 "service_sid": "ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_10 "asset_sid": "ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
_10 "path": "/test-path",
_10 "visibility": "public",
_10 "date_created": "2018-11-10T20:00:00Z",
_10 "url": "https://serverless.twilio.com/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets/ZH00000000000000000000000000000000/Versions/ZN00000000000000000000000000000000"
GET https://serverless.twilio.com/v1/Services/{ServiceSid}/Assets/{AssetSid}/Versions
URI parameters
ServiceSid
type: string
The SID of the Service to read the Asset Version resource from.
AssetSid
type: SID<ZH>
The SID of the Asset resource that is the parent of the Asset Version resources to read.
Pattern:
^ZH[0-9a-fA-F]{32}$
PageSize
type: integer
How many resources to return in each list page. The default is 50, and the maximum is 1000.
Page
type: integer
The page index. This value is simply for client state.
PageToken
type: string
The page token. This is provided by the API.
_12// Download the helper library from https://www.twilio.com/docs/node/install
_12// Find your Account SID and Auth Token at twilio.com/console
_12// and set the environment variables. See http://twil.io/secure
_12const accountSid = process.env.TWILIO_ACCOUNT_SID;
_12const authToken = process.env.TWILIO_AUTH_TOKEN;
_12const client = require('twilio')(accountSid, authToken);
_12client.serverless.v1.services('ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_12 .assets('ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
_12 .then(assetVersions => assetVersions.forEach(a => console.log(a.sid)));
_12 "asset_versions": [],
_12 "first_page_url": "https://serverless.twilio.com/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets/ZH00000000000000000000000000000000/Versions?PageSize=50&Page=0",
_12 "key": "asset_versions",
_12 "next_page_url": "https://serverless.twilio.com/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets/ZH00000000000000000000000000000000/Versions?PageSize=50&Page=1",
_12 "previous_page_url": "https://serverless.twilio.com/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets/ZH00000000000000000000000000000000/Versions?PageSize=50&Page=0",
_12 "url": "https://serverless.twilio.com/v1/Services/ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Assets/ZH00000000000000000000000000000000/Versions?PageSize=50&Page=0"