Based on simple REST principles, the TrendMiner Assets API endpoints return JSON metadata about assets and attributes in the TrendMiner platform.

1. Authentication

All requests to the web API require authentication. This is achieved by sending a valid Bearer access token in the request headers. Request tokens are obtained using OAuth2.0.

Requests to the API can be done authenticated as your client or authenticated as a specific user. In both cases, you will first need to create a client and request a token.

When performing actions authenticated as a client, they will belong to service-account-CLIENTID.

Make sure you are calling our services over HTTPS when retrieving an access token.

1.1. Creating a new client

A new client can be created in ConfigHub: Security → Clients → Add client

1.2. Retrieving an access token

To retrieve a token to authenticate as your client, you will need:

  • Your client ID

  • Your client secret (can be obtained in ConfigHub)

A token is requested from the token endpoint of the authentication service:

Request
curl --request POST \
  --url 'https://YOUR_DOMAIN/auth/realms/trendminer/protocol/openid-connect/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=client_credentials \
  --data client_id=YOUR_CLIENT_ID \
  --data client_secret=YOUR_CLIENT_SECRET

Upon valid authentication, the response will contain an access token.

Response
200 OK
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJwcXZ1UXB...", (1)
  "expires_in": 300,
  "refresh_expires_in": 0,
  "token_type": "Bearer",
  "not-before-policy": 1571391000,
  "scope": "email profile"
}
  1. The access token is to be used in every request towards our services (see example below). A new token needs to be fetched when the token expires after 5 minutes.

1.3. Doing a request with an access token

Example request with access token
curl --request GET \
  --url 'https://YOUR_DOMAIN/af/asset' \
  --header 'Authorization: Bearer ACCESS_TOKEN'

2. Assets

The base object in the Assets universe is the asset. An asset represents a piece of equipment in a plant, ranging from the plant itself to the smallest sensor inside. An asset has a name and a description, along with some other properties.

There are two main types: ASSET and ATTRIBUTE: while an ASSET would be defined as a component of the installation, an ATTRIBUTE would be defined as a property on that asset. Those properties are usually pointers to certain tags containing timeseries data.

To define the asset structure of a (part of a) plant, we need a way to define the parent-child relationships between the different assets. This is done in the form of long paths. An asset has a list of (long) paths over which it can be reached. The long path is built with the identifiers of the parent and ancestor assets of the asset, all the way up to the root of the tree.

Next to the long paths array, a simpler and short paths array is present as well. The shorter paths refer to the same parents and ancestors, but simply with shorter identifiers.

An asset can have multiple paths because it can occur in more than one location in an asset tree.

Paths and long paths can be used interchangeable in the API. Within the same request using paths, all provided paths need to either be long paths or short paths.

Apart from the ASSET and ATTRIBUTE type, a special type called ASSET_ROOT is available. For every asset tree, one asset of this type is generated. It has the same name as the source in which it is defined, and is the highest ancestor of every asset in the tree.

3. Access rules

To restrict access to certain assets, access rules can be assigned to assets and attributes. For simplicity, both assets and attributes will be called assets.

There are three different permissions defined:

ASSET_BROWSE

user can see the asset, but can’t read its context items

ASSET_READ_CONTEXT_ITEM

user can see the asset and read its context items

ASSET_NO_PERMISSIONS

user explicitly has no access to the asset

For clarity, the prefix ASSET_ will be omitted in the remainder of this documentation, unless needed or specified otherwise.

The above permissions can be granted to subjects, the subject types:

GUEST

unauthenticated users

EVERYONE

all authenticated users

GROUP

all users in a given group

USER

a given user

In the current release, the subject types GUEST and GROUP cannot be used yet.

When defining an access rule on an asset, a combination of a subject and a set of permissions needs to be provided. When using the USER subject type, additionally a user id needs to be provided.

3.1. Subject type priorities

Access rules are prioritized by subject type, meaning an access rule on USER has precedence over an access rule defined on EVERYONE (and so on when the other subject types will be implemented).

Example 1. Access rules priorities

The following access rules exist:

  • permissions BROWSE, READ_CONTEXT_ITEM on asset Pump A for subject type EVERYONE,

  • permissions BROWSE on asset Pump A for subject type USER for user Bob.

This will result in Bob having the permission BROWSE for that asset, while other users also have the READ_CONTEXT_ITEM permission.

3.2. Inheritance of permissions

When no permissions that apply to the user are defined on an asset, there are still asset permissions that can come from child or parent assets in the tree.

Firstly, all it’s ancestors will be checked to see if any of them have permissions that apply to the user. If there are, the asset will have the same permissions (e.g. if the parent has READ permissions, the asset will also have READ permissions). This is what is referred to as "inheritance".

If no inherited permissions are found, then its children are checked. If any of its children have permissions, then the asset will automatically get the BROWSE permission. This is done so a user can always navigate to any asset it has permissions on. This is what is referred to as "pull-up permissions".

Finally, when there are no pull-up permissions, the current user does not have access to the requested asset.

