NAV Navbar
Zd logo
http

Developer Tier

Data Harmonisation Designer

The Data Harmonisation Designer helps a developer design data mappings visually. These data maps can then be executed in the Data Harmonisation Run-time component.

Connect Data Source

The RESTful interface Connect Data Source allows setting up the connection to a target or source schema implemented by any data source that may need to access the data source in runtime.

POST /mapping/datasources/id245458479ald/connections?session=P3L4CtoKn34 HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "schemaUrl":"https:\/schema\/sch001.dtd",
  "format":"DTD",
  "version":"1.0"
}
HTTP/1.1 201 Created

Request

Request URL: POST /mapping/datasources/<ID>/connections?session=<userToken>

Transfer Parameters

Name Required Parameter Type Object Type Description
ID Yes Resource String The unique identfier for the schema to be connected to
userToken Yes Query String The userToken propagated through all requests
object Yes Body entity Json Array Setup of the data source

Response

Returns an HTTP Status Code

If there is an error during the processing, a message should be returned to specify detailed information. Otherwise, it is generally expected that a HTTP Status Code will be returned.

Common Return Codes

Code Description
201 Connection to Schema has been established successfully
400 Invalid Setup
403 Insufficient rights
404 Schema not found
500 Internal Server Error - There was an unexpected error at some point during the processing of the request.

The RESTful interface Get Related Data computes the semantic similarity between two given concepts in the ZDMP Data Model and returns the existing paths between them to certain depth.

GET /mapping/relatedData/id2345?target=3f8c&maxDepth=10&session=P3L4CtoKn HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
  [
    "id2345",
    "e525",
    "bf13",
    "c9d9",
    "3f8c"
  ],
  [
    "id2345",
    "0182",
    "8f16",
    "3f8c"
  ],
  [
    "id2345",
    "c58e",
    "5628",
    "39f0",
    "3f8c"
  ]
]

Request

Request URL: GET /mapping/relatedData/<conceptId1>?target=<conceptId2>&maxDepth=<maxDepth>&session=<userToken>

Resource Parameters

Name Required Parameter Type Object Type Description
conceptId1 Yes Resource String ID of source concept
conceptId2 Yes Query String ID of target concept
maxDepth Yes Query Integer Max number of levels to look for linked concepts
userToken Yes Query String The userToken propagated through all requests

Response

Returns an HTTP Status Code together with a list of paths

If there is an error during the processing, a message should be returned to specify detailed information. Otherwise, it is generally expected that a list of paths that connect two concepts, expressed by their concept IDs.

Common Return Codes

Code Description
200 Link found
204 No links found between concepts
403 Insufficient rights
404 Some of the concepts were not found
500 Internal Server Error - There was an unexpected error at some point during the processing of the request.

Get Routines

The RESTful interface Get Routines retrieves all concepts that are linked to a given concept up to a certain depth and which are compliant with the parameters specified in the call.

GET /mapping/routines/id2345?type=method&param=descriptionSimilarity&depth=10&session=P3L4CtoKn HTTP/1.1
HTTP/1.1 200  OK
Content-Type: application/json; charset=utf-8
[
  [
    "city",
    "ciudad",
    "ville",
    "village"
  ],
  [
    "city",
    "town",
    "village"
  ],
  [
    "city",
    "stadt",
    "dorf",
    "village"
  ]
]

Request

Request URL: GET /mapping/routines/<conceptID>?type=<typeOfRoutine>&maxDepth=<maxDepth>&session=<userToken>

Resource Parameters

Name Required Parameter Type Object Type Description
conceptID Yes Resource String Name of the concept
typeOfRoutine No Query Enumerate Type of algorithm to be executed. The following values are applicable to this parameter:
  • Simple: No parameters are expected for this type
  • Method: Name of the method to get the related concepts, eg routine, name similarity or description similarity
  • Filter: List of conditions to get the related concepts, eg Lan: EN; Domain: Geography
maxDepth No Query Integer Max number of levels to look for linked concepts
userToken Yes Query String The userToken propagated through all requests

Response

Returns an HTTP Status Code together with a JSON-LD list of concepts

If there is an error during the processing, a message should be returned to specify detailed information. Otherwise, it is generally expected that a list of concepts is returned in the form of a JSON-LD.

Common Return Codes

Code Description
200 Linked Concepts found
204 No Linked Concepts found
403 Insufficient rights
404 Concept not found
500 Internal Server Error - There was an unexpected error at some point during the processing of the request.

Search Routines

The RESTful interface Search Routines retrieves all concepts that are matching to a given keyword up to a certain depth. If no keyword is provided, all linked concepts will be returned.

GET /mapping/routines?keyword=city&maxDepth=10&session=P3L4CtoKn HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
  [
    "ciudad",
    "ville",
    "village",
    "town",
    "stadt",
    "dorf"
  ]
]

Request

Request URL: GET /mapping/routines?keyword=<searchKeyword>&maxDepth=maxDepth&session=userToken

Resource Parameters

Name Required Parameter Type Object Type Description
searchKeyword No Query String Name of the concept to be searched
maxDepth No Query Integer Max number of levels to look for linked concepts
userToken Yes Query String The userToken propagated through all requests

Response

Returns an HTTP Status Code together with a JSON-LD list of concepts

If there is an error during the processing, a message should be returned to specify detailed information. Otherwise, it is generally expected that a list of concepts is returned in the form of a JSON-LD.

Common Return Codes

Code Description
200 Concepts found
403 Insufficient rights
404 Concept not found
500 Internal Server Error - There was an unexpected error at some point during the processing of the request.

Orchestration Designer

The Orchestration Designer is responsible for allowing users to model multiple manufacturing workflows so orchestrating the various assets available within a collaborative framework. The tool will be a reactive, extensible, and an online workspace supporting a BPMN-like model and be utilisable by zApps where process design and orchestration is appropriate.

Use the Orchestration Designer

Where the User use the Orchestration Designer. The internal functionalities to use the Designer are then provided inside the returned json body.

GET /designer/prmoui001?userToken=usertoken123 HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "processModelUrl":"http://dev.vfos.eu/pro001.xml",
  "format":"XML",
  "version":"1.0"
}

Request

Request URL: GET /designer/<processDesignerId>?usertToken=<userToken>

Transfer Parameters

Name Required Parameter Type Type Description
processDesignerId yes Resource String The unique identifier of the Process Designer UI
userToken yes Query String The userToken propagated through all requests

Response

If successful, it returns the Process Designer setup encapsulated inside a XML, and of course additionally a HTTP Statuscode.

Common Return Codes

Code Description
200 Connected to the Process Model UI
403 Required permissions not found
404 Process Instance not found
500 Internal Server Error - There was an unexpected error at some point during the processing of the request.

AI-Analytics Designer

This component provides the ability to define machine learning models from historical data.

Connect to datasource

This function allows users to acces historic data from datasources, logging in Web UI and connecting to Storage through Historic API.

Request

POST /AIAnalyticsDesigner/v1/cert?login=username&password=password HTTP/1.1
Content-Type: application/json; charset=utf-8

{
"username":"username",
"password":"password"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "ownerOrganization": {
    "providerId": 0,
    "providerDomainName": "Provider Name"
  },
  "aliasName": "1",
  "userGUID": "4317e820-eb4e-494e-b800-9c1c18b821f4",
  "loginAttempts": 0,
  "remainingLockTime": 0,
  "smtpAddress": "",
  "providerOrganization": {
    "providerId": 0,
    "providerDomainName": "Provider Name"
  },
  "errList": [
  ],
  "userName": "username",
  "providerType": 1,
  "ccn": 0,
  "token": "QSDK 3feedcdeccfa56f536a1e9ddc92275e7e78025640882eb106964622e6d9edf36eaca970a00d27710e7e88c38f54239d1c7
04c4f993f28358277d0caa53fbc2681c4214c6f1ad02d7ea661dbff4e2dd906afab382f47ee489fdb9b85754538e904674
d76e7a7c82ee5137dfeadb094a441da9916f77ce8356f7a23d864d510e43221f9e86d3240b172dd0731faa8045f35bb618
5b99af701629b5391c4fe1516936f0fa17e21c01b8eefee6cfb143f00b496c3a332bdbe2ddd534c2301e466eb79d3bce77
e11d81ce67eb8ba5c93385798d417dca01a56e015647377cc29ed3403a7a3bd93101f0exea415f100ecab9e0d3544847ec
6fe583f00bcd2e026f21292",
  "capability": 6945989585,
  "forcePasswordChange": false,
  "isAccountLocked": false
}

Request URL: /AIAnalyticsDesigner/v1/cert?login=username&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
username Yes Query string Login username
password Yes Query string Login Password

Response

The response contains the user guid and token.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges
404 Specified user not found

Application Builder

The ZDMP's Application Builder provides services for the developer to develop, build and deploy applications, known as zApps. This document presents the services APIs that supports the developer for successfully deploy the zApps.

Create a zApp resource

This service creates the app space. this space will be accessible by the user who have right to edit tha app.

POST /appbuilder/v1/resource/create HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "zAppName": "zApp1",
  "zAppDescription": "This is developed for demonstrating the App builder in ZDMP project.",
  "zAppLanguage": "EN"
}
HTTP/1.1 201 Created

Request

The request contains three required fields.

Request URL: POST /appbuilder/v1/resource/create

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes Body string Name which the app will be displayed with
zAppDescription Yes Body string Description about the app. This will be viewed by the consumers in the platform
zAppLanguage no Body string Tha language which the app display uses. English is default language

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Status Description
201 Created space is successfully created
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Edit a zApp resource

This service Edits the app space. This space will be accessible by the user who have right to edit the app.

PUT /appbuilder/v1/resource/{zAppName}/edit HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "zAppName": "zApp1",
  "zAppDescription": "This is developed for demonstrating the App builder in ZDMP project.",
  "zAppLanguage": "EN"
}
HTTP/1.1 202 Accepted

Request

The request contains three required fields.

Request URL: PUT /appbuilder/v1/resource/{zAppName}/edit

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes Body string Name which the app will be displayed with
zAppDescription Yes Body string Description about the app. This will be viewed by the consumers in the platform
zAppLanguage no Body string Tha language which the app display uses. English is default language

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted space is successfully edited
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Delete a zApp resource

This service Deletes the app space. This space will be accessible by the user who have right to edit the app.

DELETE /appbuilder/v1/{zAppName}/delete HTTP/1.1
HTTP/1.1 200 OkK

Request

The request contains no parameters.

Request URL: DELETE /appbuilder/v1/{zAppName}/delete

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Status Description
200 OK space is successfully deleted
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
405 Not Allowed The zApp in run mode
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Read zApp permissions

This service returns the zApp permissions. By default all permissions are blocked.

GET /appbuilder/v1/{zAppName}/permissions/read HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains one parameter.

Request URL: GET /appbuilder/v1/{zAppName}/permissions/read

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with

Response

The response returns teh list of all permissions with the state (True|False) as value. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Status Description
200 OK Permission list is returned
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Write zApp permissions

This service edits the zApp permissions.

PUT /appbuilder/v1/{zAppName}/permissions/write HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains N+1 parameter. where N is te number of the permissions which the developer will write.

Request URL: PUT /appbuilder/v1/{zAppName}/permissions/write

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
permissions Yes Body json list of permissions as key value pairs with (True OR False) possible values

Response

The response returns no response. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Status Description
200 OK Permissions list is updated
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
405 Not Allowed The zApp in run mode
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Add user

This service adds a user to the zApp resource space. The users will grant roles that allow them to develop the app.

PUT /appbuilder/v1/{zAppName}/adduser HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "userID": "user123",
  "role": "developer"
}
HTTP/1.1 202 Accepted

Request

The request contains three required fields.

Request URL: PUT /appbuilder/v1/{zAppName}/adduser

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
userID Yes Body string the user which is added to the space.
role Yes Body string the role of the user. it should be one of the following (developer, reporter, admin)

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted the user has been successfully added
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Remove User

This service removes a user from the zApp resource space.

DELETE /appbuilder/v1/{zAppName}/removeuser HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "userID": "user123"
}
HTTP/1.1 202 Accepted

Request

The request contains two required fields.

Request URL: DELETE /appbuilder/v1/{zAppName}/removeuser

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
userID Yes Body string the user which is removed from the space.

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted the user has been successfully removed
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Edit User

This service edits the user's role in the zApp resource space.

PUT /appbuilder/v1/{zAppName}/edituser HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "userID": "user123",
  "role": "admin"
}
HTTP/1.1 202 Accepted

Request

The request contains two required fields.

Request URL: PUT /appbuilder/v1/{zAppName}/edituser

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
userID Yes Body string the user which is edited in the space.
role Yes Body string the role of the user. it should be one of the following (developer, reporter, admin)

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted the user has been successfully added
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Create zApp Runtime Container

This service creates the Runtime container for the zApp. It is a docker container with pre-installed SDKs like java, NodeJS, Python etc...

POST /appbuilder/v1/{zAppName}/container/create HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "containerName": "container1",
  "containerConfiguration": {
    "SDK": "Java",
    "Version": "10.0.84",
    "openPorts": [80, 334, 21],
    "enableSSHServer": true
  }
}
HTTP/1.1 201 Created

Request

The request contains three required fields.

Request URL: POST /appbuilder/v1/{zAppName}/container/create

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
containerName Yes Body string container name
containerConfiguration Yes Body json configuration of the container

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Status Description
201 Created container is successfully created
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
406 Not Acceptable There is an existing container with the same name
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Delete zApp Runtime Container

This service deletes the Runtime container for the zApp. It is a docker container with pre-installed SDKs like java, NodeJS, Python etc...

DELETE /appbuilder/v1/{zAppName}/container/{containerName} HTTP/1.1
HTTP/1.1 202 Accepted

Request

The request contains two required fields.

Request URL: DELETE /appbuilder/v1/{zAppName}/container/{containerName}

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
containerName Yes URL string container name

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted container is successfully removed
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
406 Not Acceptable the container in run mode
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Run zApp Runtime Container

This service runs the zApp Runtime container.

PUT /appbuilder/v1/{zAppName}/container/{containerName}/run HTTP/1.1
HTTP/1.1 202 Accepted

Request

The request contains two required fields.

Request URL: PUT /appbuilder/v1/{zAppName}/container/{containerName}/run

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
containerName Yes URL string container name

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted container is successfully run
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
406 Not Acceptable the container in run mode
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Pause zApp Runtime Container

This service pauses the zApp Runtime container.

PUT /appbuilder/v1/{zAppName}/container/{containerName}/pause HTTP/1.1
HTTP/1.1 202 Accepted

Request

The request contains two required fields.

Request URL: PUT /appbuilder/v1/{zAppName}/container/{containerName}/pause

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
containerName Yes URL string container name

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted container is successfully paused
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
406 Not Acceptable the container in pause OR stop mode
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Stop zApp Runtime Container

This service stops the zApp Runtime container.

PUT /appbuilder/v1/{zAppName}/container/{containerName}/stop HTTP/1.1
HTTP/1.1 202 Accepted

Request

The request contains two required fields.

Request URL: PUT /appbuilder/v1/{zAppName}/container/{containerName}/stop

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
containerName Yes URL string container name

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted container is successfully stopped
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
406 Not Acceptable the container in run mode
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Upload zApp

This service uploads the zApp. the zApp should be in the format of .zip file. the container automatically extracts teh zip file and installed teh needed libraries depends on the SDK.

PUT /appbuilder/v1/{zAppName}/container/{containerName}/uploadzapp HTTP/1.1
HTTP/1.1 202 Accepted

Request

The request contains three required fields.

Request URL: PUT /appbuilder/v1/{zAppName}/container/{containerName}/uploadzapp

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
containerName Yes URL string container name
zApp Yes body binary zip file which contains teh zApp

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Status Description
202 Accepted container is successfully removed
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
406 Not Acceptable the container in run mode
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Read zApp Statistics

This service retrieves the statistics of the zApp. the returned information include the number of usages, the rating by the end users, resources usage in the containers, etc...

GET /appbuilder/v1/{zAppName}/container/{containerName}/statistics HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains two required fields.

Request URL: GET /appbuilder/v1/{zAppName}/container/{containerName}/statistics

Transfer Parameters

Name Required Parameter Type Object Type Description
zAppName Yes URL string Name which the app will be displayed with
containerName Yes URL string container name

Response

The response includes statistics of the runtime container and zApp usage 200 OK.

Common Return Codes

Code Status Description
200 OK statistics
400 Malformed request Wrong parameter values or type
403 Forbidden The user do not have the right for this service
406 Not Acceptable the container in run mode
500 Server error Server internal error. the user may try again or contact the ZDMP admin for support (admin@zdmp.eu)

Security Designer

The Security Designer (SD) enables automated and systematic identification of risks to the assets (both human and technological) contained or connected to the ZDMP platform. SD also allows identifying the knock-on consequences and countermeasures to mitigate these risks. The tool enables collaboration between several stakeholders to develop the system model and the associated risk catalogue.

Authentication

Send a request to authenticate the user, returning a cookie. Authentication requires a valid user name and password which after registration on www.security.it-innovation.soton.ac.uk, can be ativated by the IT-Innovation administration team.

POST /auth HTTP/1.1
HTTP/1.1 200 Successful
{
    "authenticated": true,
    "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImNyZWFmsdQiOjE1NzM1NjQ0MjQwMDMsImV4cCI6MTYwNTEwMDQyNH0.dz-VQuYA5qv_BSbt8BhP10JJ_jiS6kqib_TsByMtp2fGGZYbq-LRJWzeKvK9FP9r_3hiQ345QusGkFDuCyoN1DQ"
}

Request

Request URL: POST /auth

Transfer Parameters

Name Required Parameter Type Object Type Description
username Yes Body String User name
password Yes Body String Password

Response

On successful authentication a security token is returned.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Get models

Return list of models to the user.

GET /models  HTTP/1.1
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "name": "string",
  "description": "string",
  "domainGraph": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain-network",
  "hasChanged": true,
  "valid": true,
  "riskLevelsValid": true,
  "calculatingRisks": true,
  "risk": {
    "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
    "label": "Very Low",
    "description": "string",
    "parents": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
    ]
  },
  "issues": [
    {
      "assetid": "string",
      "incomingIncomplete": [
        {
          "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
          "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
        }
      ],
      "outcomingIncomplete": [
        {
          "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
          "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
        }
      ]
    }
  ],
  "threats": [
    {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
      "label": "string",
      "description": "string",
      "pattern": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#HS_6492bace_b5e6a1b1",
        "label": "HS_Host01_Space01",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "parent": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HS",
        "parentLabel": "string",
        "nodes": [
          {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Node-b5e6a1b1-SpaceRole",
            "label": "string",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "asset": "string",
            "role": "string",
            "aLabel": "string",
            "rLabel": "string",
            "id": "string"
          }
        ],
        "links": [
          {
            "fromAssetLabel": "string",
            "toAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1bae1f35",
            "toRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#SpaceRole",
            "fromRoleLabel": "string",
            "toAssetLabel": "string",
            "typeLabel": "string",
            "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#locatedIn",
            "toRoleLabel": "string",
            "fromAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "fromRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HostRole"
          }
        ],
        "id": "string"
      },
      "threatensAssets": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#H.MTW.HS.1",
      "resolved": true,
      "acceptedJustification": "string",
      "misbehaviours": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfControl-6492bace"
      ],
      "indirectEffects": [
        "string"
      ],
      "secondaryEffectConditions": [
        "string"
      ],
      "controlStrategies": {
        "property1": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
          "label": "string",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "blockingEffect": {
            "description": "string",
            "label": "string",
            "id": "string",
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
            "value": 0,
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ]
          },
          "type": "BLOCK",
          "controlSets": {
            "property1": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            },
            "property2": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            }
          },
          "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
          "enabled": true,
          "id": "string"
        },
        "property2": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
          "label": "string",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "blockingEffect": {
            "description": "string",
            "label": "string",
            "id": "string",
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
            "value": 0,
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ]
          },
          "type": "BLOCK",
          "controlSets": {
            "property1": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            },
            "property2": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            }
          },
          "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
          "enabled": true,
          "id": "string"
        }
      },
      "entryPoints": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-UserTW-b5e6a1b1"
      ],
      "likelihood": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "rootCause": true,
      "allControlCombinations": [
        [
          {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        ]
      ],
      "id": "string"
    }
  ],
  "complianceThreats": [
    {}
  ],
  "complianceSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/?"
    }
  ],
  "misbehaviourSets": {
    "property1": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "label": "MS-LossOfIntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
      "mLabel": "Loss of IntrinsicTW",
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "aLabel": "SysAdmin",
      "impactLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "directCauses": [
        {
          "name": "string"
        }
      ],
      "indirectCauses": [
        {
          "name": "string"
        }
      ],
      "rootCauses": [
        {
          "name": "string"
        }
      ],
      "id": "string"
    },
    "property2": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "label": "MS-LossOfIntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
      "mLabel": "Loss of IntrinsicTW",
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "aLabel": "SysAdmin",
      "impactLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "directCauses": [
        {
          "name": "string"
        }
      ],
      "indirectCauses": [
        {
          "name": "string"
        }
      ],
      "rootCauses": [
        {
          "name": "string"
        }
      ],
      "id": "string"
    }
  },
  "twas": {
    "property1": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
      "label": "TWAS-IntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "attribute": {
        "description": "string",
        "label": "IntrinsicTW",
        "id": "string",
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ]
      },
      "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "assertedTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "inferredTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "id": "string"
    },
    "property2": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
      "label": "TWAS-IntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "attribute": {
        "description": "string",
        "label": "IntrinsicTW",
        "id": "string",
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ]
      },
      "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "assertedTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "inferredTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "id": "string"
    }
  },
  "controlSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
      "label": "PersonalDevice",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
      "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
      "assetId": "string",
      "proposed": true,
      "assertable": true,
      "id": "string"
    }
  ],
  "userId": "string",
  "editorId": "string",
  "created": 0,
  "modified": 0,
  "modifiedBy": "string",
  "levels": [
    {}
  ],
  "assets": [
    {
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#Interface",
      "trustworthinessAttributeSets": [
        "string"
      ],
      "misbehaviourSets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfAvailability-fe26c80"
      ],
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c",
      "label": "Interface-Host01-WiredLAN",
      "description": "string",
      "asserted": true,
      "visible": true,
      "iconX": 0,
      "iconY": 0,
      "minCardinality": 0,
      "maxCardinality": 0,
      "controlSets": {
        "property1": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
          "label": "PersonalDevice",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
          "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "assetId": "string",
          "proposed": true,
          "assertable": true,
          "id": "string"
        },
        "property2": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
          "label": "PersonalDevice",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
          "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "assetId": "string",
          "proposed": true,
          "assertable": true,
          "id": "string"
        }
      },
      "inferredAssets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
      ],
      "id": "string"
    }
  ],
  "relations": [
    {
      "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
      "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
      "asserted": true,
      "fromID": "<asset ID>",
      "label": "interactsWith",
      "toID": "<asset ID>",
      "visible": true,
      "sourceCardinality": -1,
      "targetCardinality": -1,
      "immutable": true,
      "hidden": true,
      "inferredAssets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
      ],
      "id": "9c1817ed"
    }
  ],
  "loadingId": "string",
  "id": "string",
  "readUrl": "string",
  "validating": true
}

Request

Request URL: GET /models

Transfer Parameters

Name Required Parameter Type Object Type Description
Access-Control-Allow-Origin Yes Header String Cookie allowing access

Response

A list of models owned (shared) by the user is returned.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Post models

Send a request to create a new blank model for the user.

POST /model HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "name": "MyNewModel",
  "domainGraph": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain-network"
}
HTTP/1.1 201 Created

Request

Request URL: POST /model

Transfer Parameters

Name Required Parameter Type Object Type Description
name Yes Body String Model name
domainGraph Yes Body String Model graph URI

Response

The reurn code indicates whether the create model was successful.

Common Return Codes

Code Description
201 Created
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Import model

Import model from a file in .nq or .nqz format.

