Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • A api
  • Project information
    • Project information
    • Activity
    • Members
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Wiki
    • Wiki
  • Activity
Collapse sidebar
  • ironapi
  • api
  • Wiki
  • Api
  • Available Endpoints

Available Endpoints · Changes

Page history
afds authored May 25, 2021 by Andrea Pavlovic's avatar Andrea Pavlovic
Show whitespace changes
Inline Side-by-side
API/Available-Endpoints.md 0 → 100644
View page @ a9e84a3d
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)
Clone repository
  • API
    • Available Endpoints
    • Changing Passwords
    • Form Input Types
    • Introduction
    • Logout
    • Plugins
    • Queries
    • Queries
      • Attributes
      • Context
      • Query Examples
      • Query Search Options
      • Referenced Instances
      • Saved Queries
    • Schema_Changes
    • Storing Files
View All Pages