Note
Users with administrator rights will always have all possible permissions available.

3.3. No Permission

Due to the inheritance of the permissions, an additional permission type has been foreseen to stop propagation of permissions and to explicitly deny access to an asset. When an access rule is defined with the NO_PERMISSION permission, the user explicitly is revoked access.

Example 2. Stopped permission propagation

Observe the below defined asset tree and the access rules on them.

Asset tree Access rules
  • Plant

    • Reactor 1

      • Pump A

    • Reactor 2

      • Pump B

  • BROWSE and READ_CONTEXT_ITEM on Plant

  • NO_PERMISSION on Reactor 2

The user will have BROWSE and READ_CONTEXT_ITEM on the asset Plant. Due to inheritance, Reactor 1 and Pump A will receive those same permissions. Reactor 2 has an explicitly defined NO_PERMISSION, causing the inheritance to stop there. As a result, the user will have access to neither Reactor 2 and Pump B.

4. Resources

4.1. Asset

4.1.1. Browse Asset tree on path

GET /asset/browse

Parameters

Type

Name

Description

Schema

Query

optional

parentPath

the ltree path to the asset's parent.

Query

optional

useTimeSeriesIdentifier

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not.

Query

optional

resolveTimeSeriesData

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelAsset

Produces
  • application/json

  • application/hal+json

4.1.2. Get an asset by its identifier.

GET /asset/{identifier}

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the asset.

String

Query

optional

useTimeSeriesIdentifier

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not.

Query

optional

resolveTimeSeriesData

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

Responses

HTTP Code

Description

Schema

200

OK

Asset

Produces
  • application/json

  • application/hal+json

4.1.3. Get an asset's attributes using the asset's identifier.

GET /asset/{identifier}/attribute

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the asset for which the attributes are searched.

String

Query

optional

query

You can search on all the exposed properties of a node Available search operators: equal(==), not equal(!=), in(=in=), not in(=out=) Available logical operator; AND(;), OR(,) Wildcards &#8727 are supported Examples: search by name equal to node and description not equal to old: name=='node';description!='old' search by name like node or description equal to something name=='&#8727node&#8727',description=='something'search by name equal to 'node' and node is child of provided parent path 'A.B.C.D' : name=='node';paths=c='A.B.C.D' search by name like 'node' and node is descendant of provided ancestor path 'A.B' : name=='node';paths=d='A.B'

Query

optional

useTimeSeriesIdentifier

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not.

Query

optional

resolveTimeSeriesData

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelAsset

Produces
  • application/json

  • application/hal+json

4.1.4. Get an asset by its path. Optionally include its ancestors.

GET /asset

Parameters

Type

Name

Description

Schema

Query

optional

path

the ltree path to the asset.

Query

optional

includeAncestors

Flag whether to include ancestors or not.

Query

optional

useTimeSeriesIdentifier

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not.

Query

optional

resolveTimeSeriesData

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelAsset

Produces
  • application/json

  • application/hal+json

4.1.5. Get assets by paths

POST /asset

Parameters

Type

Name

Description

Schema

Query

optional

useTimeSeriesIdentifier

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not.

Query

optional

resolveTimeSeriesData

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

Body

required

PathListModel

List of paths.

PathListModel

Responses

HTTP Code

Description

Schema

200

OK

List[Asset]

Produces
  • application/json

4.1.6. Get relatives for assets by their path

POST /asset/relatives

Parameters

Type

Name

Description

Schema

Query

optional

limit

Limit the response size, default is 10001.

Query

optional

useTimeSeriesIdentifier

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not.

Query

optional

resolveTimeSeriesData

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

Body

required

RelativesByPathModel

List of relatives

RelativesByPathModel

Responses

HTTP Code

Description

Schema

200

OK

List[[UUID]]

Produces
  • application/json

  • application/hal+json

4.1.7. Get the timeseries data linked to an attribute, identified by its identifier.

GET /asset/{identifier}/timeseriesdata

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the attribute.

String

Query

optional

useTimeSeriesIdentifier

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not.

Responses

HTTP Code

Description

Schema

200

OK

AssetTimeSeriesData

Produces
  • application/json

  • application/hal+json

4.1.8. Search assets matching the specified query.

GET /asset/search

Parameters

Type

Name

Description

Schema

Query

required

query

You can search on all the exposed properties of a node Available search operators: equal(==), not equal(!=), in(=in=), not in(=out=) Available logical operator; AND(;), OR(,) If you want to use \\ literally, then double it as \\\\ Wildcards &#8727 are supported Examples: search by name equal to node and description not equal to old: name=='node';description!='old' search by name like node or description equal to something name=='&#8727node&#8727',description=='something'search by name equal to 'node' and node is child of provided parent path 'A.B.C.D' : name=='node';paths=c='A.B.C.D' search by name like 'node' and node is descendant of provided ancestor path 'A.B' : name=='node';paths=d='A.B'

Query

optional

useTimeSeriesIdentifier

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not.

Query

optional

unnest

Unnest asset with multiple paths or not.