POST /models/import HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "file": "string",
  "asserted": true,
  "overwrite": true,
  "newName": "string"
}
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
[
  {
    "name": "string",
    "description": "string",
    "domainGraph": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain-network",
    "hasChanged": true,
    "valid": true,
    "riskLevelsValid": true,
    "calculatingRisks": true,
    "risk": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
      "label": "Very Low",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ]
    },
    "issues": [
      {
        "assetid": "string",
        "incomingIncomplete": [
          {
            "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
            "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
            "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
          }
        ],
        "outcomingIncomplete": [
          {
            "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
            "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
            "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
          }
        ]
      }
    ],
    "threats": [
      {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
        "label": "string",
        "description": "string",
        "pattern": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#HS_6492bace_b5e6a1b1",
          "label": "HS_Host01_Space01",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "parent": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HS",
          "parentLabel": "string",
          "nodes": [
            {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Node-b5e6a1b1-SpaceRole",
              "label": "string",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "asset": "string",
              "role": "string",
              "aLabel": "string",
              "rLabel": "string",
              "id": "string"
            }
          ],
          "links": [
            {
              "fromAssetLabel": "string",
              "toAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1bae1f35",
              "toRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#SpaceRole",
              "fromRoleLabel": "string",
              "toAssetLabel": "string",
              "typeLabel": "string",
              "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#locatedIn",
              "toRoleLabel": "string",
              "fromAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "fromRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HostRole"
            }
          ],
          "id": "string"
        },
        "threatensAssets": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#H.MTW.HS.1",
        "resolved": true,
        "acceptedJustification": "string",
        "misbehaviours": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfControl-6492bace"
        ],
        "indirectEffects": [
          "string"
        ],
        "secondaryEffectConditions": [
          "string"
        ],
        "controlStrategies": {
          "property1": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
            "label": "string",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "blockingEffect": {
              "description": "string",
              "label": "string",
              "id": "string",
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
              "value": 0,
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ]
            },
            "type": "BLOCK",
            "controlSets": {
              "property1": {
                "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
                "label": "PersonalDevice",
                "description": "string",
                "parents": [
                  "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
                ],
                "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
                "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
                "assetId": "string",
                "proposed": true,
                "assertable": true,
                "id": "string"
              },
              "property2": {
                "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
                "label": "PersonalDevice",
                "description": "string",
                "parents": [
                  "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
                ],
                "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
                "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
                "assetId": "string",
                "proposed": true,
                "assertable": true,
                "id": "string"
              }
            },
            "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
            "enabled": true,
            "id": "string"
          },
          "property2": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
            "label": "string",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "blockingEffect": {
              "description": "string",
              "label": "string",
              "id": "string",
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
              "value": 0,
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ]
            },
            "type": "BLOCK",
            "controlSets": {
              "property1": {
                "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
                "label": "PersonalDevice",
                "description": "string",
                "parents": [
                  "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
                ],
                "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
                "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
                "assetId": "string",
                "proposed": true,
                "assertable": true,
                "id": "string"
              },
              "property2": {
                "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
                "label": "PersonalDevice",
                "description": "string",
                "parents": [
                  "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
                ],
                "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
                "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
                "assetId": "string",
                "proposed": true,
                "assertable": true,
                "id": "string"
              }
            },
            "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
            "enabled": true,
            "id": "string"
          }
        },
        "entryPoints": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-UserTW-b5e6a1b1"
        ],
        "likelihood": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "rootCause": true,
        "allControlCombinations": [
          [
            {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            }
          ]
        ],
        "id": "string"
      }
    ],
    "complianceThreats": [
      {}
    ],
    "complianceSets": [
      {
        "uri": "http://it-innovation.soton.ac.uk/?"
      }
    ],
    "misbehaviourSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "label": "MS-LossOfIntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
        "mLabel": "Loss of IntrinsicTW",
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "aLabel": "SysAdmin",
        "impactLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "directCauses": [
          {
            "name": "string"
          }
        ],
        "indirectCauses": [
          {
            "name": "string"
          }
        ],
        "rootCauses": [
          {
            "name": "string"
          }
        ],
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "label": "MS-LossOfIntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
        "mLabel": "Loss of IntrinsicTW",
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "aLabel": "SysAdmin",
        "impactLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "directCauses": [
          {
            "name": "string"
          }
        ],
        "indirectCauses": [
          {
            "name": "string"
          }
        ],
        "rootCauses": [
          {
            "name": "string"
          }
        ],
        "id": "string"
      }
    },
    "twas": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
        "label": "TWAS-IntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "attribute": {
          "description": "string",
          "label": "IntrinsicTW",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "assertedTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "inferredTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
        "label": "TWAS-IntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "attribute": {
          "description": "string",
          "label": "IntrinsicTW",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "assertedTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "inferredTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "id": "string"
      }
    },
    "controlSets": [
      {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
        "label": "PersonalDevice",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
        "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "assetId": "string",
        "proposed": true,
        "assertable": true,
        "id": "string"
      }
    ],
    "userId": "string",
    "editorId": "string",
    "created": 0,
    "modified": 0,
    "modifiedBy": "string",
    "levels": [
      {}
    ],
    "assets": [
      {
        "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#Interface",
        "trustworthinessAttributeSets": [
          "string"
        ],
        "misbehaviourSets": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfAvailability-fe26c80"
        ],
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c",
        "label": "Interface-Host01-WiredLAN",
        "description": "string",
        "asserted": true,
        "visible": true,
        "iconX": 0,
        "iconY": 0,
        "minCardinality": 0,
        "maxCardinality": 0,
        "controlSets": {
          "property1": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          },
          "property2": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        },
        "inferredAssets": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
        ],
        "id": "string"
      }
    ],
    "relations": [
      {
        "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
        "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
        "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
        "asserted": true,
        "fromID": "<asset ID>",
        "label": "interactsWith",
        "toID": "<asset ID>",
        "visible": true,
        "sourceCardinality": -1,
        "targetCardinality": -1,
        "immutable": true,
        "hidden": true,
        "inferredAssets": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
        ],
        "id": "9c1817ed"
      }
    ],
    "loadingId": "string",
    "id": "string",
    "readUrl": "string",
    "validating": true
  }
]

Request

Request URL: POST /models/import

Transfer Parameters

Name Required Parameter Type Object Type Description
file Yes Body String File to upload
asserted Yes Body Boolean Import asserted facts only
owerwrite Yes Body Boolean Does model overwrite existing with the same name?
newName Yes Body String New name for the model

Response

Returns a full model to the user.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Get model info

Return model info forthe given Model ID.

GET /models/{modelId} HTTP/1.1
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "name": "string",
  "description": "string",
  "domainGraph": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain-network",
  "hasChanged": true,
  "valid": true,
  "riskLevelsValid": true,
  "calculatingRisks": true,
  "risk": {
    "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
    "label": "Very Low",
    "description": "string",
    "parents": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
    ]
  },
  "issues": [
    {
      "assetid": "string",
      "incomingIncomplete": [
        {
          "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
          "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
        }
      ],
      "outcomingIncomplete": [
        {
          "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
          "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
        }
      ]
    }
  ],
  "threats": [
    {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
      "label": "string",
      "description": "string",
      "pattern": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#HS_6492bace_b5e6a1b1",
        "label": "HS_Host01_Space01",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "parent": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HS",
        "parentLabel": "string",
        "nodes": [
          {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Node-b5e6a1b1-SpaceRole",
            "label": "string",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "asset": "string",
            "role": "string",
            "aLabel": "string",
            "rLabel": "string",
            "id": "string"
          }
        ],
        "links": [
          {
            "fromAssetLabel": "string",
            "toAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1bae1f35",
            "toRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#SpaceRole",
            "fromRoleLabel": "string",
            "toAssetLabel": "string",
            "typeLabel": "string",
            "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#locatedIn",
            "toRoleLabel": "string",
            "fromAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "fromRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HostRole"
          }
        ],
        "id": "string"
      },
      "threatensAssets": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#H.MTW.HS.1",
      "resolved": true,
      "acceptedJustification": "string",
      "misbehaviours": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfControl-6492bace"
      ],
      "indirectEffects": [
        "string"
      ],
      "secondaryEffectConditions": [
        "string"
      ],
      "controlStrategies": {
        "property1": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
          "label": "string",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "blockingEffect": {
            "description": "string",
            "label": "string",
            "id": "string",
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
            "value": 0,
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ]
          },
          "type": "BLOCK",
          "controlSets": {
            "property1": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            },
            "property2": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            }
          },
          "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
          "enabled": true,
          "id": "string"
        },
        "property2": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
          "label": "string",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "blockingEffect": {
            "description": "string",
            "label": "string",
            "id": "string",
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
            "value": 0,
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ]
          },
          "type": "BLOCK",
          "controlSets": {
            "property1": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            },
            "property2": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            }
          },
          "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
          "enabled": true,
          "id": "string"
        }
      },
      "entryPoints": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-UserTW-b5e6a1b1"
      ],
      "likelihood": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "rootCause": true,
      "allControlCombinations": [
        [
          {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        ]
      ],
      "id": "string"
    }
  ],
  "complianceThreats": [
    {}
  ],
  "complianceSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/?"
    }
  ],
  "misbehaviourSets": {
    "property1": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "label": "MS-LossOfIntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
      "mLabel": "Loss of IntrinsicTW",
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "aLabel": "SysAdmin",
      "impactLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "directCauses": [
        {
          "name": "string"
        }
      ],
      "indirectCauses": [
        {
          "name": "string"
        }
      ],
      "rootCauses": [
        {
          "name": "string"
        }
      ],
      "id": "string"
    },
    "property2": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "label": "MS-LossOfIntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
      "mLabel": "Loss of IntrinsicTW",
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "aLabel": "SysAdmin",
      "impactLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "directCauses": [
        {
          "name": "string"
        }
      ],
      "indirectCauses": [
        {
          "name": "string"
        }
      ],
      "rootCauses": [
        {
          "name": "string"
        }
      ],
      "id": "string"
    }
  },
  "twas": {
    "property1": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
      "label": "TWAS-IntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "attribute": {
        "description": "string",
        "label": "IntrinsicTW",
        "id": "string",
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ]
      },
      "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "assertedTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "inferredTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "id": "string"
    },
    "property2": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
      "label": "TWAS-IntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "attribute": {
        "description": "string",
        "label": "IntrinsicTW",
        "id": "string",
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ]
      },
      "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "assertedTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "inferredTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "id": "string"
    }
  },
  "controlSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
      "label": "PersonalDevice",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
      "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
      "assetId": "string",
      "proposed": true,
      "assertable": true,
      "id": "string"
    }
  ],
  "userId": "string",
  "editorId": "string",
  "created": 0,
  "modified": 0,
  "modifiedBy": "string",
  "levels": [
    {}
  ],
  "assets": [
    {
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#Interface",
      "trustworthinessAttributeSets": [
        "string"
      ],
      "misbehaviourSets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfAvailability-fe26c80"
      ],
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c",
      "label": "Interface-Host01-WiredLAN",
      "description": "string",
      "asserted": true,
      "visible": true,
      "iconX": 0,
      "iconY": 0,
      "minCardinality": 0,
      "maxCardinality": 0,
      "controlSets": {
        "property1": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
          "label": "PersonalDevice",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
          "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "assetId": "string",
          "proposed": true,
          "assertable": true,
          "id": "string"
        },
        "property2": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
          "label": "PersonalDevice",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
          "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "assetId": "string",
          "proposed": true,
          "assertable": true,
          "id": "string"
        }
      },
      "inferredAssets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
      ],
      "id": "string"
    }
  ],
  "relations": [
    {
      "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
      "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
      "asserted": true,
      "fromID": "<asset ID>",
      "label": "interactsWith",
      "toID": "<asset ID>",
      "visible": true,
      "sourceCardinality": -1,
      "targetCardinality": -1,
      "immutable": true,
      "hidden": true,
      "inferredAssets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
      ],
      "id": "9c1817ed"
    }
  ],
  "loadingId": "string",
  "id": "string",
  "readUrl": "string",
  "validating": true
}

Request

Request URL: GET /models/{modelId}

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Request String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Returns all metadata related to the given model.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Update model

Update model parameters.

PUT /models/{modelId} HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "id": "string",
  "name": "string",
  "description": "string",
  "domainGraph": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain-network",
  "created": 0,
  "modified": 0
}
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "name": "string",
  "description": "string",
  "domainGraph": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain-network",
  "hasChanged": true,
  "valid": true,
  "riskLevelsValid": true,
  "calculatingRisks": true,
  "risk": {
    "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
    "label": "Very Low",
    "description": "string",
    "parents": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
    ]
  },
  "issues": [
    {
      "assetid": "string",
      "incomingIncomplete": [
        {
          "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
          "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
        }
      ],
      "outcomingIncomplete": [
        {
          "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
          "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
        }
      ]
    }
  ],
  "threats": [
    {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
      "label": "string",
      "description": "string",
      "pattern": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#HS_6492bace_b5e6a1b1",
        "label": "HS_Host01_Space01",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "parent": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HS",
        "parentLabel": "string",
        "nodes": [
          {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Node-b5e6a1b1-SpaceRole",
            "label": "string",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "asset": "string",
            "role": "string",
            "aLabel": "string",
            "rLabel": "string",
            "id": "string"
          }
        ],
        "links": [
          {
            "fromAssetLabel": "string",
            "toAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1bae1f35",
            "toRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#SpaceRole",
            "fromRoleLabel": "string",
            "toAssetLabel": "string",
            "typeLabel": "string",
            "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#locatedIn",
            "toRoleLabel": "string",
            "fromAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "fromRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HostRole"
          }
        ],
        "id": "string"
      },
      "threatensAssets": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#H.MTW.HS.1",
      "resolved": true,
      "acceptedJustification": "string",
      "misbehaviours": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfControl-6492bace"
      ],
      "indirectEffects": [
        "string"
      ],
      "secondaryEffectConditions": [
        "string"
      ],
      "controlStrategies": {
        "property1": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
          "label": "string",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "blockingEffect": {
            "description": "string",
            "label": "string",
            "id": "string",
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
            "value": 0,
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ]
          },
          "type": "BLOCK",
          "controlSets": {
            "property1": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            },
            "property2": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            }
          },
          "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
          "enabled": true,
          "id": "string"
        },
        "property2": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
          "label": "string",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "blockingEffect": {
            "description": "string",
            "label": "string",
            "id": "string",
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
            "value": 0,
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ]
          },
          "type": "BLOCK",
          "controlSets": {
            "property1": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            },
            "property2": {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            }
          },
          "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
          "enabled": true,
          "id": "string"
        }
      },
      "entryPoints": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-UserTW-b5e6a1b1"
      ],
      "likelihood": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "rootCause": true,
      "allControlCombinations": [
        [
          {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        ]
      ],
      "id": "string"
    }
  ],
  "complianceThreats": [
    {}
  ],
  "complianceSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/?"
    }
  ],
  "misbehaviourSets": {
    "property1": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "label": "MS-LossOfIntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
      "mLabel": "Loss of IntrinsicTW",
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "aLabel": "SysAdmin",
      "impactLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "directCauses": [
        {
          "name": "string"
        }
      ],
      "indirectCauses": [
        {
          "name": "string"
        }
      ],
      "rootCauses": [
        {
          "name": "string"
        }
      ],
      "id": "string"
    },
    "property2": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "label": "MS-LossOfIntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
      "mLabel": "Loss of IntrinsicTW",
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "aLabel": "SysAdmin",
      "impactLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "riskLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "directCauses": [
        {
          "name": "string"
        }
      ],
      "indirectCauses": [
        {
          "name": "string"
        }
      ],
      "rootCauses": [
        {
          "name": "string"
        }
      ],
      "id": "string"
    }
  },
  "twas": {
    "property1": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
      "label": "TWAS-IntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "attribute": {
        "description": "string",
        "label": "IntrinsicTW",
        "id": "string",
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ]
      },
      "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "assertedTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "inferredTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "id": "string"
    },
    "property2": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
      "label": "TWAS-IntrinsicTW-eb869a1e",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
      "attribute": {
        "description": "string",
        "label": "IntrinsicTW",
        "id": "string",
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ]
      },
      "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
      "assertedTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "inferredTWLevel": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
        "label": "Very Low",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "value": 0,
        "id": "string"
      },
      "id": "string"
    }
  },
  "controlSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
      "label": "PersonalDevice",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
      "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
      "assetId": "string",
      "proposed": true,
      "assertable": true,
      "id": "string"
    }
  ],
  "userId": "string",
  "editorId": "string",
  "created": 0,
  "modified": 0,
  "modifiedBy": "string",
  "levels": [
    {}
  ],
  "assets": [
    {
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#Interface",
      "trustworthinessAttributeSets": [
        "string"
      ],
      "misbehaviourSets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfAvailability-fe26c80"
      ],
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c",
      "label": "Interface-Host01-WiredLAN",
      "description": "string",
      "asserted": true,
      "visible": true,
      "iconX": 0,
      "iconY": 0,
      "minCardinality": 0,
      "maxCardinality": 0,
      "controlSets": {
        "property1": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
          "label": "PersonalDevice",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
          "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "assetId": "string",
          "proposed": true,
          "assertable": true,
          "id": "string"
        },
        "property2": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
          "label": "PersonalDevice",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
          "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "assetId": "string",
          "proposed": true,
          "assertable": true,
          "id": "string"
        }
      },
      "inferredAssets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
      ],
      "id": "string"
    }
  ],
  "relations": [
    {
      "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
      "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
      "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
      "asserted": true,
      "fromID": "<asset ID>",
      "label": "interactsWith",
      "toID": "<asset ID>",
      "visible": true,
      "sourceCardinality": -1,
      "targetCardinality": -1,
      "immutable": true,
      "hidden": true,
      "inferredAssets": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
      ],
      "id": "9c1817ed"
    }
  ],
  "loadingId": "string",
  "id": "string",
  "readUrl": "string",
  "validating": true
}

Request

Request URL: PUT /models/{modelId}

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Request String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

In success the updated model is returned to the user.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Delete model

Delete model referenced by the Model ID.

DELETE /models/{modelId} HTTP/1.1
HTTP/1.1 200 Successful

Request

Request URL: DELETE /models/{modelId}

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Request String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Response indicates the outcome of request.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Export model

Exporting moddel to an .nq.gz file.

GET /models/{modelId}/export HTTP/1.1
HTTP/1.1 200 Exported

Request

Request URL: GET /models/{modelId}/export

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Request String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Return an export of the model in .nq.gz format.

Common Return Codes

Code Description
200 Exported
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Model issues

Get a list of issues for the given model.

 GET /models/{modelId}/issues  HTTP/1.1
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
[
  {
    "assetid": "string",
    "incomingIncomplete": [
      {
        "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
        "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
        "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
      }
    ],
    "outcomingIncomplete": [
      {
        "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
        "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
        "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
      }
    ]
  }
]

Request

Request URL: GET /models/{modelId}/issues

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

The full model is returned with issues highlighted in the model diagram.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Risk calculation

Initiate a risk calculation operation for the model given the ID of the model.

GET /models/{modelId}/calc_risks  HTTP/1.1
HTTP/1.1 202 Accepted
"Error string"

Request

Request URL: GET /models/{modelId}/calc_risks

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Response indicates the cause of error.

Common Return Codes

Code Description
202 Accepted
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Model validation

Initiate a validation operation for the model given the ID of the model.

GET /models/{modelId}/validated HTTP/1.1
HTTP/1.1 202 Accepted 
"Message"

Request

Request URL: GET /models/{modelId}/validated

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Response indicating the outcome of request.

Common Return Codes

Code Description
202 Accepted
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

List assets

List all assets for the given model.

GET /models/{modelId}/assets HTTP/1.1
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "Asset": {
    "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c",
    "label": "Interface-Host01-WiredLAN",
    "description": "string",
    "asserted": true,
    "visible": true,
    "iconX": 0,
    "iconY": 0,
    "minCardinality": 0,
    "maxCardinality": 0,
    "controlSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
        "label": "PersonalDevice",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
        "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "assetId": "string",
        "proposed": true,
        "assertable": true,
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
        "label": "PersonalDevice",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
        "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "assetId": "string",
        "proposed": true,
        "assertable": true,
        "id": "string"
      }
    },
    "inferredAssets": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
    ],
    "id": "string"
  },
  "AssetAdditional": {
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#Interface",
    "parents": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
    ],
    "misbehaviourSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "label": "MS-LossOfIntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
        "mLabel": "Loss of IntrinsicTW",
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "aLabel": "SysAdmin",
        "impactLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "directCauses": [
          {
            "name": "string"
          }
        ],
        "indirectCauses": [
          {
            "name": "string"
          }
        ],
        "rootCauses": [
          {
            "name": "string"
          }
        ],
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "label": "MS-LossOfIntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
        "mLabel": "Loss of IntrinsicTW",
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "aLabel": "SysAdmin",
        "impactLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "directCauses": [
          {
            "name": "string"
          }
        ],
        "indirectCauses": [
          {
            "name": "string"
          }
        ],
        "rootCauses": [
          {
            "name": "string"
          }
        ],
        "id": "string"
      }
    },
    "trustworthinessAttributeSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
        "label": "TWAS-IntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "attribute": {
          "description": "string",
          "label": "IntrinsicTW",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "assertedTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "inferredTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
        "label": "TWAS-IntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "attribute": {
          "description": "string",
          "label": "IntrinsicTW",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "assertedTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "inferredTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "id": "string"
      }
    }
  }
}

Request

Request URL: GET /models/{modelId}/assets

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Response contains all assets of the given model.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Create new asset

Creating or modifying an asset.

POST /models/{modelId}/assets HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "label": "FixedHost",
  "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HostedAsset",
  "asserted": true,
  "visible": true,
  "iconX": 0,
  "iconY": 0,
  "minCardinality": 0,
  "maxCardinality": 0
}
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
{
  "valid": true,
  "asset": {
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#Interface",
    "trustworthinessAttributeSets": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e"
    ],
    "misbehaviourSets": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e"
    ],
    "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c",
    "label": "Interface-Host01-WiredLAN",
    "description": "string",
    "asserted": true,
    "visible": true,
    "iconX": 0,
    "iconY": 0,
    "minCardinality": 0,
    "maxCardinality": 0,
    "controlSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
        "label": "PersonalDevice",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
        "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "assetId": "string",
        "proposed": true,
        "assertable": true,
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
        "label": "PersonalDevice",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
        "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "assetId": "string",
        "proposed": true,
        "assertable": true,
        "id": "string"
      }
    },
    "inferredAssets": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
    ],
    "id": "string"
  }
}

Request

Request URL: POST /models/{modelId}/assets

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.
label Yes Body String Name of the asset
type Yes Body String Specifying the type of asset
asserted Yes Body Boolean Asset specified by the user
visible Yes Body Boolean Displaying the asset
iconX Yes Body Integer Icon position, x-coordinate
iconY Yes Body Integer Icon position, y-coordinate

Response

A new asset added to the model.

Common Return Codes

Code Description
201 Created
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Asset information

Getting information about the asset.

GET /models/{modelId}/assets/{assetId}  HTTP/1.1
HTTP/1.1 200 Successful 
Content-Type: application/json; charset=utf-8
{
  "Asset": {
    "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c",
    "label": "Interface-Host01-WiredLAN",
    "description": "string",
    "asserted": true,
    "visible": true,
    "iconX": 0,
    "iconY": 0,
    "minCardinality": 0,
    "maxCardinality": 0,
    "controlSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
        "label": "PersonalDevice",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
        "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "assetId": "string",
        "proposed": true,
        "assertable": true,
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
        "label": "PersonalDevice",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
        "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "assetId": "string",
        "proposed": true,
        "assertable": true,
        "id": "string"
      }
    },
    "inferredAssets": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
    ],
    "id": "string"
  },
  "AssetAdditional": {
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#Interface",
    "parents": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
    ],
    "misbehaviourSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "label": "MS-LossOfIntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
        "mLabel": "Loss of IntrinsicTW",
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "aLabel": "SysAdmin",
        "impactLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "directCauses": [
          {
            "name": "string"
          }
        ],
        "indirectCauses": [
          {
            "name": "string"
          }
        ],
        "rootCauses": [
          {
            "name": "string"
          }
        ],
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "label": "MS-LossOfIntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
        "mLabel": "Loss of IntrinsicTW",
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "aLabel": "SysAdmin",
        "impactLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "directCauses": [
          {
            "name": "string"
          }
        ],
        "indirectCauses": [
          {
            "name": "string"
          }
        ],
        "rootCauses": [
          {
            "name": "string"
          }
        ],
        "id": "string"
      }
    },
    "trustworthinessAttributeSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
        "label": "TWAS-IntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "attribute": {
          "description": "string",
          "label": "IntrinsicTW",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "assertedTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "inferredTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
        "label": "TWAS-IntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "attribute": {
          "description": "string",
          "label": "IntrinsicTW",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "assertedTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "inferredTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "id": "string"
      }
    }
  }
}

Request

Request URL: GET /models/{modelId}/assets/{assetId}

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.
assetId Yes Resource String Asset ID that can be used in the request. Found in Asset definition and any response that returns Asset type or assetId attributes.

Response

Returning all asset related attributes.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Delete asset

Delete asset from the model.

DELETE /models/{modelId}/assets/{assetId} HTTP/1.1
HTTP/1.1 200 Successful 
Content-Type: application/json; charset=utf-8
{
  "valid": true,
  "assets": [
    "<asset ID>"
  ],
  "relations": [
    "<reation ID>"
  ],
  "issues": [
    "<issue ID>"
  ],
  "empty": true
}

Request

Request URL: DELETE /models/{modelId}/assets/{assetId}

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.
assetId Yes Resource String Asset ID that can be used in the request. Found in Asset definition and any response that returns Asset type or assetId attributes.

Response

Confirming the deletion of asset and the associated relations.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Relations in the model

List all relations of the given model.

GET /models/{modelId}/relations  HTTP/1.1
HTTP/1.1 200 Successful 
Content-Type: application/json; charset=utf-8
[
  {
    "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
    "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
    "asserted": true,
    "fromID": "<asset ID>",
    "label": "interactsWith",
    "toID": "<asset ID>",
    "visible": true,
    "sourceCardinality": -1,
    "targetCardinality": -1,
    "immutable": true,
    "hidden": true,
    "inferredAssets": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
    ],
    "id": "9c1817ed"
  }
]

Request

Request URL: GET /models/{modelId}/relations

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Returning a list of relations.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Create a new relation

Adding a new relation (link between the assets).

POST /models/{modelId}/relations  HTTP/1.1
{
  "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
  "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
  "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
  "asserted": true,
  "fromID": "<asset ID>",
  "label": "interactsWith",
  "toID": "<asset ID>",
  "visible": true
}

