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. |
Get Related Data
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¶m=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:
|
| 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 |
| 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
|
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
|
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
|
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/
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/
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/
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 |