Query

optional

resolveTimeSeriesData

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelAsset

Produces
  • application/json

  • application/hal+json

4.1.9. Search assets matching the specified query.

POST /asset/search

Parameters

Type

Name

Description

Schema

Body

required

NodeSearchParametersModel

Search assets matching the specified query.

NodeSearchParametersModel

Responses

HTTP Code

Description

Schema

200

OK

PagedModelAsset

Produces
  • application/json

  • application/hal+json

4.2. AssetAccessRules

4.2.1. Returns true if there are any other permissions then the default permissions.

GET /asset/accessrule

Parameters
Type Name Description Schema
Responses

HTTP Code

Description

Schema

401

Unauthorized

AccessPermissionsModifiedRepresentationModel

200

OK

AccessPermissionsModifiedRepresentationModel

Produces
  • application/json

  • application/hal+json

4.2.2. Create an access rule for the specified asset.

POST /asset/{path}/accessrule

Parameters

Type

Name

Description

Schema

Path required

path

The path of the asset.

String

Body

required

AssetAccessRuleModel

The access rule model.

AssetAccessRuleModel

Responses

HTTP Code

Description

Schema

401

Unauthorized

AccessRule

404

The resource was not found

AccessRule

400

Validation failed

AccessRule

200

OK

AccessRule

Produces
  • application/json

  • application/hal+json

4.2.3. Delete the specified access rule for the specified asset.

DELETE /asset/{path}/accessrule/{accessRuleId}

Parameters

Type

Name

Description

Schema

Path required

path

The identifier of the asset.

String

Path required

accessRuleId

The identifier of the access rule.

String

Responses

HTTP Code

Description

Schema

401

Unauthorized

204

Deleted

404

The resource was not found

4.2.4. Get the specified access rule for the specified asset.

GET /asset/{path}/accessrule/{accessRuleId}

Parameters

Type

Name

Description

Schema

Path required

path

The identifier of the asset.

String

Path required

accessRuleId

The identifier of the access rule.

String

Responses

HTTP Code

Description

Schema

401

Unauthorized

AccessRule

404

The resource was not found

AccessRule

200

OK

AccessRule

Produces
  • application/json

  • application/hal+json

4.2.5. Get the access rule for the specified asset selected by path.

GET /asset/{path}/accessrule

Parameters

Type

Name

Description

Schema

Path required

path

The path of the asset.

String

Responses

HTTP Code

Description

Schema

401

Unauthorized

List[AccessRule]

404

The resource was not found

List[AccessRule]

200

OK

List[AccessRule]

Produces
  • application/json

  • application/hal+json

4.2.6. Get all inherited access rule for the specified asset.

GET /asset/{path}/accessrule/inherited

Parameters

Type

Name

Description

Schema

Path required

path

The identifier of the asset.

String

Responses

HTTP Code

Description

Schema

401

Unauthorized

List[AccessRule]

404

The resource was not found

List[AccessRule]

200

OK

List[AccessRule]

Produces
  • application/json

  • application/hal+json

4.2.7. Update the specified access rule for the specified asset.

PUT /asset/{path}/accessrule/{accessRuleId}

Parameters

Type

Name

Description

Schema

Path required

path

The identifier of the asset.

String

Path required

accessRuleId

The identifier of the access rule.

String

Body

required

AssetAccessRuleModel

The access rule model.

AssetAccessRuleModel

Responses

HTTP Code

Description

Schema

401

Unauthorized

AccessRule

404

The resource was not found

AccessRule

400

Validation failed

AccessRule

200

OK

AccessRule

Produces
  • application/json

  • application/hal+json

4.3. AssetConverter

4.3.1. Converts a named path to the node identifier.

POST /asset/convert/named-path

Parameters

Type

Name

Description

Schema

Body

required

NamedPathListModel

Named path list model

NamedPathListModel

Responses

HTTP Code

Description

Schema

200

OK

MappingsV2

Produces
  • application/json

  • application/hal+json

4.3.2. Converts a node identifier to the named path.

POST /asset/convert/identifier

Parameters

Type

Name

Description

Schema

Body

required

IdListModel

Id list model.

IdListModel

Responses

HTTP Code

Description

Schema

200

OK

MappingsV2

Produces
  • application/json

  • application/hal+json

4.4. AssetPermissions

4.4.1. Get the granted permissions for the specified assets for the current user.

POST /permissions

Parameters

Type

Name

Description

Schema

Body

required

IdListModel

The list of asset identifiers.

IdListModel

Responses

HTTP Code

Description

Schema

200

The resource was found with the provided permissions

GrantedPermissions

404

The resource was not found

GrantedPermissions

Produces
  • application/json

  • application/hal+json

4.4.2. Get the granted permissions for the specified nodes for the current user.

POST /node/permission

Parameters

Type

Name

Description

Schema

Body

required

IdListModel

The list of node identifiers.

IdListModel

Responses

HTTP Code

Description

Schema

200

The resource was found with the provided permissions

GrantedPermissionMap

404