HTTP/1.1 201 Created 
Content-Type: application/json; charset=utf-8
{
  "model": {
    "name": "string",
    "description": "string",
    "domainGraph": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain-network",
    "hasChanged": true,
    "valid": true,
    "riskLevelsValid": true,
    "calculatingRisks": true,
    "risk": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
      "label": "Very Low",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ]
    },
    "issues": [
      {
        "assetid": "string",
        "incomingIncomplete": [
          {
            "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
            "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
            "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
          }
        ],
        "outcomingIncomplete": [
          {
            "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
            "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
            "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
          }
        ]
      }
    ],
    "threats": [
      {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
        "label": "string",
        "description": "string",
        "pattern": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#HS_6492bace_b5e6a1b1",
          "label": "HS_Host01_Space01",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "parent": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HS",
          "parentLabel": "string",
          "nodes": [
            {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Node-b5e6a1b1-SpaceRole",
              "label": "string",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "asset": "string",
              "role": "string",
              "aLabel": "string",
              "rLabel": "string",
              "id": "string"
            }
          ],
          "links": [
            {
              "fromAssetLabel": "string",
              "toAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1bae1f35",
              "toRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#SpaceRole",
              "fromRoleLabel": "string",
              "toAssetLabel": "string",
              "typeLabel": "string",
              "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#locatedIn",
              "toRoleLabel": "string",
              "fromAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "fromRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HostRole"
            }
          ],
          "id": "string"
        },
        "threatensAssets": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#H.MTW.HS.1",
        "resolved": true,
        "acceptedJustification": "string",
        "misbehaviours": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfControl-6492bace"
        ],
        "indirectEffects": [
          "string"
        ],
        "secondaryEffectConditions": [
          "string"
        ],
        "controlStrategies": {
          "property1": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
            "label": "string",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "blockingEffect": {
              "description": "string",
              "label": "string",
              "id": "string",
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
              "value": 0,
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ]
            },
            "type": "BLOCK",
            "controlSets": {
              "property1": {
                "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
                "label": "PersonalDevice",
                "description": "string",
                "parents": [
                  "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
                ],
                "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
                "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
                "assetId": "string",
                "proposed": true,
                "assertable": true,
                "id": "string"
              },
              "property2": {
                "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
                "label": "PersonalDevice",
                "description": "string",
                "parents": [
                  "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
                ],
                "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
                "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
                "assetId": "string",
                "proposed": true,
                "assertable": true,
                "id": "string"
              }
            },
            "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
            "enabled": true,
            "id": "string"
          },
          "property2": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
            "label": "string",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "blockingEffect": {
              "description": "string",
              "label": "string",
              "id": "string",
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
              "value": 0,
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ]
            },
            "type": "BLOCK",
            "controlSets": {
              "property1": {
                "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
                "label": "PersonalDevice",
                "description": "string",
                "parents": [
                  "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
                ],
                "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
                "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
                "assetId": "string",
                "proposed": true,
                "assertable": true,
                "id": "string"
              },
              "property2": {
                "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
                "label": "PersonalDevice",
                "description": "string",
                "parents": [
                  "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
                ],
                "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
                "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
                "assetId": "string",
                "proposed": true,
                "assertable": true,
                "id": "string"
              }
            },
            "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
            "enabled": true,
            "id": "string"
          }
        },
        "entryPoints": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-UserTW-b5e6a1b1"
        ],
        "likelihood": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "rootCause": true,
        "allControlCombinations": [
          [
            {
              "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
              "label": "PersonalDevice",
              "description": "string",
              "parents": [
                "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
              ],
              "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
              "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
              "assetId": "string",
              "proposed": true,
              "assertable": true,
              "id": "string"
            }
          ]
        ],
        "id": "string"
      }
    ],
    "complianceThreats": [
      {}
    ],
    "complianceSets": [
      {
        "uri": "http://it-innovation.soton.ac.uk/?"
      }
    ],
    "misbehaviourSets": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "label": "MS-LossOfIntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
        "mLabel": "Loss of IntrinsicTW",
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "aLabel": "SysAdmin",
        "impactLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "directCauses": [
          {
            "name": "string"
          }
        ],
        "indirectCauses": [
          {
            "name": "string"
          }
        ],
        "rootCauses": [
          {
            "name": "string"
          }
        ],
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "label": "MS-LossOfIntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "misbehaviour": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#LossOfIntrinsicTW",
        "mLabel": "Loss of IntrinsicTW",
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "aLabel": "SysAdmin",
        "impactLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "riskLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "directCauses": [
          {
            "name": "string"
          }
        ],
        "indirectCauses": [
          {
            "name": "string"
          }
        ],
        "rootCauses": [
          {
            "name": "string"
          }
        ],
        "id": "string"
      }
    },
    "twas": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
        "label": "TWAS-IntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "attribute": {
          "description": "string",
          "label": "IntrinsicTW",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "assertedTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "inferredTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-IntrinsicTW-eb869a1e",
        "label": "TWAS-IntrinsicTW-eb869a1e",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "asset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1cc489d9",
        "attribute": {
          "description": "string",
          "label": "IntrinsicTW",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#IntrinsicTW",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "causingMisbehaviourSet": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfIntrinsicTW-eb869a1e",
        "assertedTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "inferredTWLevel": {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
          "label": "Very Low",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "value": 0,
          "id": "string"
        },
        "id": "string"
      }
    },
    "controlSets": [
      {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
        "label": "PersonalDevice",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
        "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
        "assetId": "string",
        "proposed": true,
        "assertable": true,
        "id": "string"
      }
    ],
    "userId": "string",
    "editorId": "string",
    "created": 0,
    "modified": 0,
    "modifiedBy": "string",
    "levels": [
      {}
    ],
    "assets": [
      {
        "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#Interface",
        "trustworthinessAttributeSets": [
          "string"
        ],
        "misbehaviourSets": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfAvailability-fe26c80"
        ],
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c",
        "label": "Interface-Host01-WiredLAN",
        "description": "string",
        "asserted": true,
        "visible": true,
        "iconX": 0,
        "iconY": 0,
        "minCardinality": 0,
        "maxCardinality": 0,
        "controlSets": {
          "property1": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          },
          "property2": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        },
        "inferredAssets": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
        ],
        "id": "string"
      }
    ],
    "relations": [
      {
        "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
        "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
        "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
        "asserted": true,
        "fromID": "<asset ID>",
        "label": "interactsWith",
        "toID": "<asset ID>",
        "visible": true,
        "sourceCardinality": -1,
        "targetCardinality": -1,
        "immutable": true,
        "hidden": true,
        "inferredAssets": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
        ],
        "id": "9c1817ed"
      }
    ],
    "loadingId": "string",
    "id": "string",
    "readUrl": "string",
    "validating": true
  },
  "relation": {
    "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
    "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
    "asserted": true,
    "fromID": "<asset ID>",
    "label": "interactsWith",
    "toID": "<asset ID>",
    "visible": true
  }
}

}

Request

Request URL: POST /models/{modelId}/relations

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Returning the updated model with a new relation created.

Common Return Codes

Code Description
201 Created
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Relation information

Getting information about the relation.

GET /models/{modelId}/relations/{relationId} HTTP/1.1
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "Relation": {
    "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
    "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
    "asserted": true,
    "fromID": "<asset ID>",
    "label": "interactsWith",
    "toID": "<asset ID>",
    "visible": true
  },
  "RelationAdditional": {
    "sourceCardinality": -1,
    "targetCardinality": -1,
    "immutable": true,
    "hidden": true,
    "inferredAssets": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
    ],
    "id": "9c1817ed"
  }
}

Request

Request URL: GET /models/{modelId}/relations/{relationId}

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.
relationId Yes Resource String Relation ID that can be used in the request. Found in Relation definition and any response that returns Relation type or relationId attributes.

Response

Returning all relation attributes

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Update relation

Update relation in the model.

PUT /models/{modelId}/relations/{relationId} HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
  "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
  "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
  "asserted": true,
  "fromID": "<asset ID>",
  "label": "interactsWith",
  "toID": "<asset ID>",
  "visible": true
}
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "Relation": {
    "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
    "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts",
    "asserted": true,
    "fromID": "<asset ID>",
    "label": "interactsWith",
    "toID": "<asset ID>",
    "visible": true
  },
  "RelationAdditional": {
    "sourceCardinality": -1,
    "targetCardinality": -1,
    "immutable": true,
    "hidden": true,
    "inferredAssets": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Interface_6492bace_7cdb2f3c"
    ],
    "id": "9c1817ed"
  }
}

Request

Request URL: PUT /models/{modelId}/relations/{relationId}

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.
relationId Yes Resource String Relation ID that can be used in the request. Found in Relation definition and any response that returns Relation type or relationId attributes.

Response

Returning all relation attributes

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Delete relation

Deleting a relation from the model

DELETE /models/{modelId}/relations/{relationId} HTTP/1.1
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "valid": true,
  "assets": [
    "<asset ID>"
  ],
  "relations": [
    "<relation ID>"
  ],
  "issues": [
    {
      "assetid": "string",
      "incomingIncomplete": [
        {
          "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
          "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
        }
      ],
      "outcomingIncomplete": [
        {
          "from": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#bbbd4ee8",
          "to": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#3dbdcee8",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#hosts"
        }
      ]
    }
  ],
  "empty": true
}

Request

Request URL: DELETE /models/{modelId}/relations/{relationId}

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.
relationId Yes Resource String Relation ID that can be used in the request. Found in Relation definition and any response that returns Relation type or relationId attributes.

Response

Returning all relation attributes

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

List all threats

List all threats associated with the model.

GET /models/{modelId}/threats HTTP/1.1
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
[
  {
    "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
    "label": "string",
    "description": "string",
    "pattern": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#HS_6492bace_b5e6a1b1",
      "label": "HS_Host01_Space01",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "parent": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HS",
      "parentLabel": "string",
      "nodes": [
        {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Node-b5e6a1b1-SpaceRole",
          "label": "string",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "asset": "string",
          "role": "string",
          "aLabel": "string",
          "rLabel": "string",
          "id": "string"
        }
      ],
      "links": [
        {
          "fromAssetLabel": "string",
          "toAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1bae1f35",
          "toRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#SpaceRole",
          "fromRoleLabel": "string",
          "toAssetLabel": "string",
          "typeLabel": "string",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#locatedIn",
          "toRoleLabel": "string",
          "fromAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "fromRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HostRole"
        }
      ],
      "id": "string"
    },
    "threatensAssets": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#H.MTW.HS.1",
    "resolved": true,
    "acceptedJustification": "string",
    "misbehaviours": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfControl-6492bace"
    ],
    "indirectEffects": [
      "string"
    ],
    "secondaryEffectConditions": [
      "string"
    ],
    "controlStrategies": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
        "label": "string",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "blockingEffect": {
          "description": "string",
          "label": "string",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
          "value": 0,
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "type": "BLOCK",
        "controlSets": {
          "property1": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          },
          "property2": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        },
        "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
        "enabled": true,
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
        "label": "string",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "blockingEffect": {
          "description": "string",
          "label": "string",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
          "value": 0,
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "type": "BLOCK",
        "controlSets": {
          "property1": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          },
          "property2": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        },
        "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
        "enabled": true,
        "id": "string"
      }
    },
    "entryPoints": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-UserTW-b5e6a1b1"
    ],
    "likelihood": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
      "label": "Very Low",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "value": 0,
      "id": "string"
    },
    "riskLevel": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
      "label": "Very Low",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "value": 0,
      "id": "string"
    },
    "rootCause": true,
    "allControlCombinations": [
      [
        {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
          "label": "PersonalDevice",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
          "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "assetId": "string",
          "proposed": true,
          "assertable": true,
          "id": "string"
        }
      ]
    ],
    "id": "string"
  }
]

Request

Request URL: GET /models/{modelId}/threats

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.

Response

Returning a list of threats.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Threats and controls

List threats and controls specific for the given asset. Can be used for a more compact information retrieval.

GET /models/{modelId}/assets/{assetId}/controls_and_threats HTTP/1.1
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "complianceThreat": "string",
  "complianceSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/?"
    }
  ],
  "threats": {
    "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
    "label": "string",
    "description": "string",
    "pattern": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#HS_6492bace_b5e6a1b1",
      "label": "HS_Host01_Space01",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "parent": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HS",
      "parentLabel": "string",
      "nodes": [
        {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#Node-b5e6a1b1-SpaceRole",
          "label": "string",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "asset": "string",
          "role": "string",
          "aLabel": "string",
          "rLabel": "string",
          "id": "string"
        }
      ],
      "links": [
        {
          "fromAssetLabel": "string",
          "toAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#1bae1f35",
          "toRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#SpaceRole",
          "fromRoleLabel": "string",
          "toAssetLabel": "string",
          "typeLabel": "string",
          "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#locatedIn",
          "toRoleLabel": "string",
          "fromAsset": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "fromRole": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#HostRole"
        }
      ],
      "id": "string"
    },
    "threatensAssets": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
    "type": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#H.MTW.HS.1",
    "resolved": true,
    "acceptedJustification": "string",
    "misbehaviours": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#MS-LossOfControl-6492bace"
    ],
    "indirectEffects": [
      "string"
    ],
    "secondaryEffectConditions": [
      "string"
    ],
    "controlStrategies": {
      "property1": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
        "label": "string",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "blockingEffect": {
          "description": "string",
          "label": "string",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
          "value": 0,
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "type": "BLOCK",
        "controlSets": {
          "property1": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          },
          "property2": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        },
        "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
        "enabled": true,
        "id": "string"
      },
      "property2": {
        "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1-CSG-PersonalDeviceProtection",
        "label": "string",
        "description": "string",
        "parents": [
          "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
        ],
        "blockingEffect": {
          "description": "string",
          "label": "string",
          "id": "string",
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#TrustworthinessLevelHigh",
          "value": 0,
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ]
        },
        "type": "BLOCK",
        "controlSets": {
          "property1": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          },
          "property2": {
            "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
            "label": "PersonalDevice",
            "description": "string",
            "parents": [
              "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
            ],
            "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
            "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
            "assetId": "string",
            "proposed": true,
            "assertable": true,
            "id": "string"
          }
        },
        "threat": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#H.MTW.HS.1-HS_6492bace_b5e6a1b1",
        "enabled": true,
        "id": "string"
      }
    },
    "entryPoints": [
      "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#TWAS-UserTW-b5e6a1b1"
    ],
    "likelihood": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
      "label": "Very Low",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "value": 0,
      "id": "string"
    },
    "riskLevel": {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#RiskLevelVeryLow",
      "label": "Very Low",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "value": 0,
      "id": "string"
    },
    "rootCause": true,
    "allControlCombinations": [
      [
        {
          "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
          "label": "PersonalDevice",
          "description": "string",
          "parents": [
            "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
          ],
          "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
          "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
          "assetId": "string",
          "proposed": true,
          "assertable": true,
          "id": "string"
        }
      ]
    ],
    "id": "string"
  },
  "controlSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
      "label": "PersonalDevice",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
      "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
      "assetId": "string",
      "proposed": true,
      "assertable": true,
      "id": "string"
    }
  ]
}

Request

Request URL: GET /models/{modelId}/assets/{assetId}/controls_and_threats

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.
assetId Yes Resource String Asset ID that can be used in the request. Found in Asset definition and any response that returns Asset type or assetId attributes.

Response

Returning a list of threats and controls for a specific asset.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Update control

Update control for a specific asset. Used mainly in the control set operations.

PUT /models/{modelId}/assets/{assetId}/control HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
  "label": "PersonalDevice",
  "description": "string",
  "parents": [
    "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
  ],
  "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
  "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
  "assetId": "string",
  "proposed": true,
  "assertable": true,
  "id": "string"
}
HTTP/1.1 200 Successful
Content-Type: application/json; charset=utf-8
{
  "complianceThreat": "string",
  "complianceSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/?"
    }
  ],
  "threats": "string",
  "controlSets": [
    {
      "uri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#CS-PersonalDevice-6492bace",
      "label": "PersonalDevice",
      "description": "string",
      "parents": [
        "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/core#TrustworthinessLevel"
      ],
      "control": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/domain#PersonalDevice",
      "assetUri": "http://it-innovation.soton.ac.uk/ontologies/trustworthiness/system#8fe081a8",
      "assetId": "string",
      "proposed": true,
      "assertable": true,
      "id": "string"
    }
  ]
}

Request

Request URL: PUT /models/{modelId}/assets/{assetId}/control

Transfer Parameters

Name Required Parameter Type Object Type Description
modelId Yes Resource String Model ID that can be used to access the model. Found in ModelInfo definition and any response that returns ModelInfo type.
assetId Yes Resource String Asset ID that can be used in the request. Found in Asset definition and any response that returns Asset type or assetId attributes.

Response

Returning updated control set.

Common Return Codes

Code Description
200 Successful
401 Unauthorised
403 Forbidden
404 Not found
500 Internal Server Error

Prediction and Optimisation Designer

ZDMP Process Prediction and Optimisation Designer is the ZDMP tool in charge of selecting the best algorithms to be used for a zero-defect manufacturing process depending on the business and problem context at hand. The Process Prediction and Optimisation Designer considers the optimisation objectives, the performance configuration and the data structure to propose the best algorithm and a parametrisation to run embedded on a ZDMP app.

Create Project

Create a new Process Prediction and Optimisation Designer project to model and solve a zero-defect problem. The Process Prediction and Optimisation Model has a name and a description along with a set of parameters that are used to propose and select a Process Prediction and Optimisation Technique (like optimisers or machine learning Projects) to run on data.

POST /v1/Projects HTTP/1.1
Content-Type: application/json; charset=utf-8
{
    name: "project2",
    description: "this model optimises energy consumption in plant A"
}
HTTP/1.1 201 Problem Model created

Request

Request URL: POST /v1/Projects

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id No Body string ID for model
name Yes Body int Name of the process
description Yes Body float Description of the prediction and optimisation model

Response

The responses with an HTML code with the following meaning:

Common Return Codes

Code Description
201 Project created
400 Malformed request
403 Forbidden
500 Server error

Update Project

Update a name or description of an existing Process Prediction and Optimisation Designer Model project.

PUT /v1/Projects/15ACD HTTP/1.1
Content-Type: application/json; charset=utf-8
{
    name: "project2",
    description: "this model optimises energy consumption in plant A"
}
HTTP/1.1 201 Problem Model updated

Request

Request URL: PUT /v1/Projects/<project_id>

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string ID for model
name Yes Body int Name of the process
description Yes Body float Description of the prediction and optimisation model

Response

The responses with an HTML code with the following meaning:

Common Return Codes

Code Description
201 Model created
400 Malformed request
403 Forbidden
500 Server error

Delete Model

Delete an existing Process Prediction and Optimisation Designer Model project.

DELETE /v1/Projects/15ACD HTTP/1.1
HTTP/1.1 201 Problem Model Deleted

Request

Request URL: DELETE /v1/Projects/<project_id>

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string ID for model

Response

The responses with an HTML code with the following meaning:

Common Return Codes

Code Description
201 Model deleted
400 Malformed request
403 Forbidden
500 Server error

Get List of Model Objectives

Associated to a Process Prediction and Optimisation Designer Model project there is an objective, or goal of the problem to be solved, eg the minimisation of energy consumption. This endpoint provides the list of objectives supported by the algorithms available to the designer.

GET /v1/Projects/Objectives HTTP/1.1
HTTP/1.1 201 OK
Content-Type: application/json; charset=utf-8
[
    {
        id: "of_001",
        name: "reduce energy inefficiencies"
        type: "min",
        resource_type: ["energy"]
    },
    {
        id: "of_002",
        name: "maximise productivity and quality"
        type: "max",
        resource_type: ["productivity","quality"]
    }
]

Request

Request URL: GET /v1/Objectives

Transfer Parameters

None

Response

The response contains a list of objectives available with the following structure:

Name Type Description
id string id of the goal
name string name of the goal
type string minimise or maximise an objective
resource_type array of strings list of measures that are to be optimised or predicted

Common Return Codes

Code Description
200 OK
400 Malformed request
404 User or order not found
500 Server error

Set Model Parameters

An endpoint to set the goals and constraints to the Process Prediction and Optimisation Designer Model project. Depending on the problem, the goal can be to minimise or maximise certain resources, and according to the nature and criticality of the process, a certain level of time and accuracy when predicting or optimising the process is available.

PUT /v1/Projects/1337ASDF/Params HTTP/1.1
Content-Type: application/json; charset=utf-8

{
        "objective_id": "of_001",
        "time_constraint": "hours",
        "accuracy_constraint": "medium",
        "resource_type": "machine"
    }
HTTP/1.1 201 Optimisation Model created

Request

The request passes the goal, time constrain and accuracy level to an existing problem model.

Request URL: POST /v1/Projects/<project_id>/Params

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string ID of model
objective_id Yes Body string id of the objective of the model
time_constraint Yes Body string time availability to the algorithm to solve the problem (min, hours, days)
acccuracy_constraint Yes Body string level of accuracy of the solution that the algorithm must generate (high, medium, low), where high >95%, medium>85%, and low<85%
resource_type No Body string type of resources the model is trying to optimise or predict. It can be energy, labour, machine or material

Response

The response contains the standard HTTP code.

Common Return Codes

Code Description
200 OK
400 Malformed request
404 Entity not found
500 Server error

Get Algorithm Recommendation

With the configuration of the Process Prediction and Optimisation Designer Model project a set of algorithms recommendations can be obtained. This endpoint gets a list of algorithms from the available Projects in the Analytics and AI component.

POST /v1/Projects/1337ASDF/getRecommendations HTTP/1.1
HTTP/1.1 201 OK
Content-Type: application/json; charset=utf-8
[
    "algorithm":{
        "id":"S1"
        "name":"simplex",
        "category": "optimiser",
        "time_complexity": "low",
        "accuracy": "medium",
        "resource_type": "machine",
        "inputs":[
            {
                "id": "p1",
                "name":"param1",
                "type":"string"
            },
            {
                "id": "p2",
                "name":"param2",
                "type":"double"
            }
            ],
        "outputs":[
            {
                "id": "o1",
                "name":"output1",
                "type":"double"
            }
            ],
        "context":[
            {
                "id": "r1",
                "name":"resource1",
                "type":"double"
            }
            ]
    },
    "algorithm":{
        "id":"ANN1"
        "name":"Neural Network",
        "category": "machine learning",
        "time_complexity": "high",
        "accuracy": "medium",
        "resource_type": "energy",
        "inputs":[
            {
                "id": "p1",
                "name":"param1",
                "type":"string"
            },
            {
                "input_id": "p2",
                "name":"param2",
                "type":"double"
            }
            ],
        "outputs":[
            {
                "id": "o1"
                "name":"output1",
                "type":"double"
            }
            ]
            ,
        "context":[
            {
                "id": "r1",
                "name":"resource1",
                "type":"double"
            }
            ]
    }
]

Request

An object with the optimisation problem constraints

Request URL: GET /v1/Projects/<project_id>/getRecommendations

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string Model ID

Response

The response contains a list of algorithms selected according to the optimisation problem constrains. | Name | Type | Description | ---- | ---- | --- id | string | algorithm id name | string | name of the algorithm time_complexity | string | average complexity of computing or training the algorithm (days, hours, minutes) accuracy | string | average accuracy of the solution provided by the algorithm (high, medium, low), where high >95%, medium>85%, and low<85% | resource_type | No | Body | string | type of resources the model is trying to optimise or predict. It can be energy, labour, machine or material| | inputs | No | Body | arrayobject | inputs of the algorithm, aka information inputs to execute it | | context | No | Body | arrayobject | context of the algorithm, aka business parametrisation of the algorithm | | outputs | No | Body | arrayobject | outputs generated by the algorithm |

Common Return Codes

Code Description
201 Ok
400 Malformed request
404 Resource not found
500 Server error

Set Model Algorithm

After obtaining a feasible list of applicable techniques to solve the Process Prediction and Optimisation Problem, the user can select one of his liking to be applied to solve the problem. This method updated the Process Prediction and Optimisation Designer Model project with the algorithm to be used.

POST /v1/Projects/1337ASDF/setAlgorithm HTTP/1.1
Content-Type: application/json; charset=utf-8
{
    algorithm_id:"s1"
}
HTTP/1.1 200 OK

Request

Request URL: POST /v1/Projects/<project_id>/setAlgorithm HTTP/1.1

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string Model id
algorithm_id Yes Body string id of algorithm selected for the specific model

Response

Common Return Codes

Code Description
201 Ok
400 Malformed request
404 Resource not found
500 Server error

Load instance Model on Analytics and AI component

In order to train, test or execute a given model the Process Prediction and Optimisation Designer loads the associated algorithm in runtime to parametrise and execute it.

GET /v1/Projects/1337ASDF/loadModel HTTP/1.1
HTTP/1.1 200 OK

Request

Request URL: GET /v1/Projects/<project_id>/loadModel

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string model ID

Response

Only an HTML code is returned with the standard meaning.

Common Return Codes

Code Description
200 OK
404 Asset not found
500 Server error

Set training data sources

Once the Process Prediction and Optimisation Designer Model project has a defined algorithm to be used, it's necessary to validate the selection training and testing the selected algorithm. This endpoint defines the mapping between data sources provided by the ZDMP IO components and the inputs required by the algorithm, that way, the algorithm execution engine will know where to retrieve data and how to pass it to the model execution instance.

POST /v1/Projects/1337ASDF/TrainingParams HTTP/1.1
Content-Type: application/json; charset=utf-8
[
    {
        datasource_id:"ds_1",
        param_id:"p1"
    },
    {
        datasource_id:"ds_2",
        param_id:"p2"
    }
]
HTTP/1.1 200 OK

Request

A mapping between data sources variables retrieved by the ZDMP IO component and the algorithm parameters

Request URL: POST /v1/Projects/<project_id>/TrainingParams

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string model ID
datasource_id Yes Body string Id of the data source for training
param_id Yes Body string Id of the input or output parameter of the algorithm

Response

Common Return Codes

Code Description
200 OK
404 Asset not found
500 Server error

Update training data sources

This endpoint updates the mappings between data sources and algorithm inputs defined in the create training data sources endpoint.

PUT /v1/Projects/1337ASDF/TrainingDatasources HTTP/1.1
Content-Type: application/json; charset=utf-8
[
    {
        datasource_id:"ds_1",
        param_id:"p1"
    },
    {
        datasource_id:"ds_2",
        param_id:"p2"
    }
]
HTTP/1.1 200 OK

Request

The request passes an updated mapping between data sources variables retrieved by the ZDMP IO component and the algorithm parameters

Request URL: PUT /v1/Projects/<project_id>/TrainingDatasources

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string model ID
datasource_id Yes Body string Id of the data source for training
param_id Yes Body string Id of param of the algorithm

Response

Common Return Codes

Code Description
200 OK
404 Asset not found
500 Server error

Train model

An endpoint to launch the execution of the training of Process Prediction and Optimisation Designer Model. The results of the training determine if the parametrisation of the algorithm is necessary (using the load model endpoint), or a change of algorithm is required (using the set model params endpoint). It the accuracy of the model is fine.

GET /v1/Projects/1337ASDF/trainModel HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
 {
        accuracy: 0.8
    }

Request

Request URL: GET /v1/Projects/<project_id>/trainModel

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource int Asset ID

Response

The response contains the accuracy achieved in the training.

Name Type Description
accuracy double accuracy result achieved on the training

Common Return Codes

Code Description
200 OK
404 Error
500 Server error

Set test data sources

After the training of the Process Prediction and Optimisation Designer Model is successful, a phase on testing the model with new data is done. This endpoint defines the mapping between testing data sources provided by the ZDMP IO components and the inputs required by the algorithm, that way, the algorithm execution engine will know where to retrieve data and how to pass it to the model execution instance.

POST /v1/Projects/1337ASDF/TestingDatasources HTTP/1.1
Content-Type: application/json; charset=utf-8
[
    {   
        datasource_id:"ds_1",
        param_id:"p1"
    },
    {
        datasource_id:"ds_2",
        param_id:"p2"
    }
]
HTTP/1.1 200 OK

Request

