Platio supports several types to store values in a record. For instance, there are String type to store text, Number type to store a number as well as Attachment type to store an attachment such as an image and a video.
When you create a MiniApp on Platio Studio, you add a field to a Data Pocket and each field has its own type such as Text, Currency, Image and so on. As described in Platio API Programming Guide, a Column is created to store a value for the field when you create a field. A type of this Column is determined by the type of this field. For example, when you create a Text field, it creates a String Column. It creates a Number Column for a Currency field, an Attachment Column for an Image field, and so on.
Visit the Developer page in Data Viewer, or get the Application definition to see types of Columns.
A Value of each type has its own JSON representation. For example, String Value is represented like this.
{
"type": "String",
"value": "This is a string value."
}
An Attachment Value looks like this.
{
"type": "Attachment",
"id": "ac2lzz2afdvguze5znhselxd4oe",
"name": "photo.jpeg",
"contentType": "image/jpeg",
"size": 1542161
}
When you get a record, you’ll see these values in each record. You need to construct valid Values when you create and update a Record.
To construct Values, create an object whose keys are Column IDs and values are Values for Columns like this.
{
"values": {
"c002c2c0": {
"type": "String",
"value": "Scott Tiger"
},
"cfe0266a": {
"type": "Attachment",
"id": "ac2lzz2afdvguze5znhselxd4oe",
"contentType": "image/jpeg",
"name": "image.jpeg",
"size": 254179
},
"c915a0bc": {
"type": "Number",
"value": 28
}
}
}
If you don’t want to include a Value for a specific Column, just omit
it from the object. For example, the Values below only contains a Value
for a Column c002c2c0
and set nothing to the other
Columns.
{
"values": {
"c002c2c0": {
"type": "String",
"value": "Scott Tiger"
}
}
}
Do not set null
to a Value itself or
properties in each Value. Using these Values will cause an error.
{
"values": {
"c002c2c0": {
"type": "String",
"value": null
},
"c915a0bc": null
}
}
A String Value represents an arbitrary text.
{
"type": "String",
"value": "String value"
}
When you sort records by a String Column, they’re sorted by a value itself in case-sensitive manner.
String. The default value is an empty string.
A Number Value represents any finite number, float or integer.
{
"type": "Number",
"value": 123456
}
When you sort records by a Number Column, they’re sorted by a value itself.
Number. The default value is 0
.
A Boolean value represents a boolean.
{
"type": "Boolean",
"value": true
}
When you sort records by a Boolean Column, they’re sorted by a value
itself. false
is treated smaller than
true
.
Boolean. The default value is false
.
A DateTime value represents a date and time. It’s formatted in the
ISO 8601 format YYYY-MM-DD'T'hh:mm:ss.sssZ
in JSON.
{
"type": "DateTime",
"value": "2016-05-18T11:16:34.348Z"
}
You can specify POSIX time when you create or update a record.
{
"type": "DateTime",
"value": 1510625619
}
Note that it returns the value in the ISO 8601 format when you retrieve this record even if you’ve created a record using POSIX time format.
When you sort records by a DateTime Column, they’re sorted by a value itself.
Date. The default value is undefined
.
A Date value represents a date. It’s formatted in the ISO 8601 format
YYYY-MM-DD
in JSON.
{
"type": "Date",
"value": "2016-05-15"
}
When you sort records by a Date Column, they’re sorted by a value itself.
String in YYYY-MM-DD
format. The default value is
undefined
.
A Time value represents time. It’s formatted in the ISO 8601 format
hh:mm:ss
in JSON.
{
"type": "Time",
"value": "11:16:34"
}
When you sort records by a Time Column, they’re sorted by a value itself.
String in HH:mm:ss
format. The default value is
undefined
.
A Location value represents a location, with required latitude and longitude and an optional altitude. All values are float.
{
"type": "Location",
"latitude": 35.685,
"longitude": 139.7513889,
}
{
"type": "Location",
"latitude": 35.685,
"longitude": 139.7513889,
"altitude": 54.3
}
You cannot sort records by a Location Column.
Object with latitude
, longitude
,
altitude
properties. The default value is
undefined
.
A User value represents a User, with its id and its name.
{
"type": "User",
"id": "uf598c3f",
"name": "user1"
}
When you sort records by a User Column, they’re sorted by their names in case-sensitive manner.
String representing a name. The default value is
undefined
.
An Attachment value represents an attachment, composed by its ID, name, content type and size.
When you create an Attachment Value, create an Attachment by uploading a file before and use ID, name, contentType and size returned.
{
"type": "Attachment",
"id": "ac2lzz2afdvguze5znhselxd4oe",
"name": "photo.jpeg",
"contentType": "image/jpeg",
"size": 1542161
}
When you sort records by an Attachment Column, they’re sorted by their names in case-sensitive manner.
String representing a file name. The default value is
undefined
.
Compound types are types that contain multiple Values in them.
An Object value is a mapping of keys and values. Simple types can be a member of an Object value.
For each Column of Object type, there is scheme which defines what keys it can have and what’s the type of each key. Visit the Developer page in Data Viewer to see scheme of Object Columns.
{
"type": "Object",
"value": {
"systolic": {
"type": "Number",
"value": 121
},
"diastolic": {
"type": "Number",
"value": 53
},
"pulseRate": {
"type": "Number",
"value": 66
}
}
}
You can also get scheme of a Column by getting an Application definition. It contains a Column definition with its scheme.
{
"id": "cd234a8a",
"name": "Blood Pressure",
"type": "Object",
"scheme": {
"keys": [
{
"name": "systolic",
"type": "Number"
},
{
"name": "diastolic",
"type": "Number"
},
{
"name": "pulseRate",
"type": "Number"
}
]
},
"unique": false,
"sortable": false,
"searchable": false
}
You cannot sort records by an Object Column.
Object. All values in an object will be converted too. The default
value is undefined
.
An Array value is an array of Values. Each Value in an array must be of the same type. Simple types and Object can be a member of an array.
For each Column of Array type, there is scheme which defines what type of values it can have. Visit the Developer page in Data Viewer to see scheme of Array Columns.
{
"type": "Array",
"value": [
{
"type": "Number",
"value": 10.1
},
{
"type": "Number",
"value": 14.34
}
]
}
{
"type": "Array",
"value": [
{
"type": "Object",
"value": {
"timestamp": {
"type": "DateTime",
"value": "2017-05-03T11:32:65.312Z"
},
"temperature": {
"type": "Number",
"value": 21.3
}
}
},
{
"type": "Object",
"value": {
"timestamp": {
"type": "DateTime",
"value": "2017-05-04T11:32:65.312Z"
},
"temperature": {
"type": "Number",
"value": 18.8
}
}
}
]
}
You can also get scheme of a Column by getting an Application definition. It contains a Column definition with its scheme.
When an Array value contains values of a simple type, it’ll be like the following.
{
"id": "cd234a8a",
"name": "Values",
"type": "Array",
"scheme": {
"element": {
"type": "Number"
}
},
"unique": false,
"sortable": false,
"searchable": false
}
When an Array value contains values of Object, its scheme also contains scheme of the Object type.
{
"id": "cd234a8a",
"name": "Values",
"type": "Array",
"scheme": {
"element": {
"type": "Object",
"scheme": {
"keys": [
{
"name": "timestamp",
"type": "DateTime"
},
{
"name": "temperature",
"type": "Number"
}
]
}
}
},
"unique": false,
"sortable": false,
"searchable": false
}
You cannot sort records by an Array Column.
Array. All values in an array will be converted too. The default
value is undefined
.
Reference types are used to represent a Value that refers a Record in a Collection in the same Application.
A ReferenceString value represents a reference to a Record and a String Value in the Record.
For each Column of ReferenceString type, there is scheme which defines which Collection and Column it refers to. Visit the Developer page in Data Viewer to see scheme of ReferenceString Columns.
First, a ReferenceString value has an id of a Collection and a Record, and a hash of a Record. These properties identify a Record that the Value refers. Then, it also contains an id of a Column and Value. These properties identify a Value in the referred Record.
{
"type": "ReferenceString",
"collectionId": "t5957d3a",
"columnId": "c89c762f",
"recordId": "refo5otf6fbb2lhgnwvhbc7jg5i",
"recordHash": "f82b820234d79d99082318996ecc1c95cace3753",
"value": {
"type": "String",
"value": "String value"
}
}
A Value can be omitted when the referred Record doesn’t have a Value for this Column.
{
"type": "ReferenceString",
"collectionId": "t5957d3a",
"columnId": "c89c762f",
"recordId": "refo5otf6fbb2lhgnwvhbc7jg5i",
"recordHash": "f82b820234d79d99082318996ecc1c95cace3753"
}
You can omit value
and recordHash
, and
specify only type
, collectionId
,
columnId
, recordId
when you set a Value. The
server will complement value
and
recordHash
.
You can also find which Collection and Column it refers to by getting an Application definition. It contains a Column definition with its scheme.
{
"id": "cd234a8a",
"name": "Author",
"type": "ReferenceString",
"scheme": {
"collectionId": "t5957d3a",
"columnId": "c89c762f"
},
"unique": false,
"sortable": true,
"searchable": false
}
When you sort records by a ReferenceString Column, they’re sorted by their referring value as described in String type.
String. The default value is an empty string.
For each Column of ReferenceNumber type, there is scheme which defines which Collection and Column it refers to. Visit the Developer page in Data Viewer to see scheme of ReferenceNumber Columns.
A ReferenceNumber value represents a reference to a Record and a Number Value in the Record.
First, a ReferenceNumber value has an id of a Collection and a Record, and a hash of a Record. These properties identify a Record that the Value refers. Then, it also contains an id of a Column and Value. These properties identify a Value in the referred Record.
{
"type": "ReferenceNumber",
"collectionId": "t915a0bc",
"columnId": "c002c2c0",
"recordId": "ri5f3cykexfbkzk7ohzqm2oocni",
"recordHash": "8b96a445815ca366aac07c70c722c9fdaa5bc932",
"value": {
"type": "Number",
"value": 1234.56
}
}
A Value can be omitted when the referred Record doesn’t have a Value for this Column.
{
"type": "ReferenceNumber",
"collectionId": "t915a0bc",
"columnId": "c915a0bc",
"recordId": "ri5f3cykexfbkzk7ohzqm2oocni",
"recordHash": "8b96a445815ca366aac07c70c722c9fdaa5bc932"
}
You can omit value
and recordHash
, and
specify only type
, collectionId
,
columnId
, recordId
when you set a Value. The
server will complement value
and
recordHash
.
You can also find which Collection and Column it refers to by getting an Application definition. It contains a Column definition with its scheme.
{
"id": "cd234a8a",
"name": "Author ID",
"type": "ReferenceNumber",
"scheme": {
"collectionId": "t915a0bc",
"columnId": "c915a0bc"
},
"unique": false,
"sortable": true,
"searchable": false
}
When you sort records by a ReferenceNumber Column, they’re sorted by their referring value as described in Number type.
Number. The default value is 0
.
A ReferenceUser value represents a reference to a Record and a User Value in the Record.
For each Column of ReferenceUser type, there is scheme which defines which Collection and Column it refers to. Visit the Developer page in Data Viewer to see scheme of ReferenceUser Columns.
First, a ReferenceUser value has an id of a Collection and a Record, and a hash of a Record. These properties identify a Record that the Value refers. Then, it also contains an id of a Column and Value. These properties identify a Value in the referred Record.
{
"type": "ReferenceUser",
"collectionId": "td5949fa",
"columnId": "c79bc617",
"recordId": "rvwoel2tefbd6zgx6qxqeogl4ey",
"recordHash": "2fbd3fb6a9b6a76e9686dbcef38ec9b08b5f6787",
"value": {
"type": "User",
"id": "uf598c3f",
"name": "user1"
}
}
A Value can be omitted when the referred Record doesn’t have a Value for this Column.
{
"type": "ReferenceUser",
"collectionId": "td5949fa",
"columnId": "c79bc617",
"recordId": "refo5otf6fbb2lhgnwvhbc7jg5i",
"recordHash": "2fbd3fb6a9b6a76e9686dbcef38ec9b08b5f6787"
}
You can omit value
and recordHash
, and
specify only type
, collectionId
,
columnId
, recordId
when you set a Value. The
server will complement value
and
recordHash
.
You can also find which Collection and Column it refers to by getting an Application definition. It contains a Column definition with its scheme.
{
"id": "cd234a8a",
"name": "Author",
"type": "ReferenceUser",
"scheme": {
"collectionId": "td5949fa",
"columnId": "c79bc617"
},
"unique": false,
"sortable": true,
"searchable": false
}
When you sort records by a ReferenceUser Column, they’re sorted by their referring value as described in User type.
String representing a name. The default value is
undefined
.