The resource was not found

GrantedPermissionMap

Produces
  • application/json

  • application/hal+json

4.4.3. Get the granted permissions for the specified structures for the current user.

POST /structure/permission

Parameters

Type

Name

Description

Schema

Body

required

IdListModel

The list of structure identifiers.

IdListModel

Responses

HTTP Code

Description

Schema

200

The resource was found with the provided permissions

GrantedPermissionMap

404

The resource was not found

GrantedPermissionMap

Produces
  • application/json

  • application/hal+json

4.5. Assets

4.5.1. Browse structures based on their path in the asset tree.

GET /assets/structure/browse/{path}

Parameters

Type

Name

Description

Schema

Path required

path

the ltree path to the node.

String

Query

optional

useTimeSeriesIdentifier

Query

optional

includeAncestors

Flag wether to include ancestors or not.

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelStructure

Produces
  • application/json

  • application/hal+json

4.5.2. Converts a named path to the node identifier.

POST /assets/convert/named-path

Parameters

Type

Name

Description

Schema

Body

required

NamedPathListModel

Named path list model

NamedPathListModel

Responses

HTTP Code

Description

Schema

200

OK

Mappings

Produces
  • application/json

  • application/hal+json

4.5.3. Converts a node identifier to the named path.

POST /assets/convert/identifier

Parameters

Type

Name

Description

Schema

Body

required

IdListModel

Id list model.

IdListModel

Responses

HTTP Code

Description

Schema

200

OK

Mappings

Produces
  • application/json

  • application/hal+json

4.5.4. Exports the current nodes by their structures.

GET /assets/export

Parameters
Type Name Description Schema
Responses

HTTP Code

Description

Schema

200

OK

4.5.5. Checks whether or not the current assets structure can be exported.

GET /assets/exportable

Parameters
Type Name Description Schema
Responses

HTTP Code

Description

Schema

200

OK

Boolean

Produces
  • application/json

  • application/hal+json

4.5.6. Gets the node denoted by its external id.

GET /assets/node/external/{externalId}

Parameters

Type

Name

Description

Schema

Path required

externalId

String

Query

optional

useTimeSeriesIdentifier

Responses

HTTP Code

Description

Schema

200

OK

Node

Produces
  • application/json

  • application/hal+json

4.5.7. Gets the node denoted by its UUID.

GET /assets/node/{id}

Parameters

Type

Name

Description

Schema

Path required

id

UUID

Query

optional

useTimeSeriesIdentifier

Responses

HTTP Code

Description

Schema

200

OK

Node

Produces
  • application/json

  • application/hal+json

4.5.8. Gets the structure denoted by its UUID.

GET /assets/{id}

Parameters

Type

Name

Description

Schema

Path required

id

UUID

Query

optional

useTimeSeriesIdentifier

Responses

HTTP Code

Description

Schema

200

OK

Structure

Produces
  • application/json

  • application/hal+json

4.5.9. Lists the structures that have a parent defined by parentId. If parentId is omitted, all root structures are returned.

GET /assets/browse

Parameters

Type

Name

Description

Schema

Query

optional

parentId

Query

optional

useTimeSeriesIdentifier

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelStructure

Produces
  • application/json

  • application/hal+json

4.5.10. Retrieve the specified list of nodes.

POST /assets/nodes

Parameters

Type

Name

Description

Schema

Query

optional

useTimeSeriesIdentifier

Body

required

IdListModel

List of identifiers.

IdListModel

Responses

HTTP Code

Description

Schema

200

OK

List[Node]

Produces
  • application/json

  • application/hal+json

4.5.11. Retrieve the specified list structures.

POST /assets/structures

Parameters

Type

Name

Description

Schema

Query

optional

useTimeSeriesIdentifier

Body

required

PathListModel

List of paths.

PathListModel

Responses

HTTP Code

Description

Schema

200

OK

List[Structure]

Produces
  • application/json

  • application/hal+json

4.5.12. Checks whether or not a new assets structure can be imported.

GET /assets/importable

Parameters
Type Name Description Schema
Responses

HTTP Code

Description

Schema

200

OK

Boolean

Produces
  • application/json

  • application/hal+json

4.5.13. Search for all child attributes for a specified node that match the optional query pattern.

GET /assets/node/{id}/attributes

Parameters

Type

Name

Description

Schema

Path required

id

UUID

Query

optional

query

You can search on all the exposed properties of a node Available search operators: equal(==), not equal(!=), in(=in=), not in(=out=) Available logical operator; AND(;), OR(,) Wildcards &#8727 are supported Examples: search by name equal to node and description not equal to old: name=='node';description!='old' search by name like node or description equal to something name=='&#8727node&#8727',description=='something'

Query

optional

useTimeSeriesIdentifier

Query

optional

parent

the uuid of the parent structure.

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelNode

Produces
  • application/json

  • application/hal+json

4.5.14. Search for all structures that match the query pattern.

GET /assets/search

Parameters

Type

Name

Description

Schema

Query

required

query