Mappings between data sources variables retrieved by the ZDMP IO component and the algorithm parameters

Request URL: POST /v1/Projects/<project_id>/TestingDatasources

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string model ID
datasource_id Yes Body string Id of the data source for testing
param_id Yes Body string Id of param of the algorithm

Response

Common Return Codes

Code Description
200 OK
404 Asset not found
500 Server error

Test model

An endpoint to launch the execution of the testing of Process Prediction and Optimisation Designer Model. The results of the testing determine if the parametrisation of the algorithm is necessary or the training was deficient, and so a new training with novel data is necessary.

GET /v1/Projects/1337ASDF/testModel HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
 {
        accuracy: 0.8
    }

Request

Request URL: GET /v1/Projects/<project_id>/testModel

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource int Asset ID

Response

The response contains the accuracy achieved on the testing.

Name Type Description
accuracy double accuracy result achieved on the testing

Common Return Codes

Code Description
200 OK
404 Error
500 Server error

Set production data sources

Once the Process Prediction and Optimisation Designer Model is successfully tested, the model is production-ready, and prepare to be applied in the industrial context using real data. This endpoint defines the mapping between real industrial data sources provided by the ZDMP IO components and the inputs required by the algorithm, that way, the algorithm execution engine will know where to retrieve data and how to pass it to the model execution instance.

POST /v1/Projects/1337ASDF/ProductionDatasources HTTP/1.1
Content-Type: application/json; charset=utf-8
[
    {
        datasource_id:"ds_1",
        param_id:"p1"
    },
    {
        datasource_id:"ds_2",
        param_id:"p2"
    },
    {
        datasource_id:"ds_3",
        output_id:"o1"
    }
]
HTTP/1.1 200 OK

Request

A mapping list between data sources variables retrieved by the ZDMP IO component and the algorithm parameters, considering inputs and outputs.

Request URL: POST /v1/Projects/<project_id>/ProductionDatasources

Transfer Parameters

Name Required Parameter Type Object Type Description
project_id Yes Resource string model ID
datasource_id Yes Body string Id of the data source for testing
param_id Yes Body string Id of param of the algorithm

Response

Common Return Codes

Code Description
200 OK
404 Asset not found
500 Server error

Execute Model

An endpoint to launch the execution of the Production-ready Process Prediction and Optimisation Designer Model in the runtime component. Results of the execution will determine if actions preventing defects are necessary.

GET /v1/Projects/1337ASDF/runModel HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[ {
        output_id: "o1"
        value: 12.5
    }]

Request

Request URL: GET /v1/Projects/<project_id>/runModel

Response

The response contains a list of JSON objects with the result of the algorithm, that is, the list of outputs defined on it with a value.

Name Type Description
output_id string output id according to the algorithm used
value string, double, integer, boolean real value cast by the algorithm

Common Return Codes

Code Description
201 Model executed successfully
400 Malformed request
500 Server error

Visualise output data

The execution of algorithms can provide complex representations like tables or charts. This endpoint returns a reference to those complex results if available.

GET /v1/Projects/1337ASDF/Visualisations HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
 [{
        "uri": "shorturl.at/bctBL"
    },
    {
        "uri": "shorturl.at/krJO0"
    }
 ]

Request

Request URL: GET /v1/Projects/<project_id>/Visualisations

Response

The response contains a list of URI resources to visualisation resources.

Name Type Description
URI string URI to output visualisation of a model

Common Return Codes

Code Description
201 Created
400 Malformed request
500 Server error

Enterprise Tier

Secure Installation

The Secure Installation component allows downloading zApps to authorised ZDMP components to enable their installation. During this process, this component also creates the users, roles, and policies required by the zApp. These can be modified by the administrator through the Security Command Centre UI (integrated with the ZDMP Portal). The installation package of a zApp includes the containerised zApp, along with configuration files, the certificate and a manifest, which provides information about the permissions required for the zApp, the resources in needs to access, as well as its digital signature.

Request the secure installation of a zApp

Via this route, users can request the installation of zApps in a secure way.

GET /zdmp/api/v_0_1/sec_installation/1337/1337ASDF/1337ASDF HTTP/1.1
X-Auth-token: 04c5b070-4292-4b3f-911b-36a103f3ac3f
HTTP/1.1 200 OK
Content-Type: application/octet-stream

Request

The request must contain an access token previously obtained through the Secure Authentication/Authorisation component. This token is included as a HTTP header.

Request URL: GET /zdmp/api/v_0_1/sec_installation/<zApp_id>/<major_version>/<minor_version>

Transfer Parameters

Name Required Parameter Type Object Type Description
zApp_id Yes Resource int zApp ID
major_version Yes Resource string Major version of the zApp
minor_version Yes Resource string Minor version of the zApp

Response

The response contains the package that enables the zApp installation.

Common Return Codes

Code Description
200 OK
404 Package or zApp not found
500 Server error

Secure Communications

The Secure Communication component installs, issues and revokes digital certificates, which are strictly necessary to securely exchange information between ZDMP assets and external resources. From the Security Command Centre UI, the administrator can revoke, renew, and install certificates. This component includes a Certification Authority (CA) and a Registration Authority (RA). These are the core of this component and is responsible for issuing/revoking certificates and matching identities with certificates, respectively. The following API allows requesting the creation of a certificate, listing present certificates, obtaining details, and revoking or renewing certificates.

Certificate creation

Via this call a new certificate is created.

POST /zdmp/api/v_0_1/cert?login=login&password=password HTTP/1.1
POST SEND
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "passphrase": "private_key_passphrase",
    "certificateData": {
        "cn": "common name",
        "organization": "Ex Ample",
        "location": "World",
        "state": "Earth",
        "alternate":[{
            "dns":"test.com",
            "email": "email.com"
            }]
         },
    "validityStart": "2019-01-01T00:00:00.000Z"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "cert_id" : 100
}

Request

The request needs the login and password for the client.

Request URL: POST /zdmp/api/v_0_1/cert?login=login&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
login Yes Resource string Login for the client
password Yes Resource string Password for the client

Response

The response returns a system-generated identifier for the certificate.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden - Not performed
500 Server error

Certificate revoke

Via this call a new certificate is revoked

GET /zdmp/api/v_0_1/cert/revoke/100?login=login&password=password HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "cert_id": 100,
    "status": "revoked"
}

Request

The request needs the certificate identifier as parameter. Also login and password must be provided

Transfer Parameters

Name Required Parameter Type Object Type Description
cert_id Yes Resource string System certificate identifier
login Yes Resource string Login for the client
password Yes Resource string Password for the client

Request URL: GET /zdmp/api/v_0_1/cert/revoke/100?login=login&password=password

Response

The response returns the system-generated identifier for the certificate and the actual status for the certificate.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden - Not performed
500 Server error

Certificate renew

Via this call a new certificate is renewed.

PUT /zdmp/api/v_0_1/cert?login=login&password=password HTTP/1.1
PUT SEND
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "cert_id" : "100",
    "passphrase" : "private_key_passphrase",
    "validityStart": "2019-01-01T00:00:00.000Z"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "cert_id" : 100
}

Request

The request does not need any parameter.

Request URL: PUT /zdmp/api/v_0_1/cert?login=login&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
login Yes Resource string Login for the client
password Yes Resource string Password for the client

Response

The response returns the identifier assigned for the certificate.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
500 Server error

Certificate list

Via this call clients can obtain a list of current certificates.

GET /zdmp/api/v_0_1/cert?login=login&password=password HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{"certificates": [{
      "id": 100,
      "status": "valid",
      "issuer": "ZDMP",
      "dateCreated": "2019-10-03T13:30:40.555555+00:00",
      "notBefore": "2019-106-03T00:00:00+00:00",
      "notAfter": "2021-01-01T23:59:59+00:00",
      "info": {
        "organization": "Ex Ample",
        "location": "World",
        "state": "Earth",
      }
  }]
}

Request

The request needs client login and password credentials.

Request URL: GET /zdmp/api/v1/cert?login=login&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
login Yes Resource string Login for the client
password Yes Resource string Password for the client

Response

The response contains a list of current stored certificates. The list is empty in case of no certificates.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden - Not performed
500 Server error

Certificate get

Via this call clients can obtains a particular certificate by its identifier.

GET /zdmp/api/v_0_1/cert/100?login=login&password=password HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
      "cert_id": 100,
      "status": "valid",
      "pem": "PEM encoded certificate"

}

Request

The request needs the certification identifier number assigned by the system when it was created. Also login and password for the client is needed

Request URL: GET /zdmp/api/v_0_1/cert/100?login=login&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
cert_id Yes Resource string System certificate identifier
login Yes Resource string Login for the client
password Yes Resource string Password for the client

Response

The response contains the certificate.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden - Not performed
500 Server error

Private key get

Via this call clients can obtains a particular certificate by its identifier.

GET /zdmp/api/v_0_1/cert/100/private_key?login=login&password=password HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
      "cert_id": 100,
      "status": "valid",
      "data": "base64encodedstring"
}

Request

The request needs the certification identifier number assigned by the system when it was created. Also login and password for the client is needed

Request URL: GET /zdmp/api/v_0_1/cert/100/private_key?login=login&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
cert_id Yes Resource string System certificate identifier
login Yes Resource string Login for the client
password Yes Resource string Password for the client

Response

The response contains the certificate.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden - Not performed
500 Server error

Secure Authentication/Authorisation

The Secure Authentication/Authorisation component manages ZDMP assets and their corresponding authorisation policies, to ensure that only authorised accesses to ZDMP resources are allowed. Specifically, this component firstly launches the authentication process for the specific ZDMP asset. Once all authentication evaluations have been successful, this component grants to such ZDMP asset an access token, which is used in the authorisation process. Subsequently, when the Secure Authentication/Authorisation component receives a ZDMP resource access request from the ZDMP asset (including the obtained access token), the authorisation service firstly checks the validity of the token and then, it evaluates if the request is valid according to the specific authorisation policies. Subsequently, the corresponding authorisation response (ie, “ACCEPT” or “DENY”) is forwarded to the ZDMP asset to proceed accordingly. It should be pointed out that the Identity Manager GE - Keyrock is proposed to manage authentication, while in the authorisation case, the AuthzForce are selected to manage access control.

Register a new user

Via this route, a new user can be registered by an administrator user. Note that the administrator needs to be identified by an authentication token included in the X-Auth-token header to carry out this operation.

POST /zdmp/api/v_0_1/sec_authn_auths/users HTTP/1.1
{
    "user": {
        "name": "User",
        "password": "secret",
        "email": "user@example.com"
    }
}
Content-Type: application/json
X-Auth-token:token
HTTP/1.1 201 Created
{
    "user": {
        "id": "ee4dfb6e5540447cb3741905149d9b6e",
        "image": "default",
        "enabled": true,
        "name": "User",
        "email": "user@example.com",
        "password_expires_at": "2018-11-06T15:32:17.000000"
    }
}
Content-Type: application/json,application/json; charset=utf-8
Content-Length: 205
ETag: W/"4a-jYFzvNRMQcIZ2P+p5EfmbN+VHcw"
Date: Mon, 19 Mar 2018 15:05:35 GMT
Connection: keep-alive

Request

Request URL: POST /zdmp/api/v_0_1/sec_authn_auths/users

Transfer Parameters

Name Required Parameter Type Object Type Description
name Yes Body String User name
password Yes Body String User password
email No Body String User email
X-Auth-token Yes Header String Administrator authentication token

Response

The response confirms that the user was properly registered.

Common Return Codes

Code Description
201 Created
400 Bad request
401 Unauthorized
403 Forbidden
409 Conflict

Authenticate a user

Via this route, a user can authenticate and get its corresponding access token.

POST /zdmp/api/v_0_1/sec_authn_auths/tokens HTTP/1.1
{
    "id": "ee4dfb6e5540447cb3741905149d9b6e",
    "password": "secret"
}
Content-Type: application/json
HTTP/1.1 201 Created
{
    "token": {
        "methods": [
            "password"
        ],
        "expires_at": "2015-11-06T15:32:17.893769Z"
    }
}
Content-Type: application/json,application/json; charset=utf-8
X-Subject-Token: 04c5b070-4292-4b3f-911b-36a103f3ac3f
Content-Length: 74
ETag: W/"4a-jYFzvNRMQcIZ2P+p5EfmbN+VHcw"
Date: Mon, 19 Mar 2018 15:05:35 GMT
Connection: keep-alive

Request

Request URL: POST /zdmp/api/v_0_1/sec_authn_auths/tokens

Transfer Parameters

Name Required Parameter Type Object Type Description
id Yes Body String User ID
password Yes Body String User password

Response

The response contains the authentication token (access token) in the X-Subject-Token HTTP header.

Common Return Codes

Code Description
201 Created
400 Bad request
403 Forbidden
404 Not Found

Create a new role

Via this route, a new role can be created by an administrator user. Note that the administrator needs to be identified by an authentication token included in the X-Auth-token header to carry out this operation.

POST /zdmp/api/v_0_1/sec_authn_auths/users HTTP/1.1
{
  "role": {
    "name": "role",
    "description": "role description"
  }
}
Content-Type: application/json
X-Auth-token:token
HTTP/1.1 201 Created
{
  "role": {
    "id": "33fd15c0-e919-47b0-9e05-5f47999f6d91",
    "name": "role",
    "description": "role description"
  }
}
Content-Type:application/json,application/json; charset=utf-8
X-Powered-By:Express
Content-Length:147
ETag:W/"93-gmWMlkuHssLlhgsbkRsYJjI1ZpE"
Date:Tue, 20 Mar 2018 10:56:16 GMT
Connection:keep-alive

Request

Request URL: POST /zdmp/api/v_0_1/sec_authn_auths/roles

Transfer Parameters

Name Required Parameter Type Object Type Description
name Yes Body String Role name
description No Body String Role description
X-Auth-token Yes Header String Administrator authentication token

Response

The response confirms that the role was properly created.

Common Return Codes

Code Description
201 Created
400 Bad request
401 Unauthorized
403 Forbidden
409 Conflict

Assign a role to a user

Via this route, a role can be assigned to a registered user by an administrator user. Note that the administrator needs to be identified by an authentication token included in the X-Auth-token header to carry out this operation.

PUT /zdmp/api/v_0_1/sec_authn_auths/users/ee4dfb6e5540447cb3741905149d9b6e/roles/33fd15c0-e919-47b0-9e05-5f47999f6d91 HTTP/1.1
Content-Type: application/json
X-Auth-token:token
HTTP/1.1 200 OK
Date:Tue, 20 Mar 2018 10:56:16 GMT
Connection:keep-alive

Request

Request URL: PUT /zdmp/api/v_0_1/sec_authn_auths/users/<user_id>/roles/<role_id>

Transfer Parameters

Name Required Parameter Type Object Type Description
user_id Yes Path String User ID
role_id Yes Path String Role ID
X-Auth-token Yes Header String Administrator authentication token

Response

The response confirms that the role was properly assigned to the user.

Common Return Codes

Code Description
200 OK
400 Bad request
401 Unauthorized
403 Forbidden

Remove a role from a user

Via this route, a role can be removed for a registered user by an administrator user. Note that the administrator needs to be identified by an authentication token included in the X-Auth-token header to carry out this operation.

DELETE /zdmp/api/v_0_1/sec_authn_auths/users/ee4dfb6e5540447cb3741905149d9b6e/roles/33fd15c0-e919-47b0-9e05-5f47999f6d91 HTTP/1.1
Content-Type: application/json
X-Auth-token:token
HTTP/1.1 204 No content
Date:Tue, 20 Mar 2018 10:56:16 GMT
Connection:keep-alive

Request

Request URL: DELETE /zdmp/api/v_0_1/sec_authn_auths/users/<user_id>/roles/<role_id>

Transfer Parameters

Name Required Parameter Type Object Type Description
user_id Yes Path String User ID
role_id Yes Path String Role ID
X-Auth-token Yes Header String Administrator authentication token

Response

The response confirms that the role was properly removed for the user.

Common Return Codes

Code Description
204 No content
401 Unauthorized
403 Forbidden
404 Not found
409 Conflict

Create/update an authorisation policy

Via this route, an authorisation policy can be created or updated in the Policy Administration Point (PAP) by an administrator user following the XACML 3.0 schema. Note that the administrator needs to be identified by an authentication token included in the X-Auth-token header to carry out this operation.

POST /zdmp/api/v_0_1/sec_authn_auths/pap/policies HTTP/1.1
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PolicySet xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicySetId="PS1"
    Version="1.0" PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-unless-permit">
    <Description>Sample PolicySet</Description>
    <Target />
    <Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"  PolicyId="policy" RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable" Version="1.0">  
       <Description>Policy description</Description>
       <Target>
          <AnyOf>
             <AllOf>
                <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                   <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">zdmp_resource</AttributeValue>
                   <AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
                </Match>
                <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
                   <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">_action_</AttributeValue>
                   <AttributeDesignator AttributeId="http://wso2.org/identity/identity-action/action-name" Category="http://wso2.org/identity/identity-action" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
                </Match>
             </AllOf>
          </AnyOf>
       </Target>
       <Rule Effect="Permit" RuleId="permit_by_roles_and_time">
          <Condition>
            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:or">
               <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
                  <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">rol_1</AttributeValue>
                  <AttributeDesignator AttributeId="http://wso2.org/claims/role" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
               </Apply>
               <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-is-in">
                  <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">rol_2</AttributeValue>
                  <AttributeDesignator AttributeId="http://wso2.org/claims/role" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true"></AttributeDesignator>
               </Apply>
            </Apply>
          </Condition>
       </Rule>
       <Rule Effect="Deny" RuleId="deny_others"></Rule>
    </Policy>
</PolicySet>  
Content-Type: application/xml
Accept: application/xml
X-Auth-token:token
HTTP/1.1 200 OK
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:link xmlns:ns3="http://www.w3.org/2005/Atom"
  rel="item" href="PS1/1.0" title="Policy 'PS1' v1.0"/>
Content-Type: application/xml
Date:Tue, 20 Mar 2018 10:56:16 GMT

Request

Request URL: POST /zdmp/api/v_0_1/sec_authn_auths/pap/policies

Transfer Parameters

Name Required Parameter Type Object Type Description
PolicyId Yes Body String Policy ID
sp-name Yes Body String ZDMP resource on which the policy is applied
action-name Yes Body String Action to be performed by the policy
Rule Yes Body String Conditions to validate the policy
Role Yes Body String Required role
X-Auth-token Yes Header String Administrator authentication token

Response

The response confirms that the authorisation policy was properly created/updated in the PAP.

Common Return Codes

Code Description
200 OK
400 Bad request
401 Unauthorized
403 Forbidden

Delete an authorisation policy

Via this route, an authorisation policy can be deleted from the Policy Administration Point (PAP) by an administrator user. Note that the administrator needs to be identified by an authentication token included in the X-Auth-token header to carry out this operation.

DELETE /zdmp/api/v_0_1/sec_authn_auths/pap/policies/PS1 HTTP/1.1
Accept: application/xml
X-Auth-token:token
HTTP/1.1 204 No content
Date:Tue, 20 Mar 2018 10:56:16 GMT

Request

Request URL: PUT /zdmp/api/v_0_1/sec_authn_auths/pap/policies/<PolicyId>

Transfer Parameters

Name Required Parameter Type Object Type Description
PolicyId Yes Path String Policy ID

Response

The response confirms that the authorisation policy was properly deleted from the PAP.

Common Return Codes

Code Description
204 No content
401 Unauthorized
403 Forbidden
404 Not found
409 Conflict

Request an authorisation response

Via this route, an authorisation response for a particular XACML authorisation request is returned. This response is based on authorisation policies previously created in the PAP and access control attributes provided in the request. An authorisation response may be Permit or Deny. Additionally, note that the user performing the authorisation request must include its corresponding access token in the X-Auth-token header.

POST /zdmp/api/v_0_1/sec_authn_auths/pdp HTTP/1.1
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<Request xmlns='urn:oasis:names:tc:xacml:3.0:core:schema:wd-17' CombinedDecision="false" ReturnPolicyIdList="false">
    <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
        <Attribute AttributeId='urn:oasis:names:tc:xacml:1.0:resource:resource-id' IncludeInResult="false">
            <AttributeValue DataType='http://www.w3.org/2001/XMLSchema#string'>zdmp_resource</AttributeValue>
        </Attribute>
    </Attributes>
    <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
        <Attribute AttributeId='urn:oasis:names:tc:xacml:1.0:action:action-id' IncludeInResult="false">
            <AttributeValue DataType='http://www.w3.org/2001/XMLSchema#string'>_action_</AttributeValue>
        </Attribute>
    </Attributes>
</Request>  
Content-Type: application/xml
Accept: application/xml
X-Auth-token:token
HTTP/1.1 200 OK
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns1:Response xmlns:ns1="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" ...>
   <ns1:Result>
       <ns1:Decision>Permit</ns1:Decision>
   </ns1:Result>
</ns1:Response>
Content-Type: application/xml
Date:Tue, 20 Mar 2018 10:56:16 GMT

Request

Request URL: POST /zdmp/api/v_0_1/sec_authn_auths/pdp

Transfer Parameters

Name Required Parameter Type Object Type Description
resource Yes Body String ZDMP resource
action Yes Body String Action to be performed on the ZDMP resource
X-Auth-token Yes Header String User authentication token

Response

The response includes the corresponding authorisation decision for the XACML authorisation request, specifically, Permit or Deny.

Common Return Codes

Code Description
200 OK
400 Bad request
401 Unauthorized
403 Forbidden

Autonomous Computing

The ZDMP Autonomous Computing component offers fundamental services for the automation of processes, by subscribing to KPIs and defining actions to be executed when certain conditions are met.

Subscribe to KPI

Via this route a user can subscribe to receive data from an existing KPI.

POST /v1/subscribetokpi HTTP/1.1
HTTP/1.1 201 Created

Request

The request contains three required fields.

Request URL: POST /v1/subscribetokpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiId Yes Body string KPI ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Description
201 Created
400 Malformed request
403 Forbidden
500 Server error

Unsubscribe to KPI

Via this route a user can cancel a subscription to not receive data from the KPI.

POST /v1/unsubscribetokpi HTTP/1.1
HTTP/1.1 202 Accepted

Request

The request contains three required fields.

Request URL: POST /v1/unsubscribetokpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiId Yes Body string KPI ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Description
202 Accepted
400 Malformed request
403 Forbidden
500 Server error

Get List of Subscribed KPI

Via this route its possible to retrieve the list of KPIs the user has subscribed.

GET /v1/getkpisubscriptions HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": true
  },
  "data": {
    "kpiList": [
      {
        "kpiId": "kpi-id-2019-01-01-02-08-1a2b3c",
        "kpiDescription": "KPI 01"
      },
      {
        "kpiId": "kpi-id-2019-01-01-02-08-4d5e6f",
        "kpiDescription": "KPI 02"
      }
    ]
  }
}

Request

The request contains two required field and one optional field.

Request URL: GET /v1/getkpisubscriptions

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiDescriptionFilter No Body string String to filter the KPI for its description
filterMode No Body string The value should be contains not contains, equals to, not equals to, starts with or ends with

Response

The response, when a success case, contains a object including a list of KPIs the user has subscribed. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
500 Server error

Create Autonomous Process for KPI

Via this route its possible to define one or more processes to be executed when a KPI value is out of the defined range.

POST /v1/autonomousprocessforkpi HTTP/1.1
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": true
  },
  "data": {
    "autonomousProcess": {
      "autonomousProcessId": "AP-2019-10-01-21-22-a1b2c3",
      "autonomousProcessDescription": "Energy Control",
      "orchestrationProcesses": [
        {
          "orchestrationProcessId": "EP-2019-01-01-22-20-a1b2c3",
          "orchestrationProcessDescription": "Turn equipment off",
          "orchestrationProcessParameters": "M-2019-01-01-22-31-a1b2c3"
        },
        {
          "orchestrationProcessId": "EP-2019-01-01-22-20-d4e5f6",
          "orchestrationProcessDescription": "Notify User",
          "orchestrationProcessParameters": "user@email.com"
        }
      ],
      "kpiConditionList": [
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-a1b2c3",
            "kpiDescription": "Energy Consumption",
            "conditionQuery": ">233"
          }
        },
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-d4e5f6",
            "kpiDescription": "Machine workload",
            "conditionQuery": "=0"
          }
        }
      ],
      "kpisConditionQueryAgregation": ""
    }
  }
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /v1/autonomousprocessforkpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
autonomousProcessDescription Yes Body string Description of the Autonomous Process
orchestrationProcess_n_Id Yes Body string Orchestration process Id of item N
orchestrationProcess_n_Parameters Yes Body string Orchestration process Parameters of item N. Example: "Parameter01;Parameter02"
kpi_n_Id Yes Body string KPI ID of item N
kpi_n_ConditionQuery Yes Body string Condition query for KPI if item N
kpisConditionQueryAgregation No Body string Condition query for agregating the KPIs conditions query, when this parameter is not informed and there are more than one KPI informed, we consider that ALL the KPIs conditions needs to be fulfilled for the orchestration process to be started; Example: "(KPI01_ID;AND;KPI02_ID);OR;KPI03_ID" where the process will be started when the conditions for KPI 01 and KPI 02 are matched OR when KPI 03 conditions are matched.

Response

The response, when a success case, contains the Autonomous Process object and its properties. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Description
201 Created
400 Malformed request
403 Forbidden
409 Conflict
500 Server error

Read Autonomous Process for KPI

Via this route its possible to obatin an Autonomous Process previously defined.

GET /v1/autonomousprocessforkpi HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": true
  },
  "data": {
    "autonomousProcess": {
      "autonomousProcessId": "AP-2019-10-01-21-22-a1b2c3",
      "autonomousProcessDescription": "Energy Control",
      "orchestrationProcesses": [
        {
          "orchestrationProcessId": "EP-2019-01-01-22-20-a1b2c3",
          "orchestrationProcessDescription": "Turn equipment off",
          "orchestrationProcessParameters": "M-2019-01-01-22-31-a1b2c3"
        },
        {
          "orchestrationProcessId": "EP-2019-01-01-22-20-d4e5f6",
          "orchestrationProcessDescription": "Notify User",
          "orchestrationProcessParameters": "user@email.com"
        }
      ],
      "kpiConditionList": [
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-a1b2c3",
            "kpiDescription": "Energy Consumption",
            "conditionQuery": ">233"
          }
        },
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-d4e5f6",
            "kpiDescription": "Machine workload",
            "conditionQuery": "=0"
          }
        }
      ],
      "kpisConditionQueryAgregation": ""
    }
  }
}

