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:
You will need the Asset Version SID that the create request returns to include this Asset in a Build.
The unique string that we created to identify the Asset Version resource.
^ZN[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The SID of the Account that created the Asset Version resource.
^AC[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The SID of the Service that the Asset Version resource is associated with.
^ZS[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The SID of the Asset resource that is the parent of the Asset Version.
^ZH[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
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.
The access control that determines how the Asset Version resource can be accessed. Can be: public
, protected
, or private
.
public
private
protected
The date and time in GMT when the Asset Version resource was created specified in ISO 8601 format.
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.
1const fs = require('fs');2// Before running this code, install "form-data" and "axios" using `npm install form-data axios`3const FormData = require('form-data');4const axios = require('axios');56// Find your Account SID and Auth Token at twilio.com/console7// and set the environment variables. See http://twil.io/secure8const apiKey = process.env.TWILIO_API_KEY;9const apiSecret = process.env.TWILIO_API_SECRET;1011const serviceSid = 'ZSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';12const assetSid = 'ZHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';1314const serviceUrl = `https://serverless-upload.twilio.com/v1/Services/${serviceSid}`;15const uploadUrl = `${serviceUrl}/Assets/${assetSid}/Versions`;1617const form = new FormData();18form.append('Path', '/my-asset.png');19form.append('Visibility', 'public');20form.append('Content', fs.createReadStream('my-asset.png'), {21contentType: 'image/png',22});2324// Create a new Asset Version25axios26.post(uploadUrl, form, {27auth: {28username: apiKey,29password: apiSecret,30},31headers: form.getHeaders(),32})33.then((response) => {34const newVersionSid = response.data.sid;35console.log(newVersionSid);36});
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}
The SID of the Asset resource that is the parent of the Asset Version resource to fetch.
^ZH[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
The SID of the Asset Version resource to fetch.
^ZN[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function fetchAssetVersion() {11const assetVersion = await client.serverless.v112.services("ServiceSid")13.assets("ZHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")14.assetVersions("ZNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")15.fetch();1617console.log(assetVersion.sid);18}1920fetchAssetVersion();
1{2"sid": "ZNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",3"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",4"service_sid": "ServiceSid",5"asset_sid": "ZHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",6"path": "/test-path",7"visibility": "public",8"date_created": "2018-11-10T20:00:00Z",9"url": "https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets/ZH00000000000000000000000000000000/Versions/ZN00000000000000000000000000000000"10}
GET https://serverless.twilio.com/v1/Services/{ServiceSid}/Assets/{AssetSid}/Versions
The SID of the Asset resource that is the parent of the Asset Version resources to read.
^ZH[0-9a-fA-F]{32}$
Min length: 34
Max length: 34
How many resources to return in each list page. The default is 50, and the maximum is 1000.
1
Maximum: 1000
The page token. This is provided by the API.
1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function listAssetVersion() {11const assetVersions = await client.serverless.v112.services("ServiceSid")13.assets("ZHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")14.assetVersions.list({ limit: 20 });1516assetVersions.forEach((a) => console.log(a.sid));17}1819listAssetVersion();
1{2"asset_versions": [],3"meta": {4"first_page_url": "https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets/ZH00000000000000000000000000000000/Versions?PageSize=50&Page=0",5"key": "asset_versions",6"next_page_url": null,7"page": 0,8"page_size": 50,9"previous_page_url": null,10"url": "https://serverless.twilio.com/v1/Services/ZS00000000000000000000000000000000/Assets/ZH00000000000000000000000000000000/Versions?PageSize=50&Page=0"11}12}