You can search on all the exposed properties of a node Available search operators: equal(==), not equal(!=), in(=in=), not in(=out=) Available logical operator; AND(;), OR(,) If you want to use \\ literally, then double it as \\\\ Wildcards &#8727 are supported Examples: search by name equal to node and description not equal to old: name=='node';description!='old' search by name like node or description equal to something name=='&#8727node&#8727',description=='something'

Query

optional

useTimeSeriesIdentifier

Query

optional

parent

the uuid of the parent structure.

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelStructure

Produces
  • application/json

  • application/hal+json

4.5.15. Search structures matching the specified query.

POST /assets/search

Parameters

Type

Name

Description

Schema

Body

required

SearchParametersV1Model

The search parameters.

SearchParametersV1Model

Responses

HTTP Code

Description

Schema

200

OK

PagedModelStructure

Produces
  • application/json

  • application/hal+json

4.6. AssetsAccessRulesV1Deprecated

4.6.1. Create an access rule for the specified structure.

POST /assets/{structureId}/accessrule

Parameters

Type

Name

Description

Schema

Path required

structureId

The identifier of the asset's structure.

String

Body

required

AssetAccessRuleModel

The access rule model.

AssetAccessRuleModel

Responses

HTTP Code

Description

Schema

401

Unauthorized

AccessRule

404

The resource was not found

AccessRule

400

Validation failed

AccessRule

200

OK

AccessRule

Produces
  • application/json

  • application/hal+json

4.6.2. Delete the specified access rule for the specified structure.

DELETE /assets/{structureId}/accessrule/{accessRuleId}

Parameters

Type

Name

Description

Schema

Path required

structureId

The identifier of the asset's structure.

String

Path required

accessRuleId

The identifier of the access rule.

String

Responses

HTTP Code

Description

Schema

401

Unauthorized

204

Deleted

404

The resource was not found

4.6.3. Get the specified access rule for the specified structure.

GET /assets/{structureId}/accessrule/{accessRuleId}

Parameters

Type

Name

Description

Schema

Path required

structureId

The identifier of the asset's structure.

String

Path required

accessRuleId

The identifier of the access rule.

String

Responses

HTTP Code

Description

Schema

401

Unauthorized

AccessRule

404

The resource was not found

AccessRule

200

OK

AccessRule

Produces
  • application/json

  • application/hal+json

4.6.4. Get the access rule for the specified structure.

GET /assets/{structureId}/accessrule

Parameters

Type

Name

Description

Schema

Path required

structureId

The identifier of the asset's structure.

String

Responses

HTTP Code

Description

Schema

401

Unauthorized

List[AccessRule]

404

The resource was not found

List[AccessRule]

200

OK

List[AccessRule]

Produces
  • application/json

  • application/hal+json

4.6.5. Get all inherited access rule for the specified structure.

GET /assets/{structureId}/accessrule/inherited

Parameters

Type

Name

Description

Schema

Path required

structureId

The identifier of the asset's structure.

String

Responses

HTTP Code

Description

Schema

401

Unauthorized

List[AccessRule]

404

The resource was not found

List[AccessRule]

200

OK

List[AccessRule]

Produces
  • application/json

  • application/hal+json

4.6.6. Update the specified access rule for the specified structure.

PUT /assets/{structureId}/accessrule/{accessRuleId}

Parameters

Type

Name

Description

Schema

Path required

structureId

The identifier of the asset's structure.

String

Path required

accessRuleId

The identifier of the access rule.

String

Body

required

AssetAccessRuleModel

The access rule model.

AssetAccessRuleModel

Responses

HTTP Code

Description

Schema

401

Unauthorized

AccessRule

404

The resource was not found

AccessRule

400

Validation failed

AccessRule

200

OK

AccessRule

Produces
  • application/json

  • application/hal+json

4.7. CacheController

POST /cache/clear?name={cacheName}

===== Parameters

Type

Name

Description

Schema

Path required

cacheName

String

===== Responses

HTTP Code

Description

Schema

200

OK

POST /cache/clear

Parameters
Type Name Description Schema
Responses

HTTP Code

Description

Schema

200

OK

4.8. GrantedAssetPermissions

4.8.1. Get all assets for which any permissions is set for the a subject.

GET /asset/granted-assets

Parameters

Type

Name

Description

Schema

Query

required

subjectType

Subject type

Query

optional

subjectIdentifier

Subject identifier

Responses

HTTP Code

Description

Schema

401

Unauthorized

GrantedAssetPermissionsRepresentationModel

404

The requested subject does not exist.

GrantedAssetPermissionsRepresentationModel

200

Specific permissions for this user exist.

GrantedAssetPermissionsRepresentationModel

204

No specific permissions for this user exist.

GrantedAssetPermissionsRepresentationModel

Produces
  • application/json

  • application/hal+json

4.8.2. Get all subject type/identifier pairs.

GET /asset/granted-assets/subjects

Parameters
Type Name Description Schema
Responses

HTTP Code

Description

Schema

401

Unauthorized