Request

The request contains three required fields.

Request URL: GET /v1/autonomousprocessforkpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
autonomousProcessID Yes Body string ID of the Autonomous Process

Response

The response, when a success case, contains the Autonomous Process object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Update Autonomous Process for KPI

Via this route its possible to update an Autonomous Process previously defined.

PUT /v1/autonomousprocessforkpi HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": true
  },
  "data": {
    "autonomousProcess": {
      "autonomousProcessId": "AP-2019-10-01-21-22-a1b2c3",
      "autonomousProcessDescription": "Energy Control",
      "orchestrationProcesses": [
        {
          "orchestrationProcessId": "EP-2019-01-01-22-20-a1b2c3",
          "orchestrationProcessDescription": "Turn equipment off",
          "orchestrationProcessParameters": "M-2019-01-01-22-31-a1b2c3"
        },
        {
          "orchestrationProcessId": "EP-2019-01-01-22-20-d4e5f6",
          "orchestrationProcessDescription": "Notify User",
          "orchestrationProcessParameters": "user@email.com"
        }
      ],
      "kpiConditionList": [
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-a1b2c3",
            "kpiDescription": "Energy Consumption",
            "conditionQuery": ">233"
          }
        },
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-d4e5f6",
            "kpiDescription": "Machine workload",
            "conditionQuery": "=0"
          }
        }
      ],
      "kpisConditionQueryAgregation": ""
    }
  }
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: PUT /v1/autonomousprocessforkpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
autonomousProcessId Yes Body string Autonomous Process ID
autonomousProcessDescription Yes Body string Description of the Autonomous Process
orchestrationProcess_n_Id Yes Body string Orchestration process Id of item N
orchestrationProcess_n_Parameters Yes Body string Orchestration process Parameters of item N. Example: "Parameter01;Parameter02"
kpi_n_Id Yes Body string KPI ID of item N
kpi_n_ConditionQuery Yes Body string Condition query for KPI if item N
kpisConditionQueryAgregation No Body string Condition query for agregating the KPIs conditions query, when this parameter is not informed and there are more than one KPI informed, we consider that ALL the KPIs conditions needs to be fulfilled for the orchestration process to be started; Example: "(KPI01_ID;AND;KPI02_ID);OR;KPI03_ID" where the process will be started when the conditions for KPI 01 and KPI 02 are matched OR when KPI 03 conditions are matched.

Response

The response, when a success case, contains the updated Autonomous Process object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
204 No Content
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Delete Autonomous Process for KPI

Via this route its possible to delete an Autonomous Process previously defined.

DELETE /v1/autonomousprocessforkpi HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains three required fields.

Request URL: DELETE /v1/autonomousprocessforkpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
autonomousProcessID Yes Body string ID of the Autonomous Process

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Get Autonomous Process by KPI

Via this route its possible to obatin a list of Autonomous Process associated to the informed KPI.

GET /v1/autonomousprocessforkpi HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": true
  },
  "data": {
    "autonomousProcesses": [
      {
        "autonomousProcessId": "AP-2019-10-01-21-22-a1b2c3",
        "autonomousProcessDescription": "Energy Control - Turn off machine",
        "orchestrationProcesses": [
          {
            "orchestrationProcessId": "EP-2019-01-01-22-20-a1b2c3",
            "orchestrationProcessDescription": "Turn equipment off",
            "orchestrationProcessParameters": "M-2019-01-01-22-31-a1b2c3"
          },
          {
            "orchestrationProcessId": "EP-2019-01-01-22-20-d4e5f6",
            "orchestrationProcessDescription": "Notify User",
            "orchestrationProcessParameters": "user@email.com"
          }
        ],
        "kpiConditionList": [
          {
            "kpiCondition": {
              "kpiID": "KP-2018-01-09-19-22-a1b2c3",
              "kpiDescription": "Energy Consumption",
              "conditionQuery": ">233"
            }
          },
          {
            "kpiCondition": {
              "kpiID": "KP-2018-01-09-19-22-d4e5f6",
              "kpiDescription": "Machine workload",
              "conditionQuery": "=0"
            }
          }
        ],
        "kpisConditionQueryAgregation": ""
      },
      {
        "autonomousProcessId": "AP-2018-10-01-21-22-a1b2c3",
        "autonomousProcessDescription": "Energy Control - Turn on machine",
        "orchestrationProcesses": [
          {
            "orchestrationProcessId": "EP-2018-01-01-22-20-a1b2c3",
            "orchestrationProcessDescription": "Turn equipment on",
            "orchestrationProcessParameters": "M-2018-01-01-22-30-a1b2c3"
          },
          {
            "orchestrationProcessId": "EP-2018-01-01-22-20-d4e5f6",
            "orchestrationProcessDescription": "Notify User",
            "orchestrationProcessParameters": "user@email.com"
          }
        ],
        "kpiConditionList": [
          {
            "kpiCondition": {
              "kpiID": "KP-2019-01-09-19-22-a1b2c3",
              "kpiDescription": "Energy Consumption",
              "ConditionQuery": "<200"
            }
          },
          {
            "kpiCondition": {
              "kpiID": "KP-2018-01-09-19-22-d4e5f6",
              "kpiDescription": "Machine workload",
              "conditionQuery": ">85"
            }
          },
          {
            "kpiCondition": {
              "kpiID": "KP-2018-01-01-19-22-c4e5f6",
              "kpiDescription": "Working nodes",
              "conditionQuery": "=1"
            }
          }
        ],
        "kpisConditionQueryAgregation": "(KP-2019-01-09-19-22-a1b2c3;AND;KP-2018-01-09-19-22-d4e5f6);OR;KP-2018-01-01-19-22-c4e5f6"
      }
    ]
  }
}

Request

The request contains three required fields.

Request URL: GET /v1/autonomousprocessforkpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiID Yes Body string KPI ID

Response

The response, when a success case, contains a list of Autonomous Process objects and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Marketplace

This component allows end users to search for and buy applications and services from manufacturing sector.

Connect to marketplace

This function allows users to acces the Store Frontend UI and User Management & Authorisation Module and get an access token from Secure Authentication & Autorisation component.

POST /Marketplace/v1/cert?login=username&password=password HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"username":"username",
"password":"password"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "ownerOrganization": {
    "providerId": 0,
    "providerDomainName": "Provider Name"
  },
  "aliasName": "1",
  "userGUID": "4317e820-eb4e-494e-b800-9c1c18b821f4",
  "loginAttempts": 0,
  "remainingLockTime": 0,
  "smtpAddress": "",
  "providerOrganization": {
    "providerId": 0,
    "providerDomainName": "Provider Name"
  },
  "errList": [
  ],
  "userName": "username",
  "providerType": 1,
  "ccn": 0,
  "token": "QSDK 3feedcdeccfa56f536a1e9ddc92275e7e78025640882eb106964622e6d9edf36eaca970a00d27710e7e88c38f54239d1c7
04c4f993f28358277d0caa53fbc2681c4214c6f1ad02d7ea661dbff4e2dd906afab382f47ee489fdb9b85754538e904674
d76e7a7c82ee5137dfeadb094a441da9916f77ce8356f7a23d864d510e43221f9e86d3240b172dd0731faa8045f35bb618
5b99af701629b5391c4fe1516936f0fa17e21c01b8eefee6cfb143f00b496c3a332bdbe2ddd534c2301e466eb79d3bce77
e11d81ce67eb8ba5c93385798d417dca01a56e015647377cc29ed3403a7a3bd93101f0exea415f100ecab9e0d3544847ec
6fe583f00bcd2e026f21292",
  "capability": 6945989585,
  "forcePasswordChange": false,
  "isAccountLocked": false
}

Request

Request URL: /Marketplace/v1/cert?login=username&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
username Yes Query string Login username
password Yes Query string Login Password

Response

The response contains the user guid and token.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges
404 Specified user not found

Storage

This component represents ZDMP platform data lake that hosts all ZDMP components’ data, insuring their persistence and processing.

Connect to file repository

This function allows other components to acces the File Repository through Security API. The acces will be registered in Data Management module and the user rights are checked in User Ploicies module.

POST /Storage/v1/fileRepositoryAccess HTTP/1.1
Content-Type: application/json; charset=utf-8

{
"userGUID":"4317e820-eb4e-494e-b800-9c1c18b821f4",
"token":"QSDK 3feedcdeccfa56f536a1e9ddc92275e7e78025640882eb106964622e6d9edf36eaca970a00d27710e7e88c38f54239d1c7
04c4f993f28358277d0caa53fbc2681c4214c6f1ad02d7ea661dbff4e2dd906afab382f47ee489fdb9b85754538e904674
d76e7a7c82ee5137dfeadb094a441da9916f77ce8356f7a23d864d510e43221f9e86d3240b172dd0731faa8045f35bb618
5b99af701629b5391c4fe1516936f0fa17e21c01b8eefee6cfb143f00b496c3a332bdbe2ddd534c2301e466eb79d3bce77
e11d81ce67eb8ba5c93385798d417dca01a56e015647377cc29ed3403a7a3bd93101f0exea415f100ecab9e0d3544847ec
6fe583f00bcd2e026f21292",
"readPermission":true,
"writePermission":true,
"deletePermission":true
}
HTTP/1.1 200 OK

Request

Request URL: /Storage/v1/fileRepositoryAccess

Transfer Parameters

Name Required Parameter Type Object Type Description
userGUID Yes Body string Username GUID
token Yes Body string Username token
readPermission Yes Body boolean Read permissions
writePermission Yes Body boolean Write permissions
deletePermission Yes Body boolean Delete Permissions

Response

Returns default HTTP Status Codes for Acknowledgement (200, 400 codes)

Common Return Codes

Code Description
200 OK
400 Malformed request

Human Collaboration

This component provides collaboration facilities to enhance teamwork by offering users-users, users-developers, and developers-developers to interact using multiple communication channels enabling diverse ways of collaboration.

Connect to marketplace

This function allows users to acces the Marketplace component through Human Collaboration UI and Marketplace.

POST /HumanCollaboration/v1/cert?login=username&password=password HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"username":"username",
"password":"password"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "ownerOrganization": {
    "providerId": 0,
    "providerDomainName": "Provider Name"
  },
  "aliasName": "1",
  "userGUID": "4317e820-eb4e-494e-b800-9c1c18b821f4",
  "loginAttempts": 0,
  "remainingLockTime": 0,
  "smtpAddress": "",
  "providerOrganization": {
    "providerId": 0,
    "providerDomainName": "Provider Name"
  },
  "errList": [
  ],
  "userName": "username",
  "providerType": 1,
  "ccn": 0,
  "token": "QSDK 3feedcdeccfa56f536a1e9ddc92275e7e78025640882eb106964622e6d9edf36eaca970a00d27710e7e88c38f54239d1c7
04c4f993f28358277d0caa53fbc2681c4214c6f1ad02d7ea661dbff4e2dd906afab382f47ee489fdb9b85754538e904674
d76e7a7c82ee5137dfeadb094a441da9916f77ce8356f7a23d864d510e43221f9e86d3240b172dd0731faa8045f35bb618
5b99af701629b5391c4fe1516936f0fa17e21c01b8eefee6cfb143f00b496c3a332bdbe2ddd534c2301e466eb79d3bce77
e11d81ce67eb8ba5c93385798d417dca01a56e015647377cc29ed3403a7a3bd93101f0exea415f100ecab9e0d3544847ec
6fe583f00bcd2e026f21292",
  "capability": 6945989585,
  "forcePasswordChange": false,
  "isAccountLocked": false
}

Request

Request URL: /HumanCollaboration/v1/cert?login=username&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
username Yes Query string Login username
password Yes Query string Login Password

Response

The response contains the user guid and token.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges
404 Specified user not found

Portal

The Portal, realises the holistic encapsulation of the web-based user interfaces of all relevant ZDMP components, zApps and the platform into a single coherent user interface.

The platform's Portal Services provide an infrastructure to render the components' user interfaces and zApps inside a single portal window. It basically provides a reverse proxy set-up which makes connections to HTTP servers provided by the individual components and zApps.

It aims to combine the user interface from zApps, the Marketplace and importantly the security aspects of the platform, to allow secure access to ZDMP functionality and administration.

The Portal makes use of other APIs provided by the T5.2 Authentication/Authorisation and the Marketplace. It will then connect to any of the UIs available for the main portal application.

The Portal Services will put some restrictions onto the behaviour of the component and zApp user interfaces. Some guidelines for this will be specified here at a later stage.

Application Run-time

The Application Run-time, provides centralised management of a distributed environment in which all ZDMP components and zApps (and potentially other Assets) are running.

This allows the running of Zero Defects functionality in the form of zApps. It looks to install these on the system, control the distributed nature of the network (with support from the Distributed Computing component and the Autonomous Computing).

List assets

Via this route, a list of installed assets can be retrieved.

GET /platform/executionservices/assets HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
  {
    "Id":"8dfafdbc3a40",
    "Name":"vfFailureManager",
    "Version":"1.23",
    "Type":"vApp",
    "Status":"running",
    "Host id":"1lr9wayhc1yxmoifn91d862tv"
  },
  {
    "Id":"9cd87474be90",
    "Name":"ProcessBuilder",
    "Version":"2.12",
    "Type":"component",
    "Status":"running",
    "Host id":"cloud"
  },
  {
    "Id":"3176a2479c92",
    "Name":"vfDocumentPortal",
    "Version":"1.0",
    "Type":"vApp",
    "Status":"idle",
    "Host id":"1lr9wayhc1yxmoifn91d862tv"
  }
]

Request

Request URL: GET /platform/executionservices/assets

Response

Returns a list of installed assets. If successful, this operation returns 200 OK, otherwise an error is returned.

Common status codes returned

Code Description
200 OK
403 forbidden
500 server error

Install asset

Install an asset with specific parameters. The request installs the asset at the specified host and returns an ID for it. The installed asset has status "idle" (not started) by default.

POST /platform/executionservices/assets HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "Name":"vfDocumentPortal",
  "Version":"1.0",
  "Host id":"cloud"
}
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
{
  "id":"e90e34656806"
}

Request

Request URL: POST /platform/executionservices/assets

Transfer Parameter

Name Required Parameter Type Object Type Description
Asset Object yes Body entity JSON object The asset object consists of the following attributes
  • Name: Name of the asset to install
  • Version: Version of the asset to install
  • Host id: ID of the host on which the asset will be installed, or "cloud"

Response

After succesful installation, the response will be 201 Created and the id of the newly installed asset will be returned.

Common status codes returned

Code Description
201 created (asset installed successfully)
400 bad parameter
403 forbidden
404 no such asset
406 host unreacheable
409 conflict (asset already installed on host)
500 server error

Start asset

Starts an installed asset.

POST /platform/executionservices/assets/4a9bf2f80763?action=start HTTP/1.1
HTTP/1.1 200 OK

Request

Request URL: POST /platform/executionservices/assets/<id>?action=start

Transfer Parameter

Name Required Parameter Type Object Type Description
id Yes Resource string The identifier of an installed asset

Response

If successful, this operation returns 200 OK, otherwise an error message is sent out.

Common status codes returned

Code Description
200 OK
304 asset already started
403 forbidden
404 no such asset
500 server error

Stop asset

Stops an installed asset.

POST /platform/executionservices/assets/4a9bf2f80763?action=stop HTTP/1.1
HTTP/1.1 200 OK

Request

Request URL: POST /platform/executionservices/assets/<id>?action=stop

Transfer Parameter

Name Required Parameter Type Object Type Description
id Yes Resource string The identifier of an installed asset

Response

If successful, this operation returns 200 OK, otherwise an error message is sent out.

Common status codes returned

Code Description
200 OK
304 asset already stopped
403 forbidden
404 no such asset
500 server error

Delete asset

Deletes an installed asset from a host. The asset must already have status "idle".

DELETE /platform/executionservices/assets/4a9bf2f80763 HTTP/1.1
HTTP/1.1 200 OK

Request

Request URL: DELETE /platform/executionservices/assets/<id>

Transfer Parameter

Name Required Parameter Type Object Type Description
id Yes Resource string The identifier of an installed asset

Response

If successful, this operation returns 200 OK, otherwise an error message is returned.

Common status codes returned

Code Description
200 OK
403 forbidden
404 no such asset
409 conflict (asset is running)
500 server error

Register host

Registers a host at the platform. The core vf-OS (according to D2.1 Page 19: Publish/subscribe mechanism, System dashboard and Platform container core functionality which manages the overall vf-OS components) must have been installed on the host. The platform will automatically contact the host and connect it to the Platform Execution Services infrastructure.

POST /platform/executionservices/hosts HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "IP Address":"132.101.33.19",
  "Port":"2375"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "id":"1lr9wayhc1yxmoifn91d862tv"
}

Request

Request URL: POST /platform/executionservices/hosts

Transfer Parameter

Name Required Parameter Type Object Type Description
Host information Yes Body entity JSON Object The host information consists of the following attributes
  • IP Address: The IP address of the host
  • Port: The port at which the host can be contacted by the platform

Response

If the host can be contacted and the incorporation into the platform is accepted by both parties, the response will be 200 OK. The Host id for this newly registered host will be returned.

Common status codes returned

Code Description
200 OK
400 bad parameter
401 unauthorized (host does not allow request)
403 forbidden (server does not allow request)
404 not found (host cannot be reached)
500 server error

Unregister host

Unregister a host at the platform. The host must not contain any installed assets with status "running".

DELETE /platform/executionservices/hosts/1lr9wayhc1yxmoifn91d862tv HTTP/1.1
HTTP/1.1 200 OK

Request

Request URL: DELETE /platform/executionservices/hosts/<host id>

Transfer Parameter

Name Required Parameter Type Object Type Description
host id Yes Resource string The identifier of a specific host

Response

The response will be 200 OK if no error occurs.

Common status codes returned

Code Description
200 OK
403 forbidden
405 method not allowed (host still has running assets)
404 no such host
500 server error

List hosts

Provides a list of registered hosts.

GET /platform/executionservices/hosts HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
  {
    "Host id":"1lr9wayhc1yxmoifn91d862tv",
    "Hostname":"mondragon1",
    "IP address":"10.27.8.102",
    "port":"2375",
    "Status":"ready"
  },
  {
    "Host id":"fneuwfn124u8912ndf3ni102u",
    "Hostname":"viasolis23",
    "IP address":"33.64.13.83",
    "port":"2375",
    "Status":"unreachable"
  }
]

Request

Request URL: GET /platform/executionservices/hosts

Response

If no error occurs, the response will be 200 OK and a JSON array will be returned containing an object for each host with limited information about that host.

Common status codes returned

Code Description
200 OK
403 forbidden
500 server error

Inspect a host

Provides status information about a specific host.

GET /platform/executionservices/hosts/fneuwfn124u8912ndf3ni102u HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "Host id":"fneuwfn124u8912ndf3ni102u",
  "Hostname":"mondragon1",
  "IP address":"10.27.8.102",
  "port":"2375",
  "Status":"ready",
  "Version":"1.01",
  "CreatedAt":"2016-06-07T20:31:11.853781916Z",
  "UpdatedAt":"2016-06-07T20:31:11.999868824Z",
  "Architecture":"x86_64",
  "OS":"linux",
  "NanoCPUs":4000000000,
  "MemoryBytes":8272408576,
  "Status":"ready"
}

Request

Request URL: GET /platform/executionservices/hosts/<host id>

Response

In case the host is found and no other error occurs, the response will be a 200 OK together with a JSON object containing information about the host.

Common status codes returned

Code Description
200 OK
403 forbidden
404 no such host
500 server error

Inter-platform Interoperability

The ZDMP Inter-platform Interoperability component offers fundamental functions and services to interconnect the ZDMP platform with other 3rd party platforms. This includes, e.g., the eFactory, ADAMOS, and SDAIM platforms.

Get device information

Authorised users and components of supported 3rd party platforms can retrieve information about individual ZDMP devices per enduser/owner. This includes a full description of the device including technical information, a unique id of the device and a unique id of the enduser/owner.

GET /interplatform-ops/devices?userid=u4753821832&format=adamos HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "userID" = "u4753821832",
    "devices" = [
        "device": {
          "deviceID": "57fa27936bf12b562f4231f099a563642d2f2c62",
          "typeID": "32ff434",
          "typeName": "Temperature Sensor",
          "vendor": "Siemens",
          "firmware" = "1.03b"
          "parameters": [],
          "active": true
        },
        "device": {
          "deviceID": "17600315bca39e1e3fcc9f2f714c3627ebde151d",
          "typeID": "ffff00",
          "typeName": "Smart Phone",
          "vendor": "Samsung",
          "firmware" = "Android9"
          "parameters": [],
          "active": false
        },
    ]
}

Request

This request retrieves information about ZDMP device(s) based on the userID and (optional) deviceID specified.

Request URL: GET /interplatform-ops/devices/<deviceID>

Transfer Parameters

Name Required Parameter Type Object Type Description
deviceID No Path string Device Id of a specific device to be retrieved.
userID Yes Query string User Id of the device(s) to be retrieved
format Yes Query string Output format of the device information. Supported options are "adamos" (JSON), "efactory" (XML), and "sdaim" (CSV).

Response

The response contains the device information formatted in the specified format.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges to access the specified information
404 Specified userID and/or deviceID not found

Get supported device operations

Authorised users and components of supported 3rd party platforms can retrieve a list of the supported operations of individual ZDMP devices. This includes a description of the operations and a unique id of the operation type.

GET /interplatform-ops/devices/a49e9411d64ff53eccfdd09ad10a15b3?adamos HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "deviceID": "a49e9411d64ff53eccfdd09ad10a15b3",
    "operations": [
      "operation" = {
        "id" = "001",
        "name" = "activate",
        "description" = "Activates the device."
      },
      "operation" = {
        "id" = "002",
        "name" = "deactivate",
        "description" = "De-activates the device."
      },
    ]
}

Request

This request retrieves a list of the supported operations based on the deviceID specified.

Request URL: GET /interplatform-ops/devices/<deviceID>/ops

Transfer Parameters

Name Required Parameter Type Object Type Description
deviceID Yes Path string Device Id of the device whose operations shall be retrieved.
format Yes Query string Output format. Supported options are "adamos" (JSON), "efactory" (XML), and "sdaim" (CSV).

Response

The response contains the list of operations supported by the specified device, formatted in the chosen format.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges to access the specified information
404 Specified deviceID not found

Get historical data for device

Authorised users and components of supported 3rd party platforms can retrieve historical data of specific devices for a particular time period.

GET /interplatform-ops/devices/a49e9411d64ff53eccfdd09ad10a15b3/log?adamos HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "startdate": "2019-03-13 10:25:00 GMT",
  "enddate": "2019-03-13 10:30:00 GMT",
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "deviceID": "a49e9411d64ff53eccfdd09ad10a15b3",
    "typeID": "32ff434",
    "userID": "u43734734",
    "history": [
      "event" : {
        "timestamp" : "2019-03-13 10:25:17 GMT",
        "type" : "info",
        "description" : "Device activated."
      },
      "event" : {
        "timestamp" : "2019-03-13 10:28:17 GMT",
        "type" : "warning",
        "description" : "Temperature is above threshold!"
      },
      "event" : {
        "timestamp" : "2019-03-13 10:29:35 GMT",
        "type" : "alarm",
        "description" : "Critical temperature reached."
      },
    ]
}

Request

This request retrieves the historical data of a device based on the deviceID and time period specified.

Request URL: GET /interplatform-ops/devices/<deviceID>/log

Transfer Parameters

Name Required Parameter Type Object Type Description
deviceID Yes Path string Device Id of the device whose historical data shall be retrieved.
format Yes Query string Output format. Supported options are "adamos" (JSON), "efactory" (XML), and "sdaim" (CSV).
startdate No Body string Start date
enddate No Body string End date

Response

The response contains the historical data of the specified device along the unique id of the device, the unique id of the device type, and the unique id of the enduser/owner. The response is formatted in a format compatible to the specified 3rd party platform.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges to access the specified information
404 Specified deviceID not found

Get user information

Authorised users and components of supported 3rd party platforms can retrieve information about specific users. This includes a description of the user and the user's permissions.

GET /interplatform-ops/users/u4376363?adamos HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "userID": "u4376363",
    "description": "User description...",
    "permissions" : [
        "permission" : {
            "accessrights" : "ro",
            "target" : "productionProgress"
        },
    ]
}

Request

This request retrieves user information based on the userID specified.

Request URL: GET /interplatform-ops/users/<userID>

Transfer Parameters

Name Required Parameter Type Object Type Description
userID Yes Path string User Id of the user whose information shall be retrieved.
format Yes Query string Output format. Supported options are "adamos" (JSON), "efactory" (XML), and "sdaim" (CSV).

Response

The response contains information about the specified user including the user's unique id, a description and the user's permissions. The response is formatted in a format compatible to the specified 3rd party platform.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges to access the specified information
404 Specified userID not found

Get group information

Authorised users and components of supported 3rd party platforms can retrieve information about specific groups. This includes the users in this group and the group permissions.

GET /interplatform-ops/groups/g325561?adamos HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "groupID": "u4376363",
    "description": "Paint Shop workers",
    "users" : [
        "u4376363",
        "u2546436",
        "u7438995"
    ],
    "permissions" : [
        "permission" : {
            "accessrights" : "ro",
            "target" : "paintShopTemperatureSensors"
        },
        "permission" : {
            "accessrights" : "rw",
            "target" : "paintShopRobotControl"
        },
    ]
}

Request

This request retrieves group information based on the groupID specified.

Request URL: GET /interplatform-ops/groups/<groupID>

Transfer Parameters

Name Required Parameter Type Object Type Description
groupID Yes Path string Group Id of the group whose information shall be retrieved.
format Yes Query string Output format. Supported options are "adamos" (JSON), "efactory" (XML), and "sdaim" (CSV).

Response

The response contains information about the specified group including the group's unique id, a description of the group, the group members and the group permissions. The response is formatted in a format compatible to the specified 3rd party platform.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges to access the specified information
404 Specified userID not found

