Secured Content Storage Service¶
Summary¶
File storage management, upload and retrieval service.
This service is natively used by: - TSDB (timeseries database) service to export archived files. - Device2 (device connectivity) to save file uploaded by devices.
In IoT-connector, content service files are also available for device to be securely downloaded.
Operations
Name | Tag | Summary |
---|---|---|
content.archive() | Archive time series data | |
content.clear() | Delete all content | |
content.delete() | Delete content | |
content.deleteMulti() | Delete multiple files | |
content.download() | Download URL for content | |
content.downloadAll() | Download all content in this context | |
content.info() | Get information about uploaded content | |
content.list() | List uploaded content | |
content.upload() | Upload URL for content |
Events
Name | Summary |
---|---|
event | Files changed |
Configuration parameters¶
Name | Type | Description |
---|---|---|
retention_policy | [ object ] | Retention policy to delete files |
retention_policy[].ttl | ^[0-9]+[dy]$ | Time to live, should be days or years, eg: 1d, 30d |
retention_policy[].name | string | The name of this policy |
retention_policy[].prefix | string | The prefix to match, if empty, the policy will apply to all |
Operations¶
archive¶
Description
Append a line of time series data to the next archive file.
Arguments
Name | Type | Description |
---|---|---|
options | object | Options specifying the data serializer. |
options.serializer | "tsdb_to_csv" | The serializer to be used on the data passed to the archive API. Currently, only "tsdb_to_csv" is supported. |
datapoints | [ object ] | List of data points. |
datapoints[].ts | integer*, *string | Unix timestamp in microseconds used as the write time for given data point. Supported units: u (microseconds), ms (milliseconds), s (seconds) e.g. 1472547546000000u, 1472547546000ms, 1472547546s, 1472547546 Optional. If not provided, a server generated timestamp in microseconds will be used. |
datapoints[].tags | object | Pairs of tag names and values (only text supported). Maximum number of tags associated with a single datapoint is 20. |
datapoints[].metrics | object | Pairs of metric names and values. Maximum number of metrics in a single write is 100. |
Responses
-
Returns
nil
for The provided time series data has been successfully buffered for archival. -
Returns
{object}
when The provided time series data is invalid.Error information
{object}
Name Type Description type string The error message's type message string The associated error message
clear¶
Description
Deletes all the content for the given context/solution
Responses
-
Returns
{[ object ]}
for An array of the ids of the deleted content itemsName Type Description id string The id of the content item -
Returns
{object}
when An error occurredError information
{object}
Name Type Description type string The error message's type message string The associated error message
Example
response.message = Content.clear()
delete¶
Description
Delete the given content item
Arguments
Name | Type | Description |
---|---|---|
id | string | The content unique ID |
Responses
-
Returns
{object}
when The content item was deletedThe content item id
{object}
Name Type Description id string The id of the content item -
Returns
{object}
when An error occurredError information
{object}
Name Type Description type string The error message's type message string The associated error message
Example
response.message = Content.delete({
id = 'image.png',
})
deleteMulti¶
Description
Delete multiple files in a solution
Arguments
Name | Type | Description |
---|---|---|
body | [ string ] | The list of files user wants to delete |
Responses
- Returns
nil
for Files deleted
Example
return Content.deleteMulti({"file1", "file2"})
download¶
Description
Get the download URL for the specified content item
Arguments
Name | Type | Description |
---|---|---|
id | string | The content unique ID |
expires_in | ^[0-9]+$ | Time duration in seconds or URL validity |
Responses
-
Returns
{object}
when The download URLHTTP information for client-side content downloads
{object}
Name Type Description id string The id of the content item url string The URL to use method "GET" The HTTP method to use with this URL -
Returns
{object}
when An error occurredError information
{object}
Name Type Description type string The error message's type message string The associated error message
Example
local filename = "image.png" local file_type = "image/png" local expires_in = 600
local presigned_download = Content.download({
id = filename,
type = file_type,
expires_in = expires_in,
})
-- Create curl download command local curl_command = "curl --output " .. filename .. " "
curl_command = curl_command .. presigned_download.url
return curl_command
downloadAll¶
Description
Get the download URL list for this context
Arguments
Name | Type | Description |
---|---|---|
limit | integer | Number of files to query |
cursor | string | Indicate the cursor when query files, normally returned by request |
expires_in | ^[0-9]+$ | Time duration in seconds or URL validity |
Responses
-
Returns
{[ object ]}
for The download URL listName Type Description id string The id of the content item url string The URL to use method "GET" The HTTP method to use with this URL -
Returns
{object}
when An error occurredError information
{object}
Name Type Description type string The error message's type message string The associated error message
Example
local opts = {
cursor = nil, -- specify the file id to start with
limit = 5,
expires_in = 600
}
-- This will return download urls for all files return Content.downloadAll(opts)
info¶
Description
Retrieve metadata and tags associated with uploaded content
Arguments
Name | Type | Description |
---|---|---|
id | string | The content unique ID |
Responses
-
Returns
{object}
when The content infoA content item's metadata and tags
{object}
Name Type Description id string The id of the content item tags object Tags and their values for the content item tags.* string Tag value type string The mime type of the content item length integer The content item's length in bytes last_modified string(dateTime) Last modified timestamp (formatted as ISO 8601) -
Returns
{object}
when An error occurredError information
{object}
Name Type Description type string The error message's type message string The associated error message
Example
response.message = Content.info({
id = 'image.png',
})
list¶
Description
Get the list of content items for the solution
Arguments
Name | Type | Description |
---|---|---|
full | boolean | Return complete content items instead of the id only. |
tags | string,object(json) | Tags Key/(string)values map. |
op | "AND", "OR" | The operation for tags filters logic. |
limit | integer | Approximate number of items to return (Default = 1000). |
recursive | boolean | Return items nested in sub-folders (keys containing '/') (Default = true). |
prefix | string | Only returns items starting with the given prefix. |
cursor | string | Pagination cursor: The last key returned by the previous page. |
Responses
-
Returns
{[ object ]}
for An array of content itemsName Type Description id string The id of the content item tags object Tags and their values for the content item tags.* string Tag value type string The mime type of the content item length integer The content item's length in bytes last_modified string(dateTime) Last modified timestamp (formatted as ISO 8601) -
Returns
{object}
when An error occurredError information
{object}
Name Type Description type string The error message's type message string The associated error message
Example
response.message = Content.list({
full = true
})
-- or
response.message = Content.list({
tags = to_json({mykey = "myvalue"})
})
-- or
response.message = Content.list({
tags = to_json({mykey = "myvalue", mykey2 = "myvalue2"}),
op = "OR"
})
upload¶
Description
Get the upload URL for the specified content item. The content ID will be generated if not supplied, and can be generated using the key, if provided
Arguments
Name | Type | Description |
---|---|---|
id | string | The content unique ID |
md5 | string | The md5 sum of the content to upload |
type | string | The content's type |
expires_in | ^[0-9]+$ | Time duration in seconds or URL validity |
tags | string,object(json) | Tags Key/(string)values map. |
Responses
-
Returns
{object}
when The upload URLHTTP information for client-side content uploads
{object}
Name Type Description id string The id of the content item url string The URL to use field string The name of the part containing upload data (must be LAST) inputs object Additional parts expected with the upload method "POST" The HTTP method to use with this URL enctype string The expected form-data encoding to use -
Returns
{object}
when An error occurredError information
{object}
Name Type Description type string The error message's type message string The associated error message
Example
local filename = "image.png" local file_type = "image/png" local expires_in = 600
local presigned_upload = Content.upload({
id = filename,
type = file_type,
expires_in = expires_in,
})
-- Create curl upload command local curl_command = "curl"
for k, v in pairs(presigned_upload.inputs) do
curl_command = curl_command .. " -F \"" .. k .. "=" .. v .."\""
end -- This assumes the file exist in the same directory as curl is being called from. curl_command = curl_command .. " -F file=@" .. filename .. " " .. presigned_upload.url
return curl_command
Events¶
event¶
Description
Notification indicating that files have been changed
Arguments
Name | Type | Description |
---|---|---|
ids | [ string ] | The ids that changed |
action | \(deleted|created\) | What happened to these files |
Example
for _,id in ipairs(event.ids) do
print("File " .. id .. " was " .. event.action )
end