CollectionModelGrantedAssetPermissionsIdRepresentationModel

200

All subject type/identifier pairs.

CollectionModelGrantedAssetPermissionsIdRepresentationModel

Produces
  • application/json

  • application/hal+json

4.9. PublicDownloadGenerator

4.9.1. Generate

POST /download/generate

Parameters

Type

Name

Description

Schema

Body

required

LinkModel

The model containing the requested link

LinkModel

Responses

HTTP Code

Description

Schema

200

Ok

DataModel

Produces
  • application/json

4.10. Source

4.10.1. Create new source.

POST /source

Parameters

Type

Name

Description

Schema

Query

required

name

The name of the source.

Query

required

published

Indicator whether the source is published or not.

Responses

HTTP Code

Description

Schema

200

OK

Source

Produces
  • application/json

  • application/hal+json

4.10.2. Delete existing source.

DELETE /source/{identifier}

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Responses

HTTP Code

Description

Schema

200

OK

4.10.3. Download error CSV file.

GET /source/{identifier}/history/{syncJobIdentifier}/error

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Path required

syncJobIdentifier

The identifier of the sync job.

String

Responses

HTTP Code

Description

Schema

200

OK

4.10.4. Download original CSV file.

GET /source/{identifier}/history/{syncJobIdentifier}/original

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Path required

syncJobIdentifier

The identifier of the sync job.

String

Responses

HTTP Code

Description

Schema

200

OK

4.10.5. Download current version for CSV source.

GET /source/{identifier}/export

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Query

optional

includeDeleted

Indicator whether to include the deleted assets or not.

Responses

HTTP Code

Description

Schema

200

OK

4.10.6. List all sources.

GET /source

Parameters

Type

Name

Description

Schema

Query

optional

query

Optional RSQL search filter.

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelSource

Produces
  • application/json

  • application/hal+json

4.10.7. Get specific source by its identifier.

GET /source/{identifier}

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Responses

HTTP Code

Description

Schema

200

OK

Source

Produces
  • application/json

  • application/hal+json

4.10.8. List all imports for an existing source.

GET /source/{identifier}/history

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelSyncJob

Produces
  • application/json

  • application/hal+json

4.10.9. List all imports for an existing source.

POST /source/history

Parameters

Type

Name

Description

Schema

Body

required

UUID

List of source identifiers.

[UUID]

Responses

HTTP Code

Description

Schema

200

OK

List[SourceSyncJob]

Produces
  • application/json

  • application/hal+json

4.10.10. Get the sync job details.

GET /source/{identifier}/history/{syncJobIdentifier}

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Path required

syncJobIdentifier

The identifier of the sync job.

String

Responses

HTTP Code

Description

Schema

200

OK

SyncJob

Produces
  • application/json

  • application/hal+json

4.10.11. Reorder source's root.

POST /source/{identifier}/move

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Body

required

SourceReorderingModel

Operation to be applied on the order.

SourceReorderingModel

Responses

HTTP Code

Description

Schema

200

OK

Source

Produces
  • application/json

  • application/hal+json

4.10.12. Update existing source.

PUT /source/{identifier}

Parameters

Type

Name

Description

Schema

Path required

identifier

The identifier of the source.

String

Query

required

name

The name of the source.

Query

required

published

Indicator whether the source is published or not.

Responses

HTTP Code

Description

Schema

200

OK

Source

Produces
  • application/json

  • application/hal+json

4.11. Sync

4.11.1. Cancel execution of a specific sync job.

DELETE /sync/{identifier}

Parameters

Type

Name

Description

Schema

Path required

identifier

The sync job's identifier.

String

Responses

HTTP Code

Description

Schema

200

OK

SyncJob

Produces
  • application/json

  • application/hal+json

4.11.2. Get sync history for a specific datasource.

GET /sync

Parameters

Type

Name

Description

Schema

Query

required

datasourceId

The datasource identifier.

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelSyncJob

Produces
  • application/json

  • application/hal+json

4.11.3. Get status for a specific sync job.

GET /sync/{identifier}

Parameters

Type

Name

Description

Schema

Path required

identifier

The sync job's identifier.

String

Responses

HTTP Code

Description

Schema

200

OK

SyncJob

Produces
  • application/json

  • application/hal+json

4.11.4. Get status for the latest sync job per datasource in bulk.

POST /sync/status

Parameters

Type

Name

Description

Schema

Body

required

UUID

List of datasource identifiers.

[UUID]

Responses

HTTP Code

Description

Schema

200

OK

List[SourceSyncJob]

Produces
  • application/json

  • application/hal+json

4.11.5. Sync a specific datasource.

POST /sync

Parameters

Type

Name

Description

Schema

Query

required

datasourceId

The datasource identifier.

Responses

HTTP Code

Description

Schema

200

OK

String

Produces
  • application/json

  • application/hal+json

4.11.6. Search for sync histories.

GET /sync/search

Parameters

Type

Name

Description

Schema

Query

required

query