Platform Tier

Data Harmonisation Runtime

The Data Harmonisation Runtime component addresses the running of data maps. These data maps allow the change of data from one format to another. It can be connected to the T6.4 Service and Message Bus to access the data from other components.

Invoke Transformation

The RESTful interface Invoke Transformation transforms the input data and returns the transformed data as output according to the rules implemented in its functional implementation by calling the transformation engine.

Input and output data can only follow the schema in which the transformation is based upon, eg a transformation csv2json will only accept CSV files (formatted as dictated by the transformation rules) and will only produce a JSON file structured following the specifications of the transformation package.

POST /transformation/engines/<ID>/transformation HTTP/1.1
Content-Type: application/xml
<transformation>
 <engineId>fromTardyPress</engineId>
 <engineVersion>1.4</engineVersion>
 <sourceFormat>CSV</sourceFormat>
 <targetFormat>XML</targetFormat>
 <dataIn><![CDATA[name;temperature;pressure|\n|clutch1;63.1;600|\n|clutch2;61.7;586|\n|clutch3;59.7;614|\n|clutch4;64.1;603|\n|]]></dataIn>
</transformation>
HTTP/1.1 200 OK
Content-Type: application/xml
<transformation>
  <engineId>fromTardyPress</engineId>
  <engineVersion>1.4</engineVersion>
  <sourceFormat>CSV</sourceFormat>
  <targetFormat>XML</targetFormat>
  <dataIn><![CDATA[
   {
     "machine": "machine1",
     "company": "Tardy",
     "measures": [{
         "name": "clutch1",
         "temp": "63.1",
         "pres": "600"
       },{
         "name": "clutch2",
         "temp": "61.7",
         "pres": "586"
       },{
         "name": "clutch3",
         "temp": "59.7",
         "pres": "614"
       },{
         "name": "clutch4",
         "temp": "64.1",
         "pres": "603"
       }]
   }
  ]]></dataIn>
</transformation>

Request

Request URL: POST /transformation/engines/<ID>/transformation?session=userToken

Transfer Parameters

Name Required Parameter Type Object Type Description
engineId Yes Resource String ID of the engine to execute
userToken Yes Query String The userToken propagated through all requests
object Yes Body entity Json Array A serialised JSON object to transform, embedded in a wrapper

Response

Returns a transformed JSON object in the same format as the input object.

If there is an error during the processing, a message should be returned to specify detailed information and return a HTTP Statuscode.

Common Return Codes

Code Description
200 Object transformed
403 Insufficient rights
404 Transformation engine not found
500 Internal Server Error - There was an unexpected error at some point during the processing of the request.

Orchestration Runtime

The Process Orchestration Runtime is the part of the Process Orchestration component that deals with the runtime aspect; executing a firmly defined workflow.

Execute Process

This interface will receive the deployed process from the zApps/ZDMP Assets to execute it

POST orchestration-runtime/process/1234/instances HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "instance":"http://dev.vfos-eu/processenabler-execution/processes/1234/instances/instance001.xml",
  "format":"XML",
  "version":"1.0"
}
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
{
  "type":"termination",
  "response":"execution"
}
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
{
  "type":"termination",
  "response":"failure"
}

Request

Request URL: POST orchestration-runtime/process/<processModelId>/instances/

Transfer Parameters

Name Required Parameter Type Type Description
processModelId Yes Resource String A unique identifier for a specific process model
Process Model Instance Yes Body entity JSON Object An object with the setup of an instance, which contains the following attributes
  • Type: Defines if hte execution was successfull (type=execution) or not (type=failure)
  • response: Array of key value pairs representing the return values
  • reason: Message containing the reason for the failure

Response

If successful, the response will return with an HTTP Statuscode 201.

Common Return Codes

Code Description
201 An instance of a process has been started
404 The process cannot be found
500 Internal Server Error - There was an unexpected error at some point during the processing of the request.

Monitoring and Alerting

The ZDMP Monitoring and Alerting component offers fundamental services for monitoring data and alerting users when a information goes out of the desired range.

Create KPI

Via this route its possible to define a KPI used to monitor data and alert users.

POST /v1/kpis HTTP/1.1
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "kpi": {
      "id": "k-2019-02-08-09-12-a1b2c3",
      "kpiDescription": "Number of Docker Instances",
      "kpiPaths": [
        {
          "query": "$.dockerInstances.length"
          "type": "JSONPath"
        },
        {
          "query": "count(//dockerInstances)"
          "type": "xPath"
        }
      ]
    }
  }
}

Request

The request contains multiple required fields.

Request URL: POST /v1/kpis

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiDescription Yes Body string KPI description
kpiPath_n_\Query Yes Body string Query of KPI path of item N, describing how to obtain the KPI value using the sintax of the type of path informed
kpiPath_n_\Type Yes Body string Type of KPI path of item N, either JSONPath or xPath

Response

The response, when a success case, contains the KPI object and its properties. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Description
201 Created
400 Malformed request
403 Forbidden
409 Conflict
500 Server error

Read KPI

Via this route its possible to obatin a KPI previously defined.

GET /v1/kpis HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "kpi": {
      "id": "k-2019-02-08-09-12-a1b2c3",
      "kpiDescription": "Number of Docker Instances",
      "kpiPaths": [
        {
          "query": "$.dockerInstances.length"
          "type": "JSONPath"
        },
        {
          "query": "count(//dockerInstances)"
          "type": "xPath"
        }
      ]
    }
  }
}

Request

The request contains two required fields and one non-required field.

Request URL: GET /v1/kpis

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiId No Body string KPI ID, when not informed, will obtain all the KPIs the user has access to

Response

The response, when a success case, contains the KPI object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Update KPI

Via this route its possible to update a KPI previously defined.

PUT /v1/kpis HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "kpi": {
      "id": "k-2019-02-08-09-12-a1b2c3",
      "kpiDescription": "Docker - Number of Instances Active",
      "kpiPaths": [
        {
          "query": "$.dockerInstances.length"
          "type": "JSONPath"
        },
        {
          "query": "count(//dockerInstances)"
          "type": "xPath"
        }
      ]
    }
  }
}

Request

The request contains multiple required fields.

Request URL: PUT /v1/kpis

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiId Yes Body string KPI ID
kpiDescription Yes Body string KPI description
kpiPath_n_\Query Yes Body string Query of KPI path of item N, describing how to obtain the KPI value using the sintax of the type of path informed
kpiPath_n_\Type Yes Body string Type of KPI path of item N, either JSONPath or xPath

Response

The response, when a success case, contains the updated KPI object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
204 No Content
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Delete KPI

Via this route its possible to delete a KPI previously defined.

DELETE /v1/kpi HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains three required fields.

Request URL: DELETE /v1/kpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiId Yes Body string KPI ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Subscribe to KPI

Via this route a user can subscribe to receive data from an existing KPI.

POST /v1/subscribetokpi HTTP/1.1
HTTP/1.1 201 Created

Request

The request contains three required fields.

Request URL: POST /v1/subscribetokpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiId Yes Body string KPI ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Description
201 Created
400 Malformed request
403 Forbidden
500 Server error

Unsubscribe to KPI

Via this route a user can cancel a subscription to not receive data from the KPI.

POST /v1/unsubscribetokpi HTTP/1.1
HTTP/1.1 202 Accepted

Request

The request contains three required fields.

Request URL: POST /v1/unsubscribetokpi

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiId Yes Body string KPI ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Description
202 Accepted
400 Malformed request
403 Forbidden
500 Server error

Get List of Subscribed KPI

Via this route its possible to retrieve the list of KPIs the user has subscribed.

GET /v1/getkpisubscriptions HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": true
  },
  "data": {
    "kpiList": [
      {
        "kpiId": "kpi-id-2019-01-01-02-08-1a2b3c",
        "kpiDescription": "KPI 01"
      },
      {
        "kpiId": "kpi-id-2019-01-01-02-08-4d5e6f",
        "kpiDescription": "KPI 02"
      }
    ]
  }
}

Request

The request contains two required field and one optional field.

Request URL: GET /v1/getkpisubscriptions

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiDescriptionFilter No Body string String to filter the KPI for its description
filterMode No Body string The value should be contains not contains, equals to, not equals to, starts with or ends with

Response

The response, when a success case, contains a object including a list of KPIs the user has subscribed. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
500 Server error

Get KPI Data

Via this route its possible data from a KPI.

GET /v1/kpidata HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "kpi": {
      "kpiId": "k-2019-02-08-09-12-a1b2c3",
      "kpiDescription": "Number of Docker Instances",
      "kpiData": [
        {
          "date": "2019-01-01-22-01",
          "value": "2",
          "dataCreator": "zApp01-Docker02-Process03"
        },
        {
          "date": "2019-01-02-22-01",
          "value": "8",
          "dataCreator": "ZdmpAutonomousComponent-Docker12-Process28"
        }
      ]
    }
  }
}

Request

The request contains two required fields and one non-required field.

Request URL: GET /v1/kpidata

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
kpiId Yes Body string KPI ID
filterDateStart No Body string Filter the data by date, returning only the data created after the received date
filterDateEnd No Body string Filter the data by date, returning only the data created before the received date

Response

The response, when a success case, contains the KPI Data object and its properties. The API answers with a HTTP status code of 200 OK.

Create Alert

Via this route its possible to create an Alert to inform users when a KPI value meet certain conditions.

POST /v1/kpialert HTTP/1.1
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "kpiAlert": {
      "alertId": "ka-2019-02-08-09-12-a1b2c3",
      "alertDescription": "Excessive Production of parts X123",
      "messages": [
        {
          "Body": "Excessive production of parts X123.",
          "Users": [
            {
              "id": "u-2017-01-08-20-08-a1b2c3",
              "deliverySequence": "1"
            },
            {
              "id": "U-2019-01-08-20-08-g7h8i9",
              "deliverySequence": "3"
            }
          ],
          "Emails": [
            {
              "address": "user123@email.com",
              "deliverySequence": "1"
            },
            {
              "address": "user456@email.com",
              "deliverySequence": "2"
            },
            {
              "address": "user789@email.com",
              "deliverySequence": "4"
            }
          ]
        },
        {
          "Body": "Production of parts X123 must be updated!",
          "Users": [
            {
              "id": "u-2019-02-08-20-08-a1b2c3",
              "deliverySequence": "2"
            },
            {
              "id": "U-2019-01-08-20-08-g7h8i9",
              "deliverySequence": "4"
            }
          ],
          "Emails": [
            {
              "address": "user123@email.com",
              "deliverySequence": "1"
            },
            {
              "address": "user456@email.com",
              "deliverySequence": "3"
            },
            {
              "address": "user028@email.com",
              "deliverySequence": "4"
            }
          ]
        }
      ],
      "kpiConditionList": [
        {
          "kpiCondition": {
            "kpiID": "KP-2019-11-09-19-22-a1b2c3",
            "kpiDescription": "Parts X123 production is active",
            "conditionQuery": "true"
          }
        },
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-d4e5f6",
            "kpiDescription": "Parts X123 Stock",
            "conditionQuery": ">=2800000"
          }
        }
      ],
      "kpisConditionQueryAgregation": "AND"
    }
  }
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /v1/kpialert

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
alertDescription Yes Body string Description of the Alert
message_n_Body No Body string Body text for Message of item N
message_n_User_m_Id No Body string Id of user M, that should receive the message of item N
message_n_User_m_DeliverySequence No Body int Delivery Sequence of user M, that should receive the message of item N, the first user/email to receive the alert is the one with the smallest delivery sequence. If more than one user or email has the same delivery sequence, both users will receive the alert simultaneously
message_n_Email_m_Address No Body string Email Address of item M, that should receive the message of item N
message_n_Email_m_DeliverySequence No Body int Delivery Sequence of email M, that should receive the message of item N, the first user/email to receive the alert is the one with the smallest delivery sequence. If more than one user or email has the same delivery sequence, both users will receive the alert simultaneously
message_n_KpiId_m No Body string Id of KPI M, whose data is sent in the message of item N
message_n_DelayBetweenUsersNotification No Body int Delay between the notifications of two users
kpi_n_Id Yes Body string KPI ID of item N
kpi_n_ConditionQuery Yes Body string Condition query for KPI if item N
kpisConditionQueryAgregation No Body string Condition query for agregating the KPIs conditions query, when this parameter is not informed and there are more than one KPI informed, we consider that ALL the KPIs conditions needs to be fulfilled for the orchestration process to be started; Example: "(KPI01_ID;AND;KPI02_ID);OR;KPI03_ID" where the process will be started when the conditions for KPI 01 and KPI 02 are matched OR when KPI 03 conditions are matched.

Response

The response, when a success case, contains the alert object and its properties. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Description
201 Created
400 Malformed request
403 Forbidden
409 Conflict
500 Server error

Read Alert

Via this route its possible to obatin an alert previously defined.

GET /v1/kpialert HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "kpiAlert": {
      "alertId": "ka-2019-02-08-09-12-a1b2c3",
      "alertDescription": "Excessive Production of parts X123",
      "messages": [
        {
          "Body": "Excessive production of parts X123.",
          "Users": [
            {
              "id": "u-2017-01-08-20-08-a1b2c3",
              "deliverySequence": "1"
            },
            {
              "id": "U-2019-01-08-20-08-g7h8i9",
              "deliverySequence": "3"
            }
          ],
          "Emails": [
            {
              "address": "user123@email.com",
              "deliverySequence": "1"
            },
            {
              "address": "user456@email.com",
              "deliverySequence": "2"
            },
            {
              "address": "user789@email.com",
              "deliverySequence": "4"
            }
          ]
        },
        {
          "Body": "Production of parts X123 must be updated!",
          "Users": [
            {
              "id": "u-2019-02-08-20-08-a1b2c3",
              "deliverySequence": "2"
            },
            {
              "id": "U-2019-01-08-20-08-g7h8i9",
              "deliverySequence": "4"
            }
          ],
          "Emails": [
            {
              "address": "user123@email.com",
              "deliverySequence": "1"
            },
            {
              "address": "user456@email.com",
              "deliverySequence": "3"
            },
            {
              "address": "user028@email.com",
              "deliverySequence": "4"
            }
          ]
        }
      ],
      "kpiConditionList": [
        {
          "kpiCondition": {
            "kpiID": "KP-2019-11-09-19-22-a1b2c3",
            "kpiDescription": "Parts X123 production is active",
            "conditionQuery": "true"
          }
        },
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-d4e5f6",
            "kpiDescription": "Parts X123 Stock",
            "conditionQuery": ">=2800000"
          }
        }
      ],
      "kpisConditionQueryAgregation": "AND"
    }
  }
}

Request

The request contains two required fields and one non-required field.

Request URL: GET /v1/kpialert

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
alertId No Body string KPI ID, when not informed, will obtain all the alerts the user has access to

Response

The response, when a success case, contains the alert object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Update Alert

Via this route its possible to update an alert previously defined.

PUT /v1/kpialert HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "kpiAlert": {
      "alertId": "ka-2019-02-08-09-12-a1b2c3",
      "alertDescription": "Excessive Production - parts X123",
      "messages": [
        {
          "Body": "Excessive production of parts X123.",
          "Users": [
            {
              "id": "u-2017-01-08-20-08-a1b2c3",
              "deliverySequence": "1"
            },
            {
              "id": "U-2019-01-08-20-08-g7h8i9",
              "deliverySequence": "3"
            }
          ],
          "Emails": [
            {
              "address": "user123@email.com",
              "deliverySequence": "1"
            },
            {
              "address": "user456@email.com",
              "deliverySequence": "2"
            },
            {
              "address": "user789@email.com",
              "deliverySequence": "4"
            }
          ]
        },
        {
          "Body": "Production of parts X123 must be updated!",
          "Users": [
            {
              "id": "u-2019-02-08-20-08-a1b2c3",
              "deliverySequence": "2"
            },
            {
              "id": "U-2019-01-08-20-08-g7h8i9",
              "deliverySequence": "4"
            }
          ],
          "Emails": [
            {
              "address": "user128@email.com",
              "deliverySequence": "1"
            },
            {
              "address": "user456@email.com",
              "deliverySequence": "3"
            },
            {
              "address": "user028@email.com",
              "deliverySequence": "4"
            }
          ]
        }
      ],
      "kpiConditionList": [
        {
          "kpiCondition": {
            "kpiID": "KP-2019-11-09-19-22-a1b2c3",
            "kpiDescription": "Parts X123 production is active",
            "conditionQuery": "true"
          }
        },
        {
          "kpiCondition": {
            "kpiID": "KP-2018-01-09-19-22-d4e5f6",
            "kpiDescription": "Parts X123 Stock",
            "conditionQuery": ">=12800000"
          }
        }
      ],
      "kpisConditionQueryAgregation": "AND"
    }
  }
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: PUT /v1/kpialert

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
alertId Yes Body string Alert ID
alertDescription Yes Body string Description of the Alert
message_n_Body No Body string Body text for Message of item N
message_n_User_m_Id No Body string Id of user M, that should receive the message of item N
message_n_User_m_DeliverySequence No Body int Delivery Sequence of user M, that should receive the message of item N, the first user/email to receive the alert is the one with the smallest delivery sequence. If more than one user or email has the same delivery sequence, both users will receive the alert simultaneously
message_n_Email_m_Address No Body string Email Address of item M, that should receive the message of item N
message_n_Email_m_DeliverySequence No Body int Delivery Sequence of email M, that should receive the message of item N, the first user/email to receive the alert is the one with the smallest delivery sequence. If more than one user or email has the same delivery sequence, both users will receive the alert simultaneously
message_n_KpiId_m No Body string Id of KPI M, whose data is sent in the message of item N
message_n_DelayBetweenUsersNotification No Body int Delay between the notifications of two users
kpi_n_Id Yes Body string KPI ID of item N
kpi_n_ConditionQuery Yes Body string Condition query for KPI if item N
kpisConditionQueryAgregation No Body string Condition query for agregating the KPIs conditions query, when this parameter is not informed and there are more than one KPI informed, we consider that ALL the KPIs conditions needs to be fulfilled for the orchestration process to be started; Example: "(KPI01_ID;AND;KPI02_ID);OR;KPI03_ID" where the process will be started when the conditions for KPI 01 and KPI 02 are matched OR when KPI 03 conditions are matched.

Response

The response, when a success case, contains the updated alert object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
204 No Content
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Delete Alert

Via this route its possible to delete a KPI previously defined.

DELETE /v1/kpialert HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains three required fields.

Request URL: DELETE /v1/kpialert

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
alertId Yes Body string Alert ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

React on Alert

Via this route its possible to react on an alert sent by the monitoring and alerting component .

POST /v1/kpialertreact HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /v1/kpialertreact

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
alertId Yes Body string Alert ID
keepChainAlerts Yes Body bool Indicator to continue alerting the chain of users / emails
reactionComment No Body string Comment regarding the alert

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

AI-Analytics Runtime

This component deploys machine learning models to the ZDMP platform where they can be run both offline and online.

Connect to marketplace

This function allows users to acces the Marketplace component through Analytics UI and Deployer API.

POST /AIAnalyticsRuntime/v1/cert?login=username&password=password HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"username":"username",
"password":"password"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "ownerOrganization": {
    "providerId": 0,
    "providerDomainName": "Provider Name"
  },
  "aliasName": "1",
  "userGUID": "4317e820-eb4e-494e-b800-9c1c18b821f4",
  "loginAttempts": 0,
  "remainingLockTime": 0,
  "smtpAddress": "",
  "providerOrganization": {
    "providerId": 0,
    "providerDomainName": "Provider Name"
  },
  "errList": [
  ],
  "userName": "username",
  "providerType": 1,
  "ccn": 0,
  "token": "QSDK 3feedcdeccfa56f536a1e9ddc92275e7e78025640882eb106964622e6d9edf36eaca970a00d27710e7e88c38f54239d1c7
04c4f993f28358277d0caa53fbc2681c4214c6f1ad02d7ea661dbff4e2dd906afab382f47ee489fdb9b85754538e904674
d76e7a7c82ee5137dfeadb094a441da9916f77ce8356f7a23d864d510e43221f9e86d3240b172dd0731faa8045f35bb618
5b99af701629b5391c4fe1516936f0fa17e21c01b8eefee6cfb143f00b496c3a332bdbe2ddd534c2301e466eb79d3bce77
e11d81ce67eb8ba5c93385798d417dca01a56e015647377cc29ed3403a7a3bd93101f0exea415f100ecab9e0d3544847ec
6fe583f00bcd2e026f21292",
  "capability": 6945989585,
  "forcePasswordChange": false,
  "isAccountLocked": false
}

Request

Request URL: /AIAnalyticsRuntime/v1/cert?login=username&password=password

Transfer Parameters

Name Required Parameter Type Object Type Description
username Yes Query string Login username
password Yes Query string Login Password

Response

The response contains the user guid and token.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges
404 Specified user not found

Services and Message Bus

The ZDMP Services and Message Bus components offers fundamental functions and services to expose services provided by ZDMP Assets to other ZDMP Assets via managed APIs and to enable ZDMP Assets to exchange information via the Publish/Subscribe messaging concept.

Get an API

Authorised users can retrieve an individual API either in Swagger or RAML format.

GET /rest/apigateway/apis/12345?swagger HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "apiDefinition": {
    "host": "zdmpassetXYZ.zdmp.eu",
    "basePath": "/api",
    "schemes": [
      "https"
    ],
    "paths": {
      "/random": {
        "get": {
          "summary": "GET",
          "description": "This function returns ....",
          "operationId": "GET",
          "produces": [
            "application/json"
          ],
          "parameters": [],
          "responses": {},
          "enabled": true
        },
        "enabled": true
      }
    },
    "apiName": "ServiceXYZ_API",
    "apiVersion": "1.0",
    "apiDescription": "A longer description ...",
    "isActive": false,
    "type": "REST",
    "owner": "Administrator",
    "creationDate": "2019-03-13 09:38:30 GMT",
    "systemVersion": 1,
    "id": "12345"
  }
}

Request

This request retrieves an API based on the apiId specified.

Request URL: GET /rest/apigateway/apis/<apiId>

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API to be retrieved
format No Query string Output format of the API. If the value is 'swagger', you get an API definition in swagger format. If the value is 'raml', you get a raml document.

Response

The response contains the API definition either as swagger content in JSON format or as RAML content in yaml format.

Common Return Codes

Code Description
200 OK
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Get a list of APIs

Authorised users can request a list of all APIs or a subset of APIs.

GET /rest/apigateway/apis HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "apiResponse": [
    {
      "api": {
        "apiName": "API-Name-A",
        "apiVersion": "v2",
        "apiDescription": "API-Name-A allows to ....",
        "isActive": false,
        "type": "REST",
        "systemVersion": 2,
        "id": "46df4227-a100-486c-9580-0bf388ec6ec7"
      },
      "responseStatus": "SUCCESS"
    },
    {
      "api": {
        "apiName": "API-Name-B",
        "apiVersion": "1.0",
        "apiDescription": "API-Name-B allows to ....",
        "isActive": true,
        "type": "REST",
        "systemVersion": 1,
        "id": "25fb937a-8360-41ab-8be5-987b14fe631d"
      },
      "responseStatus": "SUCCESS"
    }
  ]
}"

Request

This request returns a list of all APIs or a subset based on their apiIds specified.

Request URL: GET /rest/apigateway/apis

Transfer Parameters

Name Required Parameter Type Object Type Description
apiIds No Query string Comma-separated list of API Ids of the APIs to be retrieved
from No Query integer Starting index from the list of APIs to be retrieved
size No Query integer Number of APIs to be retrieved

Response

The response contains the list of APIs.

Common Return Codes

Code Description
200 OK
401 Incorrect user credentials or insufficient privileges to access the specified API

Create a new API

Authorised users can create a new API by providing an API description in Swagger, RAML, or WSDL format. This description can be imported from a file or url as well as created from scratch.

POST /rest/apigateway/apis HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "file": "swaggerAPIdefinition.json",
  "type": "swagger",
  "apiName": "ServiceAPI_XYZ",
  "apiVersion": "1.0",
  "apiDescription": "A clear API description ...",
}
HTTP/1.1 200 OK

Request

This REST operation is used to create a new API by importing a file or url, or inline from scratch.

Request URL: POST /rest/apigateway/apis

Transfer Parameters

Name Required Parameter Type Object Type Description
file Yes Body file Input Swagger, RAML, or WSDL file to be imported
type Yes Body string Input file type ["swagger", "raml", "wsdl"]
apiName Yes Body string Name of the API
apiVersion No Body string Version of the API
apiDescription No Body string Description of the API

Response

The response contains the created API object.

Common Return Codes

Code Description
200 OK
400 Missing mandatory fields (e.g., file, url, or apiDefinition) or invalid request body
401 Incorrect user credentials or insufficient privileges to access the specified API

Update an existing API

Authorised users can update existing APIs by providing an API description in Swagger, RAML, or WSDL format. The description can be imported from a file or url as well as specified inline.

PUT /rest/apigateway/apis/12345 HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "apiDefinition": {
    "type": "rest",
    "info": {
      "vendorExtensions": {},
      "description": "Updated description",
      "version": "1.0",
      "title": "ServiceXYZ_API"
    },
    "host": "zdmpassetXYZ.zdmp.eu",
    "basePath": "/api",
    "schemes": [
      "https"
    ],
    "paths": {
      "/random": {
        "get": {
          "summary": "GET",
          "description": "",
          "operationId": "GET",
          "produces": [
            "application/json"
          ],
          "parameters": [],
          "responses": {},
          "enabled": true
        },
        "enabled": true
      }
    },
    "definitions": {}
  },
  "nativeEndpoint": [
    {
          "passSecurityHeaders": true,
          "uri": "https://zdmpassetXYZ.zdmp.eu/api",
          "connectionTimeoutDuration": 0,
          "alias": false
    }
  ],
  "apiName": "ServiceAPI_XYZ",
  "apiDescription": "Updated API description",
  "apiVersion": "v2",
  "type": "REST",
}
HTTP/1.1 200 OK

Request

This REST operation is used to update an existing API by importing a file or url, or directly inline.

Request URL: PUT /rest/apigateway/apis/<apiId>

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API to be updated
file Yes FormData file Input swagger / raml / wsdl file
apiName Yes FormData string Name of the API
apiDescription No FormData string Description of the API
apiVersion No FormData string Version of the API
type Yes FormData string Input file type
body Yes FormData string API request payload

