|
|
|
These parameters are available for all json requests.
|
|
|
|
|
|
|
|
|name|description|default|
|
|
|
|
|----|-----------|-------|
|
|
|
|
|cb |adds a callback (JSONP) to the API reply|none|
|
|
|
|
|
|
|
|
For authorization, add an authorization header, either:
|
|
|
|
|
|
|
|
```
|
|
|
|
Authorization: apikey aaaaaaaa-c3be-404c-e91c-8fb7259f24f3
|
|
|
|
```
|
|
|
|
or
|
|
|
|
```
|
|
|
|
Authorization: bearer $token
|
|
|
|
```
|
|
|
|
The token can be got from the /jwt endpoint, see below.
|
|
|
|
|
|
|
|
[[_TOC_]]
|
|
|
|
|
|
|
|
# /jwt
|
|
|
|
|
|
|
|
Get a [JSON Web Token](https://en.wikipedia.org/wiki/JSON_Web_Token).
|
|
|
|
|
|
|
|
POST /jwt
|
|
|
|
```
|
|
|
|
#!json
|
|
|
|
{
|
|
|
|
"password" : "password",
|
|
|
|
"user" : "username"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Reply:
|
|
|
|
|
|
|
|
```
|
|
|
|
{
|
|
|
|
"token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJqd3QuY2xhaW0uY3JlYXRpb25UaW1lc3RhbXBAVVRDIiA6ICIyMDE3LTExLTMwVDA4OjQyOjU5LjIxODQwNyIsICJqd3QuY2xhaW0uZXhwaXJhdGlvblRpbWVzdGFtcEBVVEMiIDogIjIwMTctMTItMDFUMDg6NDI6NTkuMjE4NDA3IiwgImp3dC5jbGFpbS5yb2xlcyIgOiBbInF1ZXVlX3Byb2Nlc3NvciIsInJvb3QiXSwgImp3dC5jbGFpbS5jbGllbnRJZCIgOiAxLCAiand0LmNsYWltLmZpcnN0TmFtZSIgOiAicm9vdCIsICJqd3QuY2xhaW0ubGFzdE5hbWUiIDogInJvb3QiLCAiand0LmNsYWltLmxvZ2luTmFtZSIgOiAicm9vdCIsICJqd3QuY2xhaW0ucHJlZmVycmVkTGFuZ3VhZ2UiIDogImVuIiwgImp3dC5jbGFpbS5lbWFpbEFkZHJlc3MiIDogIm5vcmVwbHlAZXhhbXBsZS5jb20iLCAiand0LmNsYWltLmxhc3RMb2dpbkF0dGVtcHQiIDogIjIwMTctMTEtMjlUMjA6MTc6MTcuODIyNjk4In0.GFmp8qaOB1owVBfkd78TwHd_xbkb6TShzTKK645WPyLHKL843cv_MJintl7ywrS0W12PNZNtZI4PHdBfPn7wgQ"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
# /verify-jwt
|
|
|
|
|
|
|
|
Check the token in the Authorization header (note: this only works for bearer keys, not apikeys)
|
|
|
|
|
|
|
|
GET /verify-jwt
|
|
|
|
|
|
|
|
Valid token:
|
|
|
|
|
|
|
|
```
|
|
|
|
#!json
|
|
|
|
{
|
|
|
|
"payload": {
|
|
|
|
"jwt.claim.loginName": "root",
|
|
|
|
"jwt.claim.creationTimestamp@UTC": "2018-03-09T08:59:28.749207",
|
|
|
|
"jwt.claim.firstName": "root",
|
|
|
|
"jwt.claim.lastLoginAttempt": "2018-03-09T09:55:39.995937",
|
|
|
|
"jwt.claim.roles": [
|
|
|
|
"query_cache_builder",
|
|
|
|
"query_validator",
|
|
|
|
"queue_processor",
|
|
|
|
"root"
|
|
|
|
],
|
|
|
|
"jwt.claim.emailAddress": "noreply@example.com",
|
|
|
|
"jwt.claim.clientId": 1,
|
|
|
|
"jwt.claim.expirationTimestamp@UTC": "2018-03-10T08:59:28.749207",
|
|
|
|
"jwt.claim.preferredLanguage": "en",
|
|
|
|
"jwt.claim.lastName": "root"
|
|
|
|
},
|
|
|
|
"valid": true,
|
|
|
|
"header": {
|
|
|
|
"typ": "JWT",
|
|
|
|
"alg": "HS512"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Invalid token:
|
|
|
|
|
|
|
|
```
|
|
|
|
#!json
|
|
|
|
{
|
|
|
|
"error": {
|
|
|
|
"code": "403",
|
|
|
|
"desc": "Forbidden",
|
|
|
|
"uri": "http://46.101.130.36:3000/verify-jwt",
|
|
|
|
"message": "authentication failed - check bearer token or api key"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
# /request_password_reset and /password_reset
|
|
|
|
|
|
|
|
See [Changing-Passwords](/api/Changing-Passwords)
|
|
|
|
|
|
|
|
# /metamodel
|
|
|
|
|
|
|
|
Returns the db model in xml.
|
|
|
|
|
|
|
|
GET /metamodel
|
|
|
|
```
|
|
|
|
#!xml
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<?xml-stylesheet type="text/xsl" href="xenesis.xsl"?>
|
|
|
|
<application name="ironapp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="xenesis.xsd">
|
|
|
|
<module name="cash_register" label="cash register module" description="The cash register contains all transactions of a company.">
|
|
|
|
<entity name="tx" label="Transaction" description="A list of transaction entries" delete="false" translatable="false">
|
|
|
|
<attributes>
|
|
|
|
<attribute name="employee" label="Employee" description="Link to employee" datatype="bigint" required="true" translatable="false"/>
|
|
|
|
<attribute name="company" label="company" description="Link to company" datatype="bigint" required="true" translatable="false"/>
|
|
|
|
<attribute name="tx_timestamp" label="TX timestamp" description="Timestamp of the transaction" datatype="timestamptz" required="true" translatable="false"/>
|
|
|
|
<attribute name="amount" label="Amount" description="Amount of transaction" datatype="numeric" required="true" translatable="false"/>
|
|
|
|
<attribute name="currency" label="Currency" description="Currency of transaction" datatype="bigint" required="true" translatable="false"/>
|
|
|
|
<attribute name="product" label="product" description="Consumed product" datatype="bigint" required="true" translatable="false"/>
|
|
|
|
</attributes>
|
|
|
|
<restrictions>
|
|
|
|
<unique>
|
|
|
|
<unique-attribute name="employee"/>
|
|
|
|
<unique-attribute name="tx_timestamp"/>
|
|
|
|
</unique>
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
# /openapi
|
|
|
|
|
|
|
|
THIS IS CURRENTLY BROKEN
|
|
|
|
|
|
|
|
GET /openapi
|
|
|
|
|
|
|
|
```
|
|
|
|
#!yaml
|
|
|
|
swagger: '2.0'
|
|
|
|
info:
|
|
|
|
version: 'v1'
|
|
|
|
title: 'genesis core api'
|
|
|
|
description: 'This is an API to the genesis core functionality'
|
|
|
|
produces:
|
|
|
|
- application/json
|
|
|
|
consumes:
|
|
|
|
- application/json
|
|
|
|
schemes:
|
|
|
|
- http
|
|
|
|
securityDefinitions:
|
|
|
|
basicAuth:
|
|
|
|
type: basic
|
|
|
|
description: HTTP Basic Authentication. Works over `HTTP`
|
|
|
|
Bearer:
|
|
|
|
type: apiKey
|
|
|
|
name: Authorization
|
|
|
|
in: header
|
|
|
|
description: JWT based authentication used in Authentication header
|
|
|
|
host: '46.101.130.36:3000'
|
|
|
|
basePath: /
|
|
|
|
paths:
|
|
|
|
/jwt:
|
|
|
|
get:
|
|
|
|
security:
|
|
|
|
- basicAuth: []
|
|
|
|
responses:
|
|
|
|
'200':
|
|
|
|
description: Returns the JWT token upon successful basic authentication using username and password.
|
|
|
|
```
|
|
|
|
|
|
|
|
# [Universe](/api/Universe) /universe and /universe/$version and /universe/version
|
|
|
|
|
|
|
|
# /errors and /errors/$errorid
|
|
|
|
GET /errors
|
|
|
|
```
|
|
|
|
#!json
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"entity": "data_type",
|
|
|
|
"errorType": "REQUIRED",
|
|
|
|
"involvedAttributes": [
|
|
|
|
"modifying_action"
|
|
|
|
],
|
|
|
|
"errorID": 1,
|
|
|
|
"module": "constant",
|
|
|
|
"errorDescription": "required"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"entity": "data_type",
|
|
|
|
"errorType": "REQUIRED",
|
|
|
|
"involvedAttributes": [
|
|
|
|
"modifying_client"
|
|
|
|
],
|
|
|
|
"errorID": 2,
|
|
|
|
"module": "constant",
|
|
|
|
"errorDescription": "required"
|
|
|
|
},
|
|
|
|
```
|
|
|
|
|
|
|
|
GET /errors/2
|
|
|
|
```
|
|
|
|
#!json
|
|
|
|
{
|
|
|
|
"module": "constant",
|
|
|
|
"errorDescription": "required",
|
|
|
|
"errorID": 2,
|
|
|
|
"involvedAttributes": [
|
|
|
|
"modifying_client"
|
|
|
|
],
|
|
|
|
"errorType": "REQUIRED",
|
|
|
|
"entity": "data_type"
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
# /menu
|
|
|
|
|
|
|
|
Returns the menu for the current user.
|
|
|
|
|
|
|
|
GET /menu
|
|
|
|
```
|
|
|
|
#!json
|
|
|
|
{
|
|
|
|
"data": [
|
|
|
|
{
|
|
|
|
"is_link": false,
|
|
|
|
"name": "assignment",
|
|
|
|
"children": [
|
|
|
|
{
|
|
|
|
"label": "system_client",
|
|
|
|
"name": "system_client",
|
|
|
|
"children": [],
|
|
|
|
"is_link": true
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"label": "system_entity",
|
|
|
|
"is_link": true,
|
|
|
|
"name": "system_entity",
|
|
|
|
"children": []
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"label": "assignment"
|
|
|
|
},
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
# Data Queries /data/*
|
|
|
|
|
|
|
|
These endpoints retrieve and manipulate the actual data in the database.
|
|
|
|
|
|
|
|
NOTE: boolean values are not returned as true/false, but 1/0 integer values. This is due to the API using Perl
|
|
|
|
which does not have boolean types.
|
|
|
|
|
|
|
|
Attributes containing file data will return that meta-data, for more information on handling files see [Storing-Files](/api/Storing-Files).
|
|
|
|
|
|
|
|
A reply can have these keys:
|
|
|
|
|
|
|
|
|
|
|
|
```JSON
|
|
|
|
{
|
|
|
|
"data" : "this can be a hash or an array",
|
|
|
|
"meta" : {},
|
|
|
|
"error" : {},
|
|
|
|
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
If an error occurs, the http response code will not be 200 and the "error" key will be present. Otherwise, the
|
|
|
|
call has been successful and "data" and "meta" will be returned.
|
|
|
|
|
|
|
|
**NOTE: In debug mode, the API returns 'generated_query' for some endpoints in the meta data.
|
|
|
|
Please only use them for debugging queries - they will not be present when deployed:**
|
|
|
|
|
|
|
|
```
|
|
|
|
#!json
|
|
|
|
"meta" : {
|
|
|
|
"generated_query": [
|
|
|
|
"(SELECT me.modifying_action, me.modifying_client, me.modification_time, me.instance_entity, me.id, me.successor, me.context, me.key, me.value FROM ui.label() me LIMIT ?)",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"sqlt_datatype": "integer"
|
|
|
|
},
|
|
|
|
"10"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## [Queries](/api/Queries) /data/$module/$entity/query
|
|
|
|
|
|
|
|
## Count /data/$module/$entity/count
|
|
|
|
|
|
|
|
The estimatedCount is available in the universe, but currently is not being updated. This endpoint will
|
|
|
|
query the database for a current count.
|
|
|
|
|
|
|
|
This count will only work to the defined huge limit, so if the value returned is equal to the maximum count,
|
|
|
|
the entity has at least that many rows, maybe more.
|
|
|
|
|
|
|
|
```
|
|
|
|
#!json
|
|
|
|
{
|
|
|
|
"meta": {
|
|
|
|
"huge_limit": "1000000"
|
|
|
|
},
|
|
|
|
"data": {
|
|
|
|
"count": 6
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Entity Transitions List /data/$module/$entity/transitions
|
|
|
|
|
|
|
|
see [Transitions](/api/Transitions)
|
|
|
|
|
|
|
|
## Entity Transition /data/$module/$entity/transitions/$transition
|
|
|
|
|
|
|
|
see [Transitions](/api/Transitions)
|
|
|
|
|
|
|
|
## Entity Transition with dereferencing /data/$module/$entity/transitions/$transition/deref
|
|
|
|
|
|
|
|
see [Transitions](/api/Transitions)
|
|
|
|
|
|
|
|
## Workflow /data/$module/$entity/workflow
|
|
|
|
|
|
|
|
For entites which have a worklow defined, 'workflowUrl' and 'workflowVerb' will be set in
|
|
|
|
the universe and this endpoint returns a graphic representation of that workflow.
|
|
|
|
|
|
|
|
## Instance Retrieval /data/$module/$entity/$instance_id
|
|
|
|
|
|
|
|
Look in the universe for the correct url ('instanceRetrievalUrl') and verb ('instanceRetrievalVerb').
|
|
|
|
|
|
|
|
Make sure to read [Referenced-Instances](/api/Referenced-Instances) to understand how to retrieve referenced instances.
|
|
|
|
|
|
|
|
GET /data/extensions/query/163
|
|
|
|
|
|
|
|
```JSON
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"modifying_action": 218,
|
|
|
|
"attrs": null,
|
|
|
|
"is_default": 0,
|
|
|
|
"successor": null,
|
|
|
|
"instance_entity": 63,
|
|
|
|
"entity": 63,
|
|
|
|
"modifying_client": 1,
|
|
|
|
"owning_client": 1,
|
|
|
|
"conds": null,
|
|
|
|
"name": "xx",
|
|
|
|
"instance_state": null,
|
|
|
|
"modification_time": "2018-04-19 14:33:06.318505",
|
|
|
|
"id": 163,
|
|
|
|
"is_valid": 1,
|
|
|
|
"error_log": null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Instance Query /data/$module/$entity/$instance_id/query
|
|
|
|
|
|
|
|
Look in the universe for the correct url ('instanceQueryUrl') and verb ('instanceQueryVerb').
|
|
|
|
|
|
|
|
Works analog to [Queries](/api/Queries), per default retrieves all 1:1 relations and takes `conds` and `attrs` parameters.
|
|
|
|
|
|
|
|
Make sure to read [Referenced-Instances](/api/Referenced-Instances) to understand how to retrieve referenced instances.
|
|
|
|
|
|
|
|
POST /data/extensions/query/163/query
|
|
|
|
|
|
|
|
```JSON
|
|
|
|
{
|
|
|
|
"meta": {
|
|
|
|
"generated_query": [
|
|
|
|
"(SELECT me.modifying_action, me.modifying_client, me.modification_time, me.id, me.successor, me.entity, me.owning_client, me.name, me.conds, me.attrs, me.is_valid, me.is_default, me.error_log, me.instance_state, owning_client.id, owning_client.first_name, owning_client.last_name, owning_client.login_name, owning_client.password, owning_client.language, owning_client.password_validation_period, owning_client.locked, owning_client.number_of_unsuccessfull_login_attempts, owning_client.email, owning_client.modifying_action, owning_client.modifying_client, owning_client.modification_time, owning_client.successor, modifying_client.id, modifying_client.first_name, modifying_client.last_name, modifying_client.login_name, modifying_client.password, modifying_client.language, modifying_client.password_validation_period, modifying_client.locked, modifying_client.number_of_unsuccessfull_login_attempts, modifying_client.email, modifying_client.modifying_action, modifying_client.modifying_client, modifying_client.modification_time, modifying_client.successor, entity.id, entity.name, entity.label, entity.description, entity.module, entity.is_successor_not_required, entity.is_translatable, entity.is_functional, entity.is_potentially_huge, entity.modifying_action, entity.modifying_client, entity.modification_time, entity.successor, successor.modifying_action, successor.modifying_client, successor.modification_time, successor.id, successor.successor, successor.entity, successor.owning_client, successor.name, successor.conds, successor.attrs, successor.is_valid, successor.is_default, successor.error_log, successor.instance_state FROM ui.query() me LEFT JOIN system.client() owning_client ON owning_client.id = me.owning_client LEFT JOIN system.client() modifying_client ON modifying_client.id = me.modifying_client LEFT JOIN system.entity() entity ON entity.id = me.entity LEFT JOIN ui.query() successor ON successor.id = me.successor WHERE ( me.id = ? ))",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"dbic_colname": "me.id",
|
|
|
|
"sqlt_datatype": "bigint"
|
|
|
|
},
|
|
|
|
"163"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"data": {
|
|
|
|
"modifying_client": {
|
|
|
|
"login_name": "root",
|
|
|
|
"last_name": "root",
|
|
|
|
"locked": null,
|
|
|
|
"id": 1,
|
|
|
|
"password_validation_period": null,
|
|
|
|
"email": "noreply@example.com",
|
|
|
|
"number_of_unsuccessfull_login_attempts": null,
|
|
|
|
"password": "15f387d6d56522516a14affa99be6e02",
|
|
|
|
"modification_time": "2018-04-15 23:18:26.415611",
|
|
|
|
"language": 1,
|
|
|
|
"modifying_client": 1,
|
|
|
|
"modifying_action": 29,
|
|
|
|
"successor": null,
|
|
|
|
"first_name": "root"
|
|
|
|
},
|
|
|
|
"entity": {
|
|
|
|
"modification_time": "2018-04-15 23:18:34.349169",
|
|
|
|
"name": "query",
|
|
|
|
"is_translatable": 0,
|
|
|
|
"is_functional": 0,
|
|
|
|
"is_successor_not_required": 0,
|
|
|
|
"id": 63,
|
|
|
|
"label": "Query",
|
|
|
|
"successor": null,
|
|
|
|
"modifying_action": 5,
|
|
|
|
"description": "Arbitrary queries as defined in dbix, http://search.cpan.org/~ribasushi/DBIx-Class-0.082840/lib/DBIx/Class.pod",
|
|
|
|
"is_potentially_huge": 0,
|
|
|
|
"module": 6,
|
|
|
|
"modifying_client": 1
|
|
|
|
},
|
|
|
|
"owning_client": {
|
|
|
|
"modifying_client": 1,
|
|
|
|
"first_name": "root",
|
|
|
|
"successor": null,
|
|
|
|
"modifying_action": 29,
|
|
|
|
"id": 1,
|
|
|
|
"password_validation_period": null,
|
|
|
|
"locked": null,
|
|
|
|
"last_name": "root",
|
|
|
|
"login_name": "root",
|
|
|
|
"language": 1,
|
|
|
|
"number_of_unsuccessfull_login_attempts": null,
|
|
|
|
"password": "15f387d6d56522516a14affa99be6e02",
|
|
|
|
"modification_time": "2018-04-15 23:18:26.415611",
|
|
|
|
"email": "noreply@example.com"
|
|
|
|
},
|
|
|
|
"modifying_action": 218,
|
|
|
|
"attrs": null,
|
|
|
|
"successor": null,
|
|
|
|
"is_default": 0,
|
|
|
|
"is_valid": 1,
|
|
|
|
"error_log": null,
|
|
|
|
"id": 163,
|
|
|
|
"instance_state": null,
|
|
|
|
"modification_time": "2018-04-19 14:33:06.318505",
|
|
|
|
"conds": null,
|
|
|
|
"name": "xx"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Instance Log /data/$module/$entity/$instance_id/log
|
|
|
|
|
|
|
|
Get the history of an instance from the logs. Look in the universe for the correct url ('instanceLogUrl') and verb ('instanceLogVerb').
|
|
|
|
|
|
|
|
POST /data/system/entity/3/log
|
|
|
|
|
|
|
|
```JSON
|
|
|
|
{
|
|
|
|
"meta": {
|
|
|
|
"generated_query": [
|
|
|
|
"(SELECT me.modifying_action, me.modifying_client, me.modification_time, me.instance_entity, me.id, me.successor, me.entity, me.owning_client, me.name, me.conds, me.attrs, me.is_valid, me.is_default, me.error_log, me.instance_state FROM (SELECT me.modifying_action, me.modifying_client, me.modification_time, me.instance_entity, me.id, me.successor, me.entity, me.owning_client, me.name, me.conds, me.attrs, me.is_valid, me.is_default, me.error_log, me.instance_state FROM ui.query() me WHERE ( id = ? ) UNION SELECT me.modifying_action, me.modifying_client, me.modification_time, me.instance_entity, me.id, me.successor, me.entity, me.owning_client, me.name, me.conds, me.attrs, me.is_valid, me.is_default, me.error_log, me.instance_state FROM ui_log.query me WHERE ( id = ? )) me LIMIT ?)",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"sqlt_datatype": "bigint",
|
|
|
|
"dbic_colname": "id"
|
|
|
|
},
|
|
|
|
"163"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"sqlt_datatype": "bigint",
|
|
|
|
"dbic_colname": "id"
|
|
|
|
},
|
|
|
|
"163"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"sqlt_datatype": "integer"
|
|
|
|
},
|
|
|
|
"10"
|
|
|
|
]
|
|
|
|
],
|
|
|
|
"total": 7,
|
|
|
|
"huge_limit": "1000000",
|
|
|
|
"filtered": 1,
|
|
|
|
"selected": 1
|
|
|
|
},
|
|
|
|
"data": [
|
|
|
|
{
|
|
|
|
"instance_state": null,
|
|
|
|
"modification_time": "2018-04-19 14:33:06.318505",
|
|
|
|
"conds": null,
|
|
|
|
"name": "xx",
|
|
|
|
"is_valid": 1,
|
|
|
|
"error_log": null,
|
|
|
|
"id": 163,
|
|
|
|
"modifying_action": 218,
|
|
|
|
"is_default": 0,
|
|
|
|
"successor": null,
|
|
|
|
"attrs": null,
|
|
|
|
"entity": 63,
|
|
|
|
"modifying_client": 1,
|
|
|
|
"instance_entity": 63,
|
|
|
|
"owning_client": 1
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Instance Transition List /data/$module/$entity/$instance_id/transitions
|
|
|
|
|
|
|
|
see [Transitions](/api/Transitions)
|
|
|
|
|
|
|
|
## Instance Transition /data/$module/$entity/$instance_id/transitions/$transition
|
|
|
|
|
|
|
|
see [Transitions](/api/Transitions)
|
|
|
|
|
|
|
|
# /plugins/$plugin_name
|
|
|
|
|
|
|
|
Call the corresponding plugin (as defined in the universe).
|
|
|
|
|
|
|
|
POST /plugins/generate_uuid
|
|
|
|
|
|
|
|
```JSON
|
|
|
|
{
|
|
|
|
"result": {
|
|
|
|
"uuid": "1b23e61e-2074-4d51-f24a-f49e47d16631"
|
|
|
|
},
|
|
|
|
"success": 1
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
see [Plugins](/api/Plugins) |