You can search on all the exposed properties of a sync job Available search operators: equal(==), not equal(!=), in(=in=), not in(=out=) Available logical operator; AND(;), OR(,) If you want to use \\ literally, then double it as \\\\ Wildcards &#8727 are supported

Query

optional

page

Zero-based page index (0..N)

Query

optional

size

The size of the page to be returned

Query

optional

sort

Sorting criteria in the format: property(,asc

desc). Default sort order is ascending. Multiple sort criteria are supported.

Responses

HTTP Code

Description

Schema

200

OK

PagedModelSyncJob

Produces
  • application/json

  • application/hal+json

5. Models

5.1. AccessPermissionsModifiedRepresentationModel

Field Name Required Type Description Format

modified

Boolean

5.2. AccessRule

Represents an access rule definition

Field Name Required Type Description Format

identifier

String

The identifier of the access rule.

objectId

X

String

The identifier of the object.

paths

X

List of [string]

An array of paths towards the object.

subjectId

X

String

The identifier of the subject.

subjectType

X

String

The type of the subject: USER, GROUP, EVERYBODY, GUEST.

Enum: GUEST, EVERYONE, GROUP, USER,

permissions

X

Set of [string]

A set of permissions the subject has on the specified object. Can be an empty set.

Enum:

userDetailsResource

UserDetails

structureResource

Structure

assetResource

Asset

links

List of Link

5.3. Asset

Represents an asset

Field Name Required Type Description Format

identifier

UUID

The asset's identifier.

uuid

paths

List of [string]

The paths towards this asset starting from the root.

longPaths

List of [string]

The old longer paths towards this asset starting from the root.

parentNames

List of [string]

The names of the parents, in the same order as the paths.

name

String

The asset's name.

description

String

The asset's description.

type

String

The asset's type.

dataType

String

The asset's data type, if the Asset is an ATTRIBUTE.

data

String

The asset's data, if the Asset is an ATTRIBUTE. (tagName or UUID)

timeSeriesDefinition

TimeSeriesDefinitionRepresentation

deleted

Boolean

Indication whether this asset is deleted or not.

externalId

String

The asset's identifier in the external system.

template

String

The asset's template.

templateId

String

The asset's template identifier.

source

Source

permissions

Set of [string]

The asset's permissions.

Enum:

links

List of Link

5.4. AssetAccessRuleModel

Object used for creating and updating an access rule

Field Name Required Type Description Format

identifier

String

The identifier of the access rule.

subjectId

X

String

The identifier of the subject.

subjectType

X

String

The type of the subject.

Enum: GUEST, EVERYONE, GROUP, USER,

permissions

X

Set of [string]

A set of permissions the subject has on the specified object.

Enum:

5.5. AssetTimeSeriesData

Field Name Required Type Description Format

data

String

timeseriesDefinition

TimeSeriesDefinitionRepresentation

links

List of Link

5.6. CollectionModelGrantedAssetPermissionsIdRepresentationModel

Field Name Required Type Description Format

links

List of Link

content

List of GrantedAssetPermissionsIdRepresentationModel

5.7. DataModel

Field Name Required Type Description Format

data

String

the signed link data

5.8. GrantedAssetPermissionsIdRepresentationModel

Represents a granted asset permission identifier.

Field Name Required Type Description Format

subjectType

String

The subject's type.

subjectIdentifier

String

The subject's identifier.

links

List of Link

5.9. GrantedAssetPermissionsRepresentationModel

Model holding a list of asset identifiers for which the user has any permission.

Field Name Required Type Description Format

assetIdentifiers

List of [UUID]

uuid

subjectIdentifier

String

subjectType

String

links

List of Link

5.10. GrantedPermission

List of granted permissions

Field Name Required Type Description Format

assetIdentifier

UUID

uuid

sourceIdentifier

UUID

uuid

permissions

Set of [string]

5.11. GrantedPermissionMap

Represents granted permissions for bulk permission resolving

Field Name Required Type Description Format

permissions

Map of [set]

Map of granted permissions per node/structure id.

5.12. GrantedPermissions

Represents granted permissions for an Asset

Field Name Required Type Description Format

permissions

List of GrantedPermission

List of granted permissions

5.13. IdListModel

Field Name Required Type Description Format

uuidList

List of [UUID]

List of asset identifiers.

uuid

5.15. LinkModel

Field Name Required Type Description Format

link

X

String

The requested link.

validity

Long

Validity of the requested token, in seconds.

int64

5.16. Mapping

List of mappings.

Field Name Required Type Description Format

path

String

Path of the asset.

identifier

String

Identifier of the asset.

5.17. MappingV2

List of mappings.

Field Name Required Type Description Format

namedPath

String

Path of the asset.

identifier

String

Identifier of the asset.

longPath

String

Path of identifiers to the asset.

path

String

Path of short identifiers to the asset.

5.18. Mappings

Field Name Required Type Description Format

mappings

List of Mapping

List of mappings.

links

List of Link

5.19. MappingsV2

Field Name Required Type Description Format

mappings

List of MappingV2

List of mappings.

links

List of Link