Response

The response contains the updated API object.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Create a new API Version

Authorised users can create a new versions of existing APIs. Each version can be managed independently from all other versions.

POST /rest/apigateway/apis/12345/versions HTTP/1.1
Content-Type: application/json; charset=utf-8
{
   "newApiVersion" : "2.3"
}
HTTP/1.1 200 OK

Request

This REST operation is used to create a new API version.

Request URL: POST /rest/apigateway/apis/{apiId}/versions

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API to be versioned"
newApiVersion Yes Body string The version string of the new API version

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 The specified api is not the latest version or if the newApiVersion is empty
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Delete an API

Authorised users can delete APIs if they are in de-activated state.

PUT /rest/apigateway/apis/12345 HTTP/1.1
HTTP/1.1 200 OK

Request

This REST operation is used to delete a de-activated API.

Request URL: PUT /rest/apigateway/apis/<apiId>

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API to be deleted
forceDelete No Query boolean Flag for force delete. Required when API is associated with some applications

Response

The response returns the apiId along with an error when unsuccessful.

Common Return Codes

Code Description
204 Success
400 The deleted API is in active state and thus cannot be deleted
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Activate an API

Authorised users can activate an API to expose the API to consumers.

PUT /rest/apigateway/apis/12345/activate HTTP/1.1
HTTP/1.1 200 OK

Request

This REST operation is used to activate an API.

Request URL: PUT /rest/apigateway/apis/<apiId>/activate

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API to be activated

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 API is already in activated state or when no operations/resources are present or none are enabled
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Deactivate an API

Authorised users can deactivate an API so that the API is no longer exposed to consumers.

PUT /rest/apigateway/apis/12345/deactivate HTTP/1.1
HTTP/1.1 200 OK

Request

This REST operation is used to deactivate an API.

Request URL: PUT /rest/apigateway/apis/<apiId>/deactivate

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API to be deactivated

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 API is already in de-activated state
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Updating an API access token

The T5.2 Secure Authentication/Authorisation component can update the API access token stored for an API. Afterwards, the API can be only called if the new access token is provided.

PUT /rest/apigateway/apis/12345/accesstoken HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "accesstoken": "da39a3ee5e6b4b0d3255bfef95601890afd80709"
}
HTTP/1.1 200 OK 

Request

This REST operation is used to update the access token stored for an API.

Request URL: PUT /rest/apigateway/apis/<apiId>/accesstoken

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API whose access token is updated
accesstoken Yes Body string The new access token

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Access denied
404 Specified apiID not found

Revoke API access token

The T5.2 Secure Authentication/Authorisation component can revoke the API access token stored for an API. Afterwards, the API cannot be accessed until a new access token is stored.

PUT /rest/apigateway/apis/12345/revoketoken HTTP/1.1
HTTP/1.1 200 OK

Request

This REST operation is used to revoke the access token stored for an API.

Request URL: PUT /rest/apigateway/apis/<apiId>/revoketoken

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API whose access token is revoked

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 No access token stored for the specified API
401 Access denied
404 Specified apiID not found

Enable API Mocking

Authorised users can mock an API implementation by simulating the native service. API Mocking is useful, e.g., for testing purposes or to expose an API to consumers even though the actual API doesn't exist or isn't complete.

When mocking is enabled for an API, a default mock response is created for each combination of resource, operation, status code and content-type based on the example and schema set in the API definition. This mock response can be modified at any time. At runtime, when the mocked API is invoked instead of calling the native service, the mocked response is returned to the consumer based on the following priorities: 1. If any of the conditions for the invoked operation satisfies, the associated mocked response is returned. 2. If no condition is specified or none of the condition for the invoked operation is satisfied, NA is returned.

PUT /rest/apigateway/apis/12345/mock/enable HTTP/1.1
HTTP/1.1 200 OK

Request

This REST operation is used to enable API Mocking for a specific API.

Request URL: PUT /rest/apigateway/apis/<apiId>/mock/enable

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id for the API to be mocked
retainDefaultMockResponses no Query boolean Flag to retain generated mocked responses. When this is set to true, default mocked responses will be retained. If it's set to false, new default mocked responses will be generated using the examples, schema in the API

Response

The response returns the API object after successfully enabling mocking of an API.

Common Return Codes

Code Description
200 OK
400 Invalid json or xml is provided in the example part of the operation
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Disable API Mocking

Authorised users can disable API mocking for a specified API. Once disabled, at runtime all the API invocations are redirected to the native service instead of sending the mocked response.

PUT /rest/apigateway/apis/12345/mock/disable HTTP/1.1
HTTP/1.1 200 OK

Request

This REST operation is used to disable API Mocking for a specific API.

Request URL: PUT /rest/apigateway/apis/<apiId>/mock/enable

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id of the API that shall disable API Mocking

Response

The response returns the API object after successful disabling mocking of an API.

Common Return Codes

Code Description
200 OK
400 API Mocking is already disabled
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Get API Log

Retrieves the API Log of the specified API for a specific time period.

GET /rest/apigateway/apis/12345/log HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "startdate": "2019-03-13 10:20:00 GMT",
  "enddate": "2019-03-13 10:30:00 GMT",
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "apiId": "12345",
  "startdate": "2019-03-13 10:20:00 GMT",
  "enddate": "2019-03-13 10:30:00 GMT",
  "log":[
    {
      "timestamp": "2019-03-13 10:22:17 GMT",
      "caller": "ZDMP Digital Twin",
      "function": "Get sensor data",
      "params": "deviceID=AF443BD",
      "responseStatus": "ERROR",
      "error":  "503 - device unavailable"
    },
    {
      "timestamp": "2019-03-13 10:25:17 GMT",
      "caller": "ZDMP Digital Twin",
      "function": "Get sensor data",
      "params": "deviceID=AF443BD",
      "responseStatus": "SUCCESS",
      "error":  ""
    }
  ]
}

Request

This REST operation is used to retrieve the API Log for a specific API and time period.

Request URL: GET /rest/apigateway/apis/<apiId>/log

Transfer Parameters

Name Required Parameter Type Object Type Description
apiId Yes Path string API Id
startdate No Body string Start date
enddate No Body string End date

Response

The response returns the API Log in JSON format.

Common Return Codes

Code Description
200 OK
401 Incorrect user credentials or insufficient privileges to access the specified API
404 Specified apiID not found

Create a topic

This endpoint creates a topic with a specific name.

POST /rest/messaging/topics HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "accesstoken": "da39a3ee5e6b4b0d3255bfef95601890afd80709"
  "name": "Devices/AE35FB/Temperature",
}
HTTP/1.1 200 OK

Request

This REST operation is used to create a new messaging topic.

Request URL: POST /rest/messaging/topics

Transfer Parameters

Name Required Parameter Type Object Type Description
accesstoken Yes Body string The access token required for creating topics
name Yes Body string The name of the topic to be created

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 Topic already exists
401 Access denied - Access token is invalid

Delete a topic

This endpoint deletes a specific topic

PUT /rest/messaging/topics/devices/ae35fb/temperature HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "accesstoken": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
}
HTTP/1.1 200 OK

Request

This REST operation is used to delete an existing topic.

Request URL: PUT /rest/messaging/topics/<topicName>

Transfer Parameters

Name Required Parameter Type Object Type Description
topicName Yes Resource string The name of the topic to be deleted
accesstoken Yes Body string The access token required for deleting topics

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 Topic does not exist
401 Access denied - Access token is invalid

List topics

This endpoint returns a list of all topics at a given level.

GET /rest/messaging/topics/devices/ae35fb HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "level": "topics/devices/ae35fb",
  "topics":[
    "Temperature",
    "Humidity",
    "Vibration",
    "AlarmButtonPressed"
  ]
}

Request

This REST operation is used to retrieve a list of all topics at a specific level.

Request URL: GET /rest/messaging/topics/<topicLevel>

Transfer Parameters

Name Required Parameter Type Object Type Description
topicLevel No Resource string The level for which the topics have to been enlisted

Response

The response returns a list of all available topics at a given level. If no level is specified, a list of all available topics is returned.

Common Return Codes

Code Description
200 OK
400 Level does not exist
401 Access denied - Access token is invalid

Publish a message on a topic

Publishes a message on a specific topic. This message is subsequently broadcasted to all subscribers of the topic.

POST /rest/messaging/topics/alerts/publish HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "accesstoken": "1359434d0856c9d0007785975097a5db0ac875a9",
  "message": {
    "type": "alert",
    "priority": "10",
    "severity": "High",
    "description": "Fire alarm in building XYZ"
  }
}
HTTP/1.1 200 OK

Request

This REST operation is used to publish a message on a certain topic.

Request URL: POST /rest/messaging/topics/<topicName>/publish

Transfer Parameters

Name Required Parameter Type Object Type Description
topicName Yes Resource string The name of the topic
accesstoken Yes Body string The access token required for publishing messages on the specified topic
message Yes Body object The message to be delivered

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Access denied - Access token is invalid

Update a topic's access tokens

The T5.2 Secure Authentication/Authorisation component can update the access tokens (publish/subscribe) stored for the individual topics.

POST /rest/messaging/topics/devices/AE35FB/accesstokens HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "pubAccesstoken": "a8e31e2fa6a00eac726f7047690c0d42e3cf55f5",
  "subAccesstoken": "dfd717e0c7d8de51e133dbc7c6e6aba49f79c6d5",
}
HTTP/1.1 200 OK 

Request

This REST operation is used to update the access tokens stored for an individual topic.

Request URL: POST /rest/messaging/topics/<topicName>/accesstokens

Transfer Parameters

Name Required Parameter Type Object Type Description
topicName Yes Resource string The name of the topic whose access tokens are to be updated
pubAccesstoken Yes Body string The access token required for publishing messages on the specified topic
subAccesstoken Yes Body string The access token required for subcribing to the specified topic

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
400 Malformed request
401 Access denied
404 Specified topic not found

Revoke topic's access tokens

The T5.2 Secure Authentication/Authorisation component can revoke the access tokens (publish/subscribe) stored for the individual topics.

PUT /rest/messaging/topics/devices/AE35FB/accesstokens HTTP/1.1
HTTP/1.1 200 OK

Request

This REST operation is used to revoke the access tokens stored for an individual topic.

Request URL: PUT /rest/messaging/topics/<topicName>/accesstokens

Transfer Parameters

Name Required Parameter Type Object Type Description
topicName Yes Resource string The name of the topic whose access tokens are to be revoked

Response

The response does not contain any content in the success case.

Common Return Codes

Code Description
200 OK
401 Access denied
404 Specified apiID not found

Prediction and Optimisation Runtime

The ZDMP Prediction and Optimisation component Run-time, based on the specialization of the component, provides a prediction and or optimisation engine.

Request Prediction

With this call, the user requests prediction for the given input.

GET /v1/requestprediction HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  prediction: 3.5
}
HTTP/1.1 400 Bad request
{
  message: The number of inputs to the prediction model doesn't match with n_parameters
}

Request

The request contains two required fields.

Request URL: GET /v1/requestoptimisation?n_parameters&model_input

Transfer Parameters

Name Required Parameter Type Object Type Description
n_parameters Yes QUERY Integer Indicates the number of parameters to the prediction model
model_input Yes QUERY Array List of floating point numbers input to the prediction model

Response

If the operation is successful, the response contains the predicted value. The API answers with a HTTP status code of 200 OK. If the input is badly structured, the response contains the error message. The API answers with the HTTP status code of 400 Bad request

Common Return Codes

Code Description
200 ok
400 Bad request

Request Prediction given data source

With this call, the user requests prediction by providing the address of the input data to the prediction model model.

GET /v1/requestprediction/{sourceID}/{inputID}/{channelIDs}/ HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  prediction: 3.5
}
HTTP/1.1 400 Bad request
{
  message: the input to the model is not available
}

Request

The request contains three required fields.

Request URL: GET /v1/requestprediction/{sourceID}/{inputID}/{channelIDs}/

Transfer Parameters

Name Required Parameter Type Object Type Description
sourceID Yes PATH Integer Indicates index of source (storage or stream)
sourceID Yes PATH String Defines the Subscription channel (stream) or Database (storage)
channelIDs Yes PATH Array The name of the input channels (e.g. sensors) to feed to the model

Response

If the operation is successful, the response contains the predicted value. The API answers with a HTTP status code of 200 OK. If the parameters do not point to a valid data, the response contains the error message. The API answers with the HTTP status code of 400 Bad request

Common Return Codes

Code Description
200 ok
400 Bad request

Request Optimisation

With this call, the user requests optimisation for the given input.

GET /v1/requestoptimisation HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  optimum_parameters: 3.5
}
HTTP/1.1 400 Bad request
{
  message: The number of inputs to the optimisation model doesn't match with n_parameters
}

Request

The request contains two required fields.

Request URL: GET /v1/requestoptimisation?n_parameters&model_input

Transfer Parameters

Name Required Parameter Type Object Type Description
n_parameters Yes QUERY Integer Indicates the number of parameters to the optimisation model
model_input Yes QUERY Array List of floating point numbers input to the optimisation model

Response

If the operation is successful, the response contains the optimised parameters. The API answers with a HTTP status code of 200 OK. If the input is badly structured, the response contains the error message. The API answers with the HTTP status code of 400 Bad request

Common Return Codes

Code Description
200 ok
400 Bad request

Process Assurance Runtime

The Process Assurance Runtime is an analytics component that deploys and executes Quality Prediction, Quality Analysis, and Process Self-Adaptation

Quality Prediction

Using this module an instance of a proper "Prediction and Optimisation run-time module" is sent and a prediction request is obtained from with necessary input parameters

POST /qualityprediction/deploy HTTP/1.1
HTTP/1.1 201 Deployed
Location: /qualityprediction/1/

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /createQualityModel

Transfer Parameters

Name Required Parameter Type Object Type Description
modelname Yes Body string Description of the model purpouse
datatopic Yes Body string URI/Topic of the data source with manufacturing data
objectiveVariables Yes Body string Array of objective/target variables 'var1;var2;var3'
processVariables No Body string Array of process variables 'var1;var2;var3'
batch Yes Body int items required for creating a training batch
authToken Yes Body string authorization token to get access to the data

Response

The API answers with a HTTP status code of 201 Deployed. Additionally the Location-header contains a relative URI to the model-object.

Quality Analysis

The component the quality of the products by means of analyzing process data.

