Metadata
This API works with database tables.
You can create, retrieve, update and delete your tables.
Create
Method
POST
URI
/api/metadata
Headers
Content-Type application/json
Authorization Bearer <short-access-token>
Body
{
"data": [
{
"name": "Table 1"
}
],
"context": {}
}
Result
[
{
"id": 102,
"name": "Table 1",
"tableName": "5df11e6e-c9e3-4e29-a499-0fdbce0bd101",
"description": "Some description",
"fields": [
{
"id": 1,
"name": "id",
"allowNull": false,
"autoIncrement": true,
"primaryKey": true,
"type": "integer",
"extend": {
"isSystem": true,
"caption": "ID",
"order": 0
}
},
{
"id": 2,
"name": "createdAt",
"allowNull": false,
"type": "datetime",
"extend": {
"isSystem": true,
"caption": "Created At",
"order": 1000
}
},
{
"id": 3,
"name": "updatedAt",
"allowNull": false,
"type": "datetime",
"extend": {
"isSystem": true,
"caption": "Updated At",
"order": 1001
}
}
],
"options": {},
"updatedAt": "2020-04-03T10:23:09.031Z",
"createdAt": "2020-04-03T10:23:09.031Z"
}
]
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer <short-access-token>");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"data":[{"name":"Table 1"}],"context":{}});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api.sunbreak.io/api/metadata", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.sunbreak.io/api/metadata',
'headers': {
'Authorization': 'Bearer <short-access-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({"data":[{"name":"Table 1"}],"context":{}})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.sunbreak.io/api/metadata');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Authorization' => 'Bearer <short-access-token>',
'Content-Type' => 'application/json'
));
$request->setBody('{\n "data": [\n {\n "name": "Table 1"\n }\n ],\n "context": {}\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
Get
Method
GET
URI
/api/metadata
Headers
Content-Type application/json
Authorization Bearer <short-access-token>
Body
{
"filter": {
"attributes": [
{
"column": "id",
"alias": "metadataId"
},
"name",
{
"column": "tableName",
"alias": "metaTableName"
},
"fields",
"createdAt"
],
"where": {
"operator": "=",
"args": ["id", 102]
}
},
"context": {}
}
Result
{
"count": 1,
"rows": [
{
"metadataId": 102,
"name": "Table 1",
"metaTableName": "5df11e6e-c9e3-4e29-a499-0fdbce0bd101",
"fields": [
{
"id": 1,
"name": "id",
"allowNull": false,
"autoIncrement": true,
"primaryKey": true,
"type": "integer",
"extend": {
"isSystem": true,
"caption": "ID",
"order": 0
}
},
{
"id": 2,
"name": "createdAt",
"allowNull": false,
"type": "datetime",
"extend": {
"isSystem": true,
"caption": "Created At",
"order": 1000
}
},
{
"id": 3,
"name": "updatedAt",
"allowNull": false,
"type": "datetime",
"extend": {
"isSystem": true,
"caption": "Updated At",
"order": 1001
}
}
],
"createdAt": "2020-04-03T10:23:09.031Z"
}
]
}
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer <short-access-token>");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"filter":{"attributes":[{"column":"id","alias":"metadataId"},"name",{"column":"tableName","alias":"metaTableName"},"fields","createdAt"],"where":{"operator":"=","args":["id",131]}},"context":{}});
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api.sunbreak.io/api/metadata", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
var request = require('request');
var options = {
'method': 'GET',
'url': 'https://api.sunbreak.io/api/metadata',
'headers': {
'Authorization': 'Bearer <short-access-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({"filter":{"attributes":[{"column":"id","alias":"metadataId"},"name",{"column":"tableName","alias":"metaTableName"},"fields","createdAt"],"where":{"operator":"=","args":["id",131]}},"context":{}})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.sunbreak.io/api/metadata');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Authorization' => 'Bearer <short-access-token>',
'Content-Type' => 'application/json'
));
$request->setBody('{\n "filter": {\n "attributes": [\n {\n "column": "id",\n "alias": "metadataId"\n },\n "name",\n {\n "column": "tableName",\n "alias": "metaTableName"\n },\n "fields",\n "createdAt"\n ],\n "where": {\n "operator": "=",\n "args": [\n "id",\n 131\n ]\n }\n },\n "context": {}\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
Update
This method allows change metadata of table like name, fields, description, options.
When changing property fields this applies changes to real table columns, so you can add new, rename, remove them,
change their properties: make column Indexed, Mandatory, Encrypted.
Method
PUT
URI
/api/metadata
Headers
Content-Type application/json
Authorization Bearer <short-access-token>
Body
{
"data": [
{
"id": 102,
"name": "Table 2"
}
],
"context": {}
}
Result
[
{
"id": 102,
"name": "Table 2",
"tableName": "5df11e6e-c9e3-4e29-a499-0fdbce0bd101",
"description": "Some description",
"fields": [
{
"id": 1,
"name": "id",
"allowNull": false,
"autoIncrement": true,
"primaryKey": true,
"type": "integer",
"extend": {
"isSystem": true,
"caption": "ID",
"order": 0
}
},
{
"id": 2,
"name": "createdAt",
"allowNull": false,
"type": "datetime",
"extend": {
"isSystem": true,
"caption": "Created At",
"order": 1000
}
},
{
"id": 3,
"name": "updatedAt",
"allowNull": false,
"type": "datetime",
"extend": {
"isSystem": true,
"caption": "Updated At",
"order": 1001
}
}
],
"options": {},
"updatedAt": "2020-04-07T10:10:09.031Z",
"createdAt": "2020-04-03T10:23:09.031Z"
}
]
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer <short-access-token>");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"data":[{"id":131,"name":"Table 2"}],"context":{}});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api.sunbreak.io/api/metadata", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
var request = require('request');
var options = {
'method': 'PUT',
'url': 'https://api.sunbreak.io/api/metadata',
'headers': {
'Authorization': 'Bearer <short-access-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({"data":[{"id":131,"name":"Table 2"}],"context":{}})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.sunbreak.io/api/metadata');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Authorization' => 'Bearer <short-access-token>',
'Content-Type' => 'application/json'
));
$request->setBody('{\n "data": [\n {\n "id": 131,\n "name": "Table 2"\n }\n ],\n "context": {}\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
Delete
This method allows to delete existing metadata with related table in DB
Method
DELETE
URI
/api/metadata
Headers
Content-Type application/json
Authorization Bearer <short-access-token>
Body
{
"filter": {
"where": {
"operator": "=",
"args": ["id", 102]
}
},
"context": {}
}
Result
[
{
"id": 102,
"name": "Table 2",
"tableName": "5df11e6e-c9e3-4e29-a499-0fdbce0bd101",
"description": "Some description",
"fields": [
{
"id": 1,
"name": "id",
"allowNull": false,
"autoIncrement": true,
"primaryKey": true,
"type": "integer",
"extend": {
"isSystem": true,
"caption": "ID",
"order": 0
}
},
{
"id": 2,
"name": "createdAt",
"allowNull": false,
"type": "datetime",
"extend": {
"isSystem": true,
"caption": "Created At",
"order": 1000
}
},
{
"id": 3,
"name": "updatedAt",
"allowNull": false,
"type": "datetime",
"extend": {
"isSystem": true,
"caption": "Updated At",
"order": 1001
}
}
],
"options": {},
"updatedAt": "2020-04-03T10:23:09.031Z",
"createdAt": "2020-04-03T10:23:09.031Z"
}
]
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer <short-access-token>");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"filter":{"where":{"operator":"=","args":["id",131]}},"context":{}});
var requestOptions = {
method: 'DELETE',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api.sunbreak.io/api/metadata", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
var request = require('request');
var options = {
'method': 'DELETE',
'url': 'https://api.sunbreak.io/api/metadata',
'headers': {
'Authorization': 'Bearer <short-access-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({"filter":{"where":{"operator":"=","args":["id",131]}},"context":{}})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://api.sunbreak.io/api/metadata');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Authorization' => 'Bearer <short-access-token>',
'Content-Type' => 'application/json'
));
$request->setBody('{\n "filter": {\n "where": {\n "operator": "=",\n "args": [\n "id",\n 131\n ]\n }\n },\n "context": {}\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}