5.20. NamedPathListModel

Field Name Required Type Description Format

namedPathList

List of [string]

List of paths built up using asset names.

5.21. Node

Field Name Required Type Description Format

identifier

String

The node's identifier

sourceId

String

Deprecated notion of source.

type

String

Node's type.

externalId

String

Node's external identifier.

template

String

Node's template name.

templateId

String

Node's template identifier.

name

String

Node's name.

description

String

Node's description.

dataType

String

Node's data type in case this node is an ATTRIBUTE.

data

String

Node's data in case this node is an ATTRIBUTE.

timeSeriesDefinition

TimeSeriesDefinitionRepresentation

options

String

Node's options.

deleted

Boolean

Idicates whether this node is deleted.

permissions

Set of [string]

Node's permission for the requesting user.

Enum:

links

List of Link

5.22. NodeSearchParametersModel

Represents search parameters

Field Name Required Type Description Format

query

X

String

page

Integer

int32

size

Integer

int32

sort

List of [string]

useTimeSeriesIdentifier

Boolean

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not. Default is true

unnest

Boolean

Unnest asset with multiple paths or not.

resolveTimeSeriesData

Boolean

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

5.23. PageMetadata

5.24. PagedModelAsset

Field Name Required Type Description Format

links

List of Link

content

List of Asset

page

PageMetadata

5.25. PagedModelNode

Field Name Required Type Description Format

links

List of Link

content

List of Node

page

PageMetadata

5.26. PagedModelSource

Field Name Required Type Description Format

links

List of Link

content

List of Source

page

PageMetadata

5.27. PagedModelStructure

Field Name Required Type Description Format

links

List of Link

content

List of Structure

page

PageMetadata

5.28. PagedModelSyncJob

Field Name Required Type Description Format

links

List of Link

content

List of SyncJob

page

PageMetadata

5.29. PathListModel

Field Name Required Type Description Format

pathList

List of [string]

5.30. RelativesByPathModel

Field Name Required Type Description Format

path

String

Path of the asset

include

String

Type to include

Enum: SELF, ANCESTORS, DESCENDANTS,

5.31. SearchParametersV1Model

Represents search parameters for assetsV1

Field Name Required Type Description Format

query

X

String

page

Integer

int32

size

Integer

int32

sort

List of [string]

useTimeSeriesIdentifier

Boolean

Indicates if the Asset data reference should be resolved to a TimeSeriesIdentifier UUID or not. Default is true

unnest

Boolean

Unnest asset with multiple paths or not.

resolveTimeSeriesData

Boolean

Indicates if the timeseries data should be resolved for attributes of type DATAREFERENCE. Default is true

parent

String

the uuid of the parent structure.

5.32. Source

Represents a source

Field Name Required Type Description Format

identifier

UUID

The source's identifier.

uuid

name

String

The source's name.

type

String

The source's type.

Enum: DATASOURCE, CSV,

externalId

String

The source's external identifier.

ordering

Integer

The source's order in the root asset tree.

int32

published

Boolean

Indicates whether he source is published.

permissions

Set of [string]

The source's permissions for the requesting user.

Enum:

links

List of Link

5.33. SourceReorderingModel

Field Name Required Type Description Format

operation

String

Enum: UP, DOWN, TOP, BOTTOM,

5.34. SourceSyncJob

Field Name Required Type Description Format

source

Source

syncJob

SyncJob

5.35. Structure

Structure details for enriched inherited calls.

Field Name Required Type Description Format

structureIdentifier

String

sourceId

String

parentStructureId

String

nodeIdentifier

String

type

String

externalId

String

template

String

templateId

String

name

String

parentName

String

description

String

dataType

String

data

String

options

String

deleted

Boolean

path

String

permissions

Set of [string]

Enum:

links

List of Link

5.36. SyncJob

Field Name Required Type Description Format

identifier

UUID

The sync job's identifier.

uuid

name

String

The sync job's name.

started

Date

The moment the sync job started.

date-time

ended

Date

The moment the sync job ended.

date-time

status

String

The sync job's status.

Enum: SCHEDULED, RUNNING, DONE, DONE_WITH_ERRORS, CANCELLED, FAILED,

triggeredDate

Date

The moment the sync job was triggered.

date-time

triggeredBy

String

The user the sync job triggered by.

errorMessage

String

The sync job's error message, if any.

source

Source

links

List of Link

5.37. TimeSeriesDefinitionRepresentation

TimeSeries definition to which the data points. Can be empty, even if data is present.

Field Name Required Type Description Format

datasourceId

UUID

uuid

ownerId

String

externalId

String

name

String

description

String

type

String

units

String

interpolationType

String

deleted

Boolean

plotDataUrl

String

indexDataUrl

String

links

List of Link

id

UUID

uuid

5.38. UserDetails

Represents a subset of user details

Field Name Required Type Description Format

userId

String

User's id.

userName

String

User's username.

firstName

String

User's first name.

lastName

String

User's last name.

admin

Boolean

Indication whether user is an admin or not.