POST /qualityanalysis/deploy HTTP/1.1
HTTP/1.1 201 Deployed
Location: /qualityanalysis/1/
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  performance: 3.5
  velocity: 5.2
}
HTTP/1.1 400 Bad request
{
  message: It is not possible the evaluate the current process parameter(s)
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /qualityanalysis/<id>

Transfer Parameters

Name Required Parameter Type Object Type Description
id Yes Resource int Identification of the quality analysis
goal Yes Body string Possible values: maximize, minimize
objectiveVariable Yes Body string Id of the objective/target variable to analyse
processVariables Yes Body string Array of process variables to consider
proccesVariables_range No Body string Range of values for each process variable{"min":value, "max:" value}

Response

The response contains list of the process variables and values of the performed analysis/model. If not, an error is returned, the response contains the error message. The API answers with the HTTP status code of 400 Bad request

Process Self-Adaptation

This module enables self-adaptation by learning from events and occurrence of defects and the decisions made by human users to suggest actions learned from similar conditions.

POST /qualityadaptation/deploy HTTP/1.1
HTTP/1.1 201 Deployed
Location: /qualityadaptation/1/
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  speedreference=1.2
  torquereferece=5.1
  currentreference=2.1
}
HTTP/1.1 400 Bad request
{
  message: It is not possible the adapt the current process to aceptable parameter(s)
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /qualityadaptation/<id>

Transfer Parameters

Name Required Parameter Type Object Type Description
id Yes Resource int Identification of the quality analysis
goal Yes Body string Possible values: maximize, minimize
objectiveVariable Yes Body string Id of the objective/target variable to analyse
processVariables Yes Body string Array of process variables to consider

Response

The response contains list of the process variables and values of the performed analysis/model needed to adapt the process to aceptable criteria If the process cannot meet current aceptable criteria an error is returned, the response contains the error message. The API answers with the HTTP status code of 400 Bad request

Product Assurance Runtime

The Product Assurance Runtime is an analytics component that creates, deploys and executes a Product Quality model to predict the expected quality (in the Preproduction phase) and detect anomalies (at the Supervision phase) of the outcome quality. To build such models this component process data coming from the manufacturing process and continuosly trains a model using such data. This data comes from a broker topic or an external endpoint

Create Quality Model

Using this service a new quality model is trained and deployed

POST /qualitymodels/create HTTP/1.1
HTTP/1.1 201 Created
Location: /qualitymodels/1/

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /createQualityModel

Transfer Parameters

Name Required Parameter Type Object Type Description
modelname Yes Body string Description of the model purpouse
training No Body string An array of {parameter: value} training parameters
datatopic Yes Body string URI/Topic of the data source with manufacturing data
objectiveVariables Yes Body string Array of objective/target variables 'var1;var2;var3'
processVariables No Body string Array of process variables 'var1;var2;var3'
batch Yes Body int items required for creating a training batch
authToken Yes Body string authorization token to get access to the data

Response

The API answers with a HTTP status code of 201 Created. Additionally the Location-header contains a relative URI to the model-object.

Optimize Quality Model

This model uses an already trained quality model to obtain the best configuration of variables to maximize/minimize a given objetiv

POST /qualitymodels/1/optimize HTTP/1.1
HTTP/1.1 201 Found
Content-Type: application/json; charset=utf-8
{
    "solution": true,
    "optimizedVariables":[
        "temp1": 26, "speed": 2, "control": "FUD"
    ]
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /qualitymodels/<id>/optimize

Transfer Parameters

Name Required Parameter Type Object Type Description
id Yes Resource int Identification of the model to optimize
goal Yes Body string Possible values: maximize, minimize
objectiveVariable Yes Body string Id of the objective/target variable to optimize
processVariables Yes Body string Array of process variables to consider
proccesVariables_range No Body string Range of values for each process variable{"min":value, "max:" value}

Response

The response contains list of the process variables and the optimization values if a solution is found by the model. If not an error is returned

Create Anomaly Detector

Using this service a new model for performing the detection of anomalies is trained and deployed

POST /anomalydetector/create HTTP/1.1
HTTP/1.1 201 Created
Location: /anomalydetector/1/

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /models/createAnomalyDetector

Transfer Parameters

Name Required Parameter Type Object Type Description
modelname Yes Body string Description of the model purpouse
training No Body string An array of {parameter: value} training parameters
datatopic Yes Body string URI/Topic with data source with manufacturing data
variables Yes Body string Array of model variables 'var1;var2;var3'
batch Yes Body int items required for start a training
authToken Yes Body string authorization token to get access to the data

Response

The API answers with a HTTP status code of 201 Created. Additionally the Location-header contains a relative URI to the detector-object.

Common Return Codes

Code Description
201 Notification accepted
400 Malformed request
403 Forbidden
500 Server error

Create processing rules

This method creates the data processing rules for each of the variables used by the quality processor or the anomaly detector

POST /qualitymodels/<id>/rules HTTP/1.1
POST /anomalydetector/<id>/rules HTTP/1.1
HTTP/1.1 201 Created

Request

The request contains multiple fields – required and non-required ones. A single request could include the creation of several processing rules

Request URL: POST /qualitymodels/<id>/rules POST /anomalydetecgtor/<id>/rules

Transfer Parameters

Name Required Parameter Type Object Type Description
id Yes Resource string Product Quality or Anomaly detector model ID
rule_n_var_id Yes Body string Rule to apply to var_id from the model
rule_n_expression Yes Body string Rule expression to transform var_id value

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Description
201 Created
400 Malformed request
404 User not found
500 Server error

Quality Model predictions subscription

Via this route a client could receive periodically the most recent predictions of a quality model

GET /qualitymodels/1/subscription HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
 "from": "2019-01-01T14:00:00",
 "to": "2019-01-05T23:00:00",
 "predictions":[ 
 ]
}

Request

Request URL: `GET GET /qualitymodel//subscription

Transfer Parameters

Name Required Parameter Type Object Type Description
id Yes Query int Model id to subscribe to

Response

The response contains an array of predictions-objects for each of the objective variables defined by the quality model. The range of the predictions starts from the current date up to the range defined by the model (the next day, month, etc.)

Common Return Codes

Code Description
200 OK
500 Server error

Historic predictions

Via this route the historical predictions generated by a Quality Model for a specific time period are retrieved

GET /qualitymodels/<id>?start_date=2019-01-01T14:00:00&end_date=2019-01-05T23:00:00 HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
 "from": "2019-01-01T14:00:00",
 "to": "2019-01-05T23:00:00",
 "predictions":[ 
 ]
}

Request

Request URL: GET /qualitymodels/<id>?start_date=<per_page>&page=<page>

Transfer Parameters

Name Required Parameter Type Object Type Description
start_date Yes Query string date using ISO 8601 format
end_date Yes Query string date using ISO 8601 format

Response

The response contains an array of predictions-objects in the [start_date, end_date] period

Common Return Codes

Code Description
200 OK
500 Server error

Anomaly detector alerts subscription

Via this route a client receives a url to receive information periodically about the last anomalies detected

GET /anomalydetector/<id>/subscription HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "anomalies":[
    {
      "date": "2019-01-01T14:00:00",
      "error": 0.98,
      "variables": ["temp1", "speed"]
    }
  ]
}

Request

Request URL: `GET GET /anomalydtetor//subscription

Transfer Parameters

Name Required Parameter Type Object Type Description
id Yes Query int Anomaly detector id to subscribe to

Response

The response contains an array of anomalies notification-objects: timestamp and variables contributing to the anomaly

Common Return Codes

Code Description
200 OK
500 Server error

Quality Model subscription

Via this route a client could receive periodically the most recent predictions

GET /qualitymodel/<id>/subscription HTTP/1.1
HTTP/1.1 200 OK

Request

Request URL: `GET GET /qualitymodel//subscription

Transfer Parameters

Name Required Parameter Type Object Type Description
id Yes Query int Model id to subscribe to

Response

The response contains an array of predictions-objects for each of the objective variables defined by the quality model

Common Return Codes

Code Description
200 OK
500 Server error

Request information about deployed models

Via this route information about the current deployed models

GET /component/models  HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "qualityModels":[
        {
            "modelName" : "Temp predictor",
            "id": 1,
            "running": true,
            "started": "2019-01-01T14:00:00",
            "modelurl": "http://zdmp.org/qualitymodels/1/download",
            "containerurl" : "http://zdmp.org/containers/qualitymodels/1/download"
        }
    ],
    "anomalyDetectors":[
          {
            "modelName" : "Engine production anomaly predictor",
            "id": 1,
            "running": false,
            "started": "2019-02-01T15:00:00",
            "modelurl": "http://zdmp.org/anomalydetectors/1/download",
            "containerurl" : "http://zdmp.org/containers/anomalydetectors/1/download"
        }
    ]
}

Request

Request URL: GET /component/models

Response

The response contains set of the current models deployed by the Product Assurance runtime and its status

Common Return Codes

Code Description
200 OK
500 Server error

Edge Tier

Data Acquisition

The Data Acquisition component implements a framework for the handling of data from IoT sensors and other sources. It allows the connection to different kinds of data sources: IIoT physical devices such as industrial automation devices (PLCs, smart sensors, RFID readers, etc), ERP systems, SCADA/MES systems/data, and existing databases. It provides a collection of functionalities among which functionalities to collect data from and to send commands to such systems. Data Acquisition component provides a REST interface for registering, querying and accessing data sources' functionalities. It is developed in the scope of the work package 5 (WP5), under task T5.1.

Register Data Source

Create a new data source configuration to connect to a physical device. The request must contain the connection parameters in json format.

POST /DataAcquisition/v1/DataSources/ HTTP/1.1
Content-Type: application/json; charset=utf-8

{
  "proprietaryParameters":[
    {
      "name":"endpoint",
      "value":"http://shopfloor:8080/sensor1"
    },
    {
      "name":"pinmode",
      "value":2
    }
  ],
  "_did":"17c8uT"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "_id":"67c8uTrE"
}

Request

Request URL: POST /DataAcquisition/v1/DataSources/

Transfer Parameters

Name Required Parameter Type Object Type Description
proprietaryParameters No Body object a list of proprietary parameters configuration
name No Body string name of parameter
value No Body string value of parameter
_did Yes Body string uid of the data source

Response

Returns the 200 response with the id of the newly registered data source. If any error, returns 400 error with the error message.

Edit Data Source configuration

Changes the configuration of an existing data source configuration. The request must contain the connection parameters to be updated in json format.

PUT /DataAcquisition/v1/DataSources/67c8uTrE HTTP/1.1
Content-Type: application/json; charset=utf-8

{
  "proprietaryParameters":[
    {
      "name":"endpoint",
      "value":"http://shopfloor:8080/sensor1"
    },
    {
      "name":"pinmode",
      "value":2
    }
  ],
  "_did":"17c8uT"
}
HTTP/1.1 200 OK

Request

Request URL: PUT /DataAcquisition/v1/DataSources/<dataSourceId>/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string Id of data source
proprietaryParameters No Body object a list of proprietary parameters configuration
name No Body string name of parameter
value No Body string value of parameter
_did Yes Body string uid of driver

Response

Returns default HTTP Status Codes for Acknowledgement (200, 400 codes)

Unregister Data Source

Endpoint to delete an existing data source configuration. Once that the data source configuration is deleted, the data source is no longer registered and components can no longer interact with it.

DELETE /DataAcquisition/v1/DataSources/67c8uTrE HTTP/1.1
HTTP/1.1 200 OK

Request

Request URL: DELETE /DataAcquisition/v1/DataSources/<dataSourceId>/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string data source id to be unregistered

Response

Returns default HTTP Status Codes for Acknowledgement (200, 400 codes)

Register Sensor

Create a new sensor configuration in an existing data source to collect data from or send commands to a specific sensor connected to the data source. The request must contain the configuration parameters to connect to the sensor in json format.

POST /DataAcquisition/v1/DataSources/67c8uTrE/Sensors/ HTTP/1.1
Content-Type: application/json; charset=utf-8

{
  "name":"temperature",
  "property":{
    "name":"temperature",
    "type":"real",
    "unit":"degrees"
  },
  "events":[
    {
      "type":"sampling",
      "intervalTime":100
    }
  ],
  "actuator":"false"
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "_id":"00c8a4Yw"
}

Request

Request URL: POST /DataAcquisition/v1/DataSources/<dataSourceId>/Sensors/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string Id of data source
sensorName Yes Body string name of the sensor
property Yes Body object physical property measured by the sensor
name Yes Body string name of the entity the sensors is measuring e.g. temperature, humidity, etc
type Yes Body string type of value captured by the sensor
uint Yes Body string unit of the measure captured by the sensor
events Yes Body Array Object array of events for a suscription
eType Yes Body string type of event (value or sampling)
samplingInterval Yes Body string sampling interval for events of type sampling
actuator Yes Body string this sensor can receive commands
proprietaryParameters No Body object proprietary parameters of a sensor conguration
name No Body string name of parameter
value No Body string value of parameter

Response

Returns the ID of the newly registered sensor

Edit Sensor Configuration

Changes the configuration of existing sensor configuration of a data source. The request must contain the parameters to be updated in json format.

PUT /DataAcquisition/v1/DataSources/67c8uTrE/Sensors/00c8a4Yw/ HTTP/1.1
Content-Type: application/json; charset=utf-8

{
  "name":"sensor1 packaging machine",
  "property":{
    "name":"temperature",
    "type":"real",
    "unit":"degrees"
  },
  "events":[
    {
      "type":"sampling",
      "intervalTime":100
    }
  ],
  "actuator":"false"
}
HTTP/1.1 200 OK

Request

Request URL: PUT /DataAcquisition/v1/DataSources/<dataSourceId>/Sensors/<sensorId>

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string Id of data source
sensorId Yes Resource string Id of the sensor
sensorName Yes Body string name of the sensor
property Yes Body object physical property measured by the sensor
name Yes Body string name of the entity the sensors is measuring e.g. temperature, humidity, etc
type Yes Body string type of value captured by the sensor
uint Yes Body string unit of the measure captured by the sensor
events Yes Body Array Object array of events for a suscription
eType Yes Body string type of event (value or sampling)
samplingInterval Yes Body string sampling interval for events of type sampling
actuator Yes Body string this sensor can receive commands
proprietaryParameters No Body object proprietary parameters of a sensor conguration
name No Body string name of parameter
value No Body string value of parameter

Response

Returns default HTTP Status Codes for Acknowledgement (200, 400 codes)

Delete Sensor Configuration

Endpoint to delete an existing sensor configuration of a data source. Once the sensor configuration is deleted, it is no longer possible to collect data from or send commands to the sensor.

DELETE /DataAcquisition/v1/DataSources/67c8uTrE/Sensors/00c8a4Yw/ HTTP/1.1
HTTP/1.1 200 OK

Request

Request URL: DELETE /DataAcquisition/v1/DataSources/<dataSourceId>/Sensors/<sensorId>/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string data source id
sensorId Yes Resource string sensor id to be unregistered

Response

Returns default HTTP Status Codes for Acknowledgement (200, 400 codes)

Get Data Source Configuration

Retrieve the configuration of a data source that has previously been created. The id of the data source is provided in the request URL and the response returns all the data source configuration parameters.

GET /DataAcquisition/v1/DataSources/17c8uT HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "name":"Data source X",
  "proprietaryParameters":[
    {
      "name":"endpoint",
      "value":"http://shopfloor:8080/sensor1"
    },
    {
      "name":"pinmode",
      "value":2
    }
  ]
}

Request

Request URL: GET /DataAcquisition/v1/DataSources/<dataSourceId>/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string id of the data source for the requested configuration

Response

Returns: info about the data source

Name Object Type Description
_did string id of the data source
name string name of data source
proprietaryParameters Array of objects a list of proprietary parameters of the data source

List existing Data Sources

Returns a list of all previously configured data sources. The request does not take any arguments and it is not possible to apply filters to the request.

GET /DataAcquisition/v1/DataSources/ HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
  {
    "_id":"6G439Kl",
    "name":"data source 1",
    "numSensors":3,
    "date":"2019-05-21",
    "adapter":"adapter 1"
  },
  {
    "_id":"f432lfl",
    "name":"data source 2 cutting machine",
    "numSensors":1,
    "date":"2019-05-11",
    "adapter":"adapter 2"
  }
]

Request

Request URL: GET /DataAcquisition/v1/DataSources/

Response

Returns: returns collection of registered data sources

Name Object Type Description
_did string id of the data source
name string name of data source
proprietaryParameters Array of objects a list of proprietary parameters of the data source

List sensors by Data Sources

Returns a list of all previously configured sensors in a data source. The ID of the data source is provided in the request URL and the request does not any other arguments.

GET /DataAcquisition/v1/DataSources/6G439Kl/Sensors/ HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
  {
    "_id":"s5G439Kl",
    "name":"sensor 1",
    "events":[
    {
      "type":"sampling",
      "intervalTime":100
    }
  ],
    "actuator":"false",
    "status":"ok"
  },
  {
    "_id":"s732lfl",
    "name":"sensor 2",
    "events":[
    {
      "type":"sampling",
      "intervalTime":100
    }
  ],
    "actuator":"false",
    "status":"fail"
  }
]

Request

Request URL: GET /DataAcquisition/v1/DataSources/<dataSourceId>/Sensors/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string data source id

Response

Returns: returns collection of sensors of given data sources

Name Object Type Description
dataSourceId string Id of data source
sensorId string Id of the sensor
sensorName string name of the sensor
property object physical property measured by the sensor
name string name of the entity the sensors is measuring e.g. temperature, humidity, etc
type string type of value captured by the sensor
uint string unit of the measure captured by the sensor
events Array Object array of events for a suscription
eType string type of event (value or sampling)
samplingInterval string sampling interval for events of type sampling
actuator string this sensor can receive commands
proprietaryParameters object proprietary parameters of a sensor conguration
name string name of parameter
value string value of parameter

Check Data Sources status

Endpoint to verify that the connection of a previously configured data source is correct and that there are no errors in the connection to the physical data source

GET /DataAcquisition/v1/DataSources/6G439Kl/Status/ HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "name":"data source 1",
  "status":"fail"
}

Request

Request URL: GET /DataAcquisition/v1/DataSources/<dataSourceId>/Status/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string data source id

Response

Returns: returns an object such as:

Name Object Type Description
_did string id of the data source
status string ok/failure

Get data from sensor

Endpoint to read data from a sensor of a given data source. The ID of the data source and the ID of the sensor are provided in the request. The response returns a json object with the last data read from the sensor. This endpoint allows ZDMP components to pull data from a data source.

GET /DataAcquisition/v1/DataSources/6G439Kl/Sensors/s5G439Kl/Data/ HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "data": 45.32,
  "unit": "degrees",
  "timestamp": "2019-06-07"
}

Request

Request URL: GET /DataAcquisition/v1/DataSources/<dataSourceId>/Sensors/<sensorId>/Data/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string data source id
sensorId Yes Resource string sensor id

Response

Returns: returns json with a data measure.

Name Object Type Description
_did string id of the data source
_sid string id of the sensor
data string return the real data that can be of type Boolean, integer, string or double. The casting is done using the sensorConfiguration by the adapter automatically.
timestamp date date when the dataMeasure was taken by the sensor
status string ok/failure

Send Command to Data Source / Sensor

Endpoint to send a command to a sensor of a data source. The ID of the data source and the ID of the sensor are provided in the request URL.

POST /DataAcquisition/v1/DataSources/6G439Kl/Sensors/s5G439Kl/Command/ HTTP/1.1
Content-Type: application/json; charset=utf-8

{
  "command":"command X"
}
HTTP/1.1 200 OK

Request

Request URL: POST /DataAcquisition/v1/DataSources/<dataSourceId>/Sensors/<sensorId>/Command/

Transfer Parameters

Name Required Parameter Type Object Type Description
dataSourceId Yes Resource string data source id
sensorId Yes Resource string sensor id
command Yes Body string command to be executed by the sensor

Response

Returns 200 status code if the command was executed successfully. 400 code in case the command failed along with an error message

Distributed Computing

The ZDMP Distributed Computing component offers fundamental services for the execution of computing tasks and distribution of intensive computing tasks, as well as defining the physical location of computational resources.

Compute Task

Via this route a user can assign one or more tasks to be computed.

POST /v1/computetask HTTP/1.1
HTTP/1.1 202 Accepted
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "taskId": "CT-2019-01-01-22-23-a1b2c3"
  }
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /v1/computetask

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
description No Body string Task description
locationConstraint_SiteId No Body string ID of the site or plant where the taks my be computed, must be informed if the taks can be computed only locally (Fog level)
locationConstraint_LocationId No Body string ID of the area, building or room where the taks my be computed, must be informed if the taks can be computed only in a certain area (Edge level)
locationConstraint_machineId No Body string ID of the machine (resource) where the taks my be computed, must be informed if the taks can be computed only in a single specified machine (Mist level)
taskQuery_n Yes Body string Query containing the task of item N computing specifications.

Response

The response, when a success case, contains a object with the Task Id. The API answers with a HTTP status code of 202 Accepted.

Common Return Codes

Code Description
202 Accepted
400 Malformed request
403 Forbidden
500 Server error

Get Task Status

Via this route its possible to obain the status of a Task previously sent to be computed.

GET /v1/taskstatus HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "task": {
      "id": "CT-2019-01-01-22-23-a1b2c3",
      "status": "completed"
    }
  }
}

Request

The request contains three required fields.

Request URL: GET /v1/taskstatus

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
taskId Yes Body string Task ID

Response

The response, when a success case, contains a object including the Task ID and the status of its execution. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Stop Task Computation

Via this route its possible to stop the execution of a task previously started.

POST /v1/stoptaskcomputation HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains three required fields.

Request URL: POST /v1/stoptaskcomputation

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
taskId Yes Body string Task ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Pause Task Computation

Via this route its possible to pause the execution of a task previously started.

POST /v1/pausetaskcomputation HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains three required fields.

Request URL: POST /v1/pausetaskcomputation

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
taskId Yes Body string Task ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Resume Task Computation

Via this route its possible to resume the execution of a task previously paused.

POST /v1/resumetaskcomputation HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains three required fields.

Request URL: POST /v1/resumetaskcomputation

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
taskId Yes Body string Task ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Create Resources Location

Via this route its possible to define the location of a computational resource.

POST /v1/resourcelocation HTTP/1.1
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "resourceLocation": {
      "id": "RL-2019-01-01-22-23-a1b2c3",
      "machineId": "M-2019-01-01-20-23-a1b2c3",
      "locationID": "PL-2019-01-01-22-23-a1b2c3",
      "siteID": "SL-2019-02-01-22-23-a1b2c3"
    }
  }
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /v1/resourcelocation

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
machineId Yes Body string Resource ID
locationId Yes Body string ID of the area, building or room where the resource is physically located
siteId Yes Body string ID of the site or plant where the resource is physically located

Response

The response, when a success case, contains the Resource Location object and its properties. The API answers with a HTTP status code of 201 Created.

Common Return Codes

Code Description
201 Created
400 Malformed request
403 Forbidden
409 Conflict
500 Server error

Read Resources Location

Via this route its possible to obatin a Resource Location previously defined.

GET /v1/resourcelocation HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "resourceLocation": {
      "id": "RL-2019-01-01-22-23-a1b2c3",
      "machineId": "M-2019-01-01-20-23-a1b2c3",
      "locationID": "PL-2019-01-01-22-23-a1b2c3",
      "siteID": "SL-2019-02-01-22-23-a1b2c3"
    }
  }
}

Request

The request contains three required fields.

Request URL: GET /v1/resourcelocation

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
resourceLocationID Yes Body string Resource Location ID

Response

The response, when a success case, contains the Resource Location object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Update Resources Location

Via this route its possible to update a Resource Location previously defined.

PUT /v1/resourcelocation HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "resourceLocation": {
      "id": "RL-2019-01-01-22-23-a1b2c3",
      "machineId": "M-2019-01-01-20-23-d4e5f6",
      "locationID": "PL-2019-01-01-22-23-d4e5f6",
      "siteID": "SL-2019-02-01-22-23-d4e5f6"
    }
  }
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: PUT /v1/resourcelocation

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
resourceLocationID Yes Body string Resource Location ID
machineID Yes Body string Resource ID
locationId Yes Body string ID of the area, building or room where the resource is physically located
siteId Yes Body string ID of the site or plant where the resource is physically located

Response

The response, when a success case, contains the updated Resource Location object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
204 No Content
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Delete Resources Location

Via this route its possible to delete a Resource Location previously defined.

DELETE /v1/resourcelocation HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains three required fields.

Request URL: DELETE /v1/resourcelocation

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
resourcelocationID Yes Body string Resource Location ID

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Get Map of Resources Location

Via this route its possible to obatin a list of resources in a determined location.

GET /v1/resourcelocationsmap HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "resourceLocations": [
      {
        "resourceLocation": {
          "id": "RL-2019-01-01-22-23-a1b2c3",
          "machineId": "M-2019-01-01-20-23-a1b2c3",
          "locationID": "PL-2019-01-01-22-23-a1b2c3",
          "siteID": "SL-2019-02-01-22-23-a1b2c3"
        }
      },
      {
        "resourceLocation": {
          "id": "RL-2019-01-01-22-23-d4e5f6",
          "machineId": "M-2019-08-02-20-23-d4e5f6",
          "locationID": "PL-2019-01-01-22-23-a1b2c3",
          "siteID": "SL-2019-02-01-22-23-a1b2c3"
        }
      },
      {
        "resourceLocation": {
          "id": "RL-2019-01-01-20-23-g7h8i9",
          "machineId": "M-2019-08-02-20-23-g7h8i9",
          "locationID": "PL-2019-01-01-22-23-a1b2c3",
          "siteID": "SL-2019-02-01-22-23-a1b2c3"
        }
      }
    ]
  }
}

Request

The request contains three required fields.

Request URL: GET /v1/resourcelocationsmap

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
locationId No Body string ID of the area, building or room where the resource is physically located
siteId No Body string ID of the site or plant where the resource is physically located

Response

The response, when a success case, contains a list of Resource Location objects and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Get Location of Resource

Via this route its possible to obatin the Location information of a resource.

GET /v1/resourcelocationbymachine HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "meta": {
    "status": "true"
  },
  "data": {
    "resourceLocation": {
      "id": "RL-2019-01-01-22-23-a1b2c3",
      "machineId": "M-2019-01-01-20-23-a1b2c3",
      "locationID": "PL-2019-01-01-22-23-a1b2c3",
      "siteID": "SL-2019-02-01-22-23-a1b2c3"
    }
  }
}

Request

The request contains three required fields.

Request URL: GET /v1/resourcelocationbymachine

Transfer Parameters

Name Required Parameter Type Object Type Description
accessId Yes Body string Access ID
userId Yes Body string User ID
machineId Yes Body string Resource ID

Response

The response, when a success case, contains the machine's Resource Location object and its properties. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 OK
400 Malformed request
403 Forbidden
404 Not Found
500 Server error

Digital Twin

The Digital Twin services allows to model a virtual replica of an asset or process.

Import Asset Database

Via this route users can load a XML containing the definition of the asset model into a Database.

POST /v1/assetdatabases/{databaseId}/import HTTP/1.1
Content-Type: application/xml; charset=utf-8
<?xml version="1.0" encoding="utf-8"?>
<AM>
  <Name>Test Plant</Name>
  <AMElement>
    <Name>Production line 1</Name>
    <AMAttribute>
      <Name>Temperature</Name>
      <Value>30</Value>
    </AMAttribute>
    <AMAttribute>
      <Name>OEE</Name>
      <Value>75</Value>
    </AMAttribute>
  </AMElement>
  <AMElement>
    <Name>Production line 2</Name>
  </AMElement>
</AM>
HTTP/1.1 200 Database imported.

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /v1/assetdatabases/{databaseId}/import

Transfer Parameters

Name Required Parameter Type Object Type Description
databaseId Yes Resource string Database ID
xml Yes Body string XML containing the asset model

Response

The response does not contain any content in the success case. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 Database imported
400 Malformed request
403 Forbidden
500 Server error

Export Asset Database

Via this route users can export an asset model to a XML file.

GET /v1/assetdatabases/{databaseId}/export HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/xml; charset=utf-8
<?xml version="1.0" encoding="utf-8"?>
<AM>
  <Id>00001</Id>
  <Name>Test Plant</Name>
  <AMElement>
    <Id>00002</Id>
    <Name>Production line 1</Name>
    <AMAttribute>
      <Id>00003</Id>
      <Name>Temperature</Name>
      <Value>30</Value>
    </AMAttribute>
    <AMAttribute>
      <Id>00004</Id>
      <Name>OEE</Name>
      <Value>75</Value>
    </AMAttribute>
  </AMElement>
  <AMElement>
    <Id>00005</Id>
    <Name>Production line 2</Name>
  </AMElement>
</AM>

Request

The request contains multiple fields – required and non-required ones.

Request URL: GET /v1/assetdatabases/{databaseId}/import

Transfer Parameters

Name Required Parameter Type Object Type Description
databaseId Yes Resource string Database ID

Response

OK Database exported. The response body contains the serialized database.

Common Return Codes

Code Description
200 Database exported
400 Malformed request
403 Forbidden
500 Server error

Create a new analysis on a node

Via this route users can create new analysis on a node.

POST /v1/nodes/{nodeId}/analyses HTTP/1.1
HTTP/1.1 201 The Analysis was created.
Location:  /v1/nodes/1003/analyses/435
Content-Type: application/json; charset=utf-8
{
    "id": "435",
    "name": "Tank Level Target",
    "description": "Description of the analysis",
    "enabled": true,
    "configString": "def find_max (L): if len(L) == 1: return L[0] v1 = L[0] v2 = find_max(L[1:]) if v1 > v2: return v1 else: return v2",
    "variableMapping": "L:=|Level; Output=|Level Forecast",
    "frequency": 960,
    "needTraining": false,
    "retrainingFrequency": 0
}

Request

The request contains multiple fields – required and non-required ones.

Request URL: POST /v1/nodes/{nodeId}/analyses

Transfer Parameters

Name Required Parameter Type Object Type Description
nodeId Yes Resource string Node ID
name Yes Body string Name of the analysis
description No Body string Description of the analysis
enabled No Body boolean Enabled or disabled
config_string No Body string Implementation in python of the algorithm to calculate the analysis
variable_mapping No Body string Configures the mapping of the variables defined in the config_string. i.e: "b||Attribute1;c||Attribute2"
frequency Yes Body int Calculation frequency, in seconds, of the mathematical model script
need_retraining No Body boolean true or false
retraining_freq No Body int Retraining frecuency

Response

The response contains the order-object in a success case. The API answers with a HTTP status code of 201 Created. Additionally the Location-header contains a relative URI to the order-object.

Common Return Codes

Code Description
201 Analysis created
400 Malformed request
403 Forbidden
500 Server error

Non-Destructive Inspection

Based on the specialization that this component has been implemented for, it will provide the end user/zApp using it with product quality related information (defects, quality rate, …) or with any other intermediate output which can be useful to assess product quality KPIs. Run-time relevant parameters of the components are configurable as well the source of the input to inspection algorithm should be determined by the user of the component.

Request Analysis Types

This functionctionality is used to retrieve the list of the available processing algorithms to be used to process data for product quality inspection

GET /qualityInspectionAlgorithms/ HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
[
  {
    "Id":"SilExtr",
    "Name":"Silhouette Extractor",
    "Version":"1.23",
    "Type":"classic"
  },
  {
    "Id":"SilCmp",
    "Name":"Silhouette Comparator",
    "Version":"1.11",
    "Type":"classic"
  },
  {
    "Id":"ObjExtr",
    "Name":"Object Definition",
    "Version":"0.13",
    "Type":"classic"
  },
  {
    "Id":"FeatExtr",
    "Name":"Features Extraction",
    "Version":"0.13",
    "Type":"classic"
  },
  {
    "Id":"GeomExtr",
    "Name":"Geometrical Features Analyser",
    "Version":"0.13",
    "Type":"classic"
  },
  {
    "Id":"CollDet",
    "Name":"Collision Detector",
    "Version":"0.13",
    "Type":"classic"
  },
  {
    "Id":"ImgClss",
    "Name":"AI Image Classifier",
    "Version":"0.13",
    "Type":"AI"
  },
  {
    "Id":"ImgLbll",
    "Name":"AI Image Labeller",
    "Version":"0.13",
    "Type":"AI"
  }
]

Request

There is no additional field for request.

Request URL: GET /qualityInspectionAlgorithms/

Response

If the operation is successful, the response contains the available analytic algorithms. The API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 ok
400 Bad request
500 Server error

Select Analysis Type

This functionctionality is used to select the processing algorithm to be used to process data for product quality inspection

POST /qualityInspectionAlgorithms/SilExtr/select HTTP/1.1
HTTP/1.1 200 OK
Location: /qualityInspectionAlgorithms/101/
Content-Type: application/xml; charset=utf-8
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfParameters xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Parameters>
    <abName>AreaTolerancePercentage</abName>
    <dMaximum>0</dMaximum>
    <dMinimum>0</dMinimum>
    <dValue>80</dValue>
    <sType>default</sType>
  </Parameters>
  <Parameters>
    <abName>debug_Seg</abName>
    <abValue />
    <dMaximum>1</dMaximum>
    <dMinimum>0.1</dMinimum>
    <dValue>1</dValue>
    <sType>default</sType>
  </Parameters>
</ArrayOfParametersAndResults>  

Request

The request contains one required field for request.

Request URL: POST /qualityInspectionAlgorithms/<algoID>/select

Transfer Parameters

Name Required Parameter Type Object Type Description
algoID Yes Resource string Identification of the analysis algorithm

Response

If the operation is successful, the API answers with a HTTP status code of 200 OK. The response contains the Location-header containing a relative URI to the selected algorithm instance, and also the default configuration parameters strucure for the specific algorithm.

Common Return Codes

Code Description
200 ok
400 Bad request
404 Algo not found
500 Server error

Select Streaming Data Source

This functionctionality is used to specify the input source needed for quality inspection, by subscribing specific topics on the Message Bus

POST /qualityInspectionAlgorithms/101/selectStreamingIn HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains two required fields for request.

Request URL: POST /qualityInspectionAlgorithms/<ID>/selectStreamingIn

Transfer Parameters

Name Required Parameter Type Object Type Description
ID Yes Resource string Identification of the analysis algorithm instance
datatopics Yes Body string Topic of the data source. Example: topic1; topic2

Response

If the operation of subscription to the defined topics of MessageBus is successful, the API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 ok
400 Bad request
404 ID not found
500 Server error

Select Historical Data Source

This functionctionality is used to specify the input data needed for quality inspection from the Storage.

POST /qualityInspectionAlgorithms/101/selectHistoricIn HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains two required fields for request.

Request URL: POST /qualityInspectionAlgorithms/<ID>/selectHistoricIn

Transfer Parameters

Name Required Parameter Type Object Type Description
ID Yes Resource string Identification of the analysis algorithm instance
datafield Yes Body string Source data fields

Response

If the operation of access to the defined data of Storage is successful, the API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 ok
400 Bad request
404 ID not found
500 Server error

Select Streaming Data Destination

This functionctionality is used to specify the output destination for quality inspection results, by publishing specific topics on the Message Bus

POST /qualityInspectionAlgorithms/101/selectStreamingOut HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains two required fields for request.

Request URL: POST /qualityInspectionAlgorithms/<ID>/selectStreamingOut

Transfer Parameters

Name Required Parameter Type Object Type Description
ID Yes Resource string Identification of the analysis algorithm instance
datatopics Yes Body string Topic of the data source; Example: topic1; topic2

Response

If the operation is successful, the API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 ok
400 Bad request
404 ID not found
500 Server error

Select Historical Data Destination

This functionctionality is used to specify the output destination for quality inspection results on the Storage.

POST /qualityInspectionAlgorithms/101/selectHistoricOut HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains two required fields for request.

Request URL: POST /qualityInspectionAlgorithms/<ID>/selectHistoricOut

Transfer Parameters

Name Required Parameter Type Object Type Description
ID Yes Resource string Identification of the analysis algorithm instance
datafield Yes Body string Source data fields

Response

If the operation of access to the defined data of Storage is successful, the API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 ok
400 Bad request
404 ID not found
500 Server error

Configure Processing Paramenters

This functionctionality is used to specify the configuration paramters for the specific quality inspection algorithm

POST /qualityInspectionAlgorithms/101/configure HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains two required fields for request.

Request URL: POST /qualityInspectionAlgorithms/<ID>/configure

Transfer Parameters

Name Required Parameter Type Object Type Description
ID Yes Resource string Identification of the analysis algorithm instance
parameters Yes Body string Configuration Parameters

Response

If the operation is successful, the API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 ok
400 Bad request
404 ID not found
500 Server error

Execute Analysis

This functionctionality is used to start processing previously specified input data for the specific quality inspection algorithm

POST /qualityInspectionAlgorithms/101/process HTTP/1.1
HTTP/1.1 200 OK

Request

The request contains one required fields for request.

Request URL: POST /qualityInspectionAlgorithms/<ID>/process

Transfer Parameters

Name Required Parameter Type Object Type Description
ID Yes Resource string Identification of the analysis algorithm instance

Response

If the operation is successful, the API answers with a HTTP status code of 200 OK.

Common Return Codes

Code Description
200 ok
400 Bad request
404 ID not found
500 Server error

Ask Inspection Results

This functionctionality is used to recover last processed results to monitor the functioning of the specific quality inspection algorithm

GET /qualityInspectionAlgorithms/101/lastResult HTTP/1.1
HTTP/1.1 200 OK
Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
Content-type: image/jpeg

Request

The request contains one required fields for request.

Request URL: GET /qualityInspectionAlgorithms/<ID>/process

Transfer Parameters

Name Required Parameter Type Object Type Description
ID Yes Resource string Identification of the analysis algorithm instance

Response

If the operation is successful, the API answers with a HTTP status code of 200 OK, and the response contains the expected output (image, quality rate, list of points,...).

Common Return Codes

Code Description
200 ok
400 Bad request
404 ID not found
500 Server error