Skip to content
 
 

Repository files navigation

Arrowhead Framework 4.1.3

Arrowhead (and its continuation, Productive4.0) is an ambitious holistic innovation project, meant to open the doors to the potentials of Digital Industry and to maintain a leadership position of the industries in Europe. All partners involved will work on creating the capability to efficiently design and integrate hardware and software of Internet of Things (IoT) devices. Linking the real with the digital world takes more than just adding software to the hardware.

Disclaimer

Please be aware, that 4.1.3 is NOT backwards compatible with 4.1.2. If you have older systems please refer to the Migration Guide

Table of Contents

  1. Quick Start Guide
  2. Migration Guide 4.1.2 -> 4.1.3
  3. How to Contribute
  4. Documentation
    1. Service Registry
    2. Authorization

Docker

Placeholder

Compile source code and manually install MySQL and Maven.

Requirements

The project has the following dependencies:

Verify that you have Java (java -version), Maven (mvn -version), MySQL installed properly!

Pull this code and enter the directory. git clone https://github.com/arrowhead-f/core-java-spring.git

Run the MySQL script which is in the scripts folder. If you won't run this script first, the project won't build.

cd core-java-spring

Execute mvn install command. Wait until the build succeeds. This command builds all available projects.

After succeeding enter the scripts folder and execute start_core_systems.sh or start_core_systems.bat depending on your operating system.

  • serviceregistry/target directory. cd serviceregistry/target
    and execute: java -jar arrowhead-serviceregistry-4.1.3.jar
  • authorization/target directory. cd authorization/target
    and execute: java -jar arrowhead-authorization-4.1.3.jar
  • orchestrator/target directory. orchestrator/target
    and execute: java -jar arrowhead-orchestrator-4.1.3.jar

Wait until servers start...

Service Registry will be available on localhost:8443
Authorization will be available on localhost:8445
Orchestrator will be available on localhost:8441
Event Handler will be available on localhost:8455
Gatekeeper will be available on localhost:8449
Gateway will be available on localhost:8453

Swagger with API documentation is available in the root route.

Insecure Mode - (not recommended)

To start in insecure mode, you have to change the server.ssl.enabled property to false. You'll have to do it for each core system, under the path target/application.properties. Note that if you recompile after the changes, the target/application.properties file will be overwritten by the default ones in the src/main/resources/application.properties.

The Gatekeeper and Gateway use encryption based on the certificates, hence there is no way to start the Gatekeeper and Gateway in insecure mode. But you can use the local cloud without these core systems. All you have to do is to set gatekeeper_is_present=false in the application.properties of the ochestrator, and start the script start_coresystems_local.bat or start_coresystems_local.sh depending on your operating system.

4.1.3 is NOT backwards compatible with 4.1.2! Earlier it was redundant and contained gaps. Now the database and the endpoints are redesigned, they are clean, more logical and easier to use.

You can migrate your existing database manually. See the Quick Start Guide, how to deploy the Core Systems.

Major endpoint changes:

Service Registry Core System:

The following endpoints no longer exist, instead use the ones on the right:

  • PUT /mgmt/services -> POST /serviceregistry/mgmt/services

  • PUT /mgmt/systems -> POST /serviceregistry/mgmt/systems

  • GET /serviceregistry/mgmt/systemId/{systemId} -> GET /serviceregistry/mgmt/systems/{id}

  • GET /serviceregistry/mgmt/serviceId/{serviceId}/providers

  • PUT /serviceregistry/mgmt/query -> POST /serviceregistry/query

  • PUT /serviceregistry/mgmt/subscriptions/{id}

  • PUT /serviceregistry/support/remove -> DELETE /serviceregistry/unregister

  • DELETE /serviceregistry/mgmt/all

  • serviceregistry/register - data structure changed

Old payload, which is no longer usable

{
 "providedService" : {
   "serviceDefinition" : "IndoorTemperature",
   "interfaces" : [ "JSON", "XML" ],
   "serviceMetadata" : {
     "unit" : "celsius"
   }
 },
 "provider" : {
   "systemName" : "InsecureTemperatureSensor",
   "address" : "192.168.0.2",
   "port" : 8080
 },
 "serviceURI" : "temperature",
 "version" : 1,
 "udp" : false,
 "ttl" : 0
} 

New payload - you can easily map the old fields to the new ones.

{
 "serviceDefinition": "IndoorTemperature",
 "providerSystem": {
 "systemName": "InsecureTemperatureSensor",
 "address": "192.168.0.2",
 "port": 8080,
 "authenticationInfo": "eyJhbGciOiJIUzI1Ni..."
},
 "serviceUri": "temperature",
 "endOfValidity": "2019-12-05T12:00:00",
 "secure": "TOKEN",
 "metadata": {
   "unit": "celsius"
},
 "version": 1,
 "interfaces": [
   "HTTP-SECURE-JSON"
]
}

Authorization Core System:

  • /mgmt/intracloud - data structure changed
  • /mgmt/intercloud - data structure changed

Orchestration Core System:

Store based orchestration is available for now.

  • /mgmt/store - data structure changed

Open Development

All work on Arrowhead repositories happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.

Branch Organization

The latest version of the core systems are available in the master branch. The code for the next release is merged in the development branch. If you would like to contribute, please check out the development branch. Create a new branch from development. Don't forget do write documentation, unit and integration tests. When finished, create a pull request back into development. If accepted, your contribution will be in the next release. :)

Bugs

Where To Find Known Issues

We are using GitHub Issues for our public bugs. We keep a close eye on this and try to make it clear when we have an internal fix in progress. Before filing a new task, try to make sure your problem doesn’t already exist.

Reporting New Issues

The best way to get your bug fixed is to provide a reduced test case.

How to Get in Touch

Join our developer team on Slack. Write an email to szvetlin@aitia.ai for an invite.

This System provides the database, which stores information related to the currently actively offered Services within the Local Cloud.

The purpose of this System is therefore to allow:

  • Application Systems to register what Services they offer at the moment, making this announcement available to other Application Systems on the network.
  • They are also allowed to remove or update their entries when it is necessary.
  • All Application Systems can utilize the lookup functionality of the Registry to find Public Core System Service offerings in the network, otherwise the Orchestrator has to be used.

However, it is worth noting, that within this generation the lookup functionality of Services is integrated within the “orchestration process”. Therefore, in the primary scenario, when an Application System is looking for a Service to consume, it shall ask the Orchestrator System via the Orchestration Service to locate one or more suitable Service Providers and help establish the connection based on metadata submitted in the request. Direct lookups from Application Systems within the network is not advised in this generation, due to security reasons.

However, the lookup of other Application Systems and Services directly is not within the primary use, since access will not be given without the Authorization JWT (JSON Web Token). The use of the TokenGeneration is restricted to the Orchestrator for general System accountability reasons.

This System only provides one Core Service the Service Discovery

There are two use case scenarios connected to the Service Registry.

  • Service registration, de-registration
  • Service Registry querying (lookup)

The register method is used to register services. The services will contain various metadata as well as a physical endpoint. The various parameters are representing the endpoint information that should be registered.

The unregister method is used to unregister service instances that were previously registered in the Registry. The instance parameter is representing the endpoint information that should be removed.

The query method is used to find and translate a symbolic service name into a physical endpoint, for example an IP address and a port. The query parameter is used to request a subset of all the registered services fulfilling the demand of the user of the service. The returned listing contains service endpoints that have been fulfilling the query.

There is another functionality that does not bound to any Services, just an internal part of the Service Registry. There are two optional cleanup tasks within the Service Registry, which can be used to remove old, inactive service offerings. The first task is based on pinging the service provider and if the provider does not respond to the ping, its offered services will be deleted. The second task is based on a feature, called “Time to Live”. Service providers upon registration can provide a timestamp called “end_of_validity” number, which specifies how long the service will be offered by the provider, making the service de-registrations unnecessary, if this task is active. The task is used to remove expired services. The third task is using a feature called "Heartbeat" (Not yet implemented), where the Service provider periodically signals to the Service Registry that it is still alive. When it misses it will be removed. All of these internal tasks can be configured in the application.properties file.

This System can be secured via the HTTPS protocol. If it is started in secure mode, it verifies whether the Application System possesses a proper X.509 identity certificate and whether that certificate is Arrowhead compliant in its making. This certificate structure and creation guidelines ensure:

  • Application System is properly bootstrapped into the Local Cloud
  • The Application System indeed belongs to this Local Cloud
  • The Application System then automatically has the right to register its Services in the Registry.

If these criteria are met, the Application System’s registration or removal message is processed. An Application System can only delete or alter entries that contain the Application System as the Service Provider in the entry.

The Service Registry offers three types of endpoints. Client, Management and Private.

Swagger API documentation is available on: https://<host>:<port>
The base URL for the requests: http://<host>:<port>/serviceregistry

Function URL subpath Method Input Output
Echo /echo GET - OK
Query /query POST ServiceQueryForm ServiceQueryList
Register /register POST ServiceRegistryEntry ServiceRegistryEntry
Unregister /unregister DELETE Address, Port, Service Definition, System Name in query parameters OK

These services can only be used by other core services, therefore they are not part of the public API.

Function URL subpath Method Input Output
Query System /query/system POST System System
Query System By ID /query/system/{id} GET ID System

There endpoints are mainly used by the Management Tool and Cloud Administrators.

Function URL subpath Method Input Output
Get all entries /mgmt/ GET - ServiceRegistryEntryList
Add an entry /mgmt/ POST ServiceRegistryEntry ServiceRegistryEntry
Get an entry by ID /mgmt/{id} GET ServiceID ServiceRegistryEntry
Replace an entry by ID /mgmt/{id} PUT ServiceRegistryEntry ServiceRegistryEntry
Modify an entry by ID /mgmt/{id} PATCH Key value pairs of ServiceRegistryEntry ServiceRegistryEntry
Delete and entry by ID /mgmt/{id} DELETE ServiceRegistryEntryID -
Get grouped view /mgmt/grouped GET - ServiceRegistryGrouped
Get Service Registry Entries by Service Definition /mgmt/servicedef/
{serviceDefinition}
GET ServiceDefinition ServiceRegistryEntryList
Get all services /mgmt/services GET - ServiceDefinitionList
Add a service /mgmt/services POST ServiceDefinition ServiceDefinition
Get a service by ID /mgmt/services/{id} GET ServiceID ServiceDefinition
Replace a service by ID /mgmt/services/(id} PUT Service ServiceDefinition
Modify a service by ID /mgmt/services/{id} PATCH Key value pairs of ServiceDefinition ServiceDefinition
Delete a service by ID /mgmt/services/{id} DELETE ServiceID -
Get all systems /mgmt/systems GET - SystemList
Add a system /mgmt/systems POST System System
Get a system by ID /mgmt/systems/{id} GET SystemID System
Replace a system by ID /mgmt/systems/{id} PUT System System
Modify a system by ID /mgmt/systems/{id} PATCH Key value pairs of System System
Delete a system by ID /mgmt/systems/{id} DELETE SystemID -

The following endpoints no longer exist:

  • PUT /mgmt/services
  • PUT /mgmgt/systems
  • GET /serviceregistry/mgmt
  • GET /serviceregistry/mgmt/systemId/{systemId}
  • GET /serviceregistry/mgmt/serviceId/{serviceId}/providers
  • PUT /serviceregistry/mgmt/query
  • PUT /serviceregistry/mgmt/subscriptions/{id}
  • PUT /serviceregistry/support/remove
  • DELETE /serviceregistry/mgmt/all
GET /serviceregistry/echo

Returns a "Got it" message with the purpose of testing the core service availability.

Note: 4.1.2 version: GET /serviceregistry

POST /serviceregistry/query

Returns ServiceQueryList that fits the input specification. Mainly used by the Orchestrator.

ServiceQueryForm is the input

{
 "serviceDefinitionRequirement": "string",
 "interfaceRequirements": [
   "string"
 ],
 "securityRequirements": [
   "NOT_SECURE"
 ],
 "metadataRequirements": {
   "additionalProp1": "string",
   "additionalProp2": "string",
   "additionalProp3": "string"
 },
 "versionRequirement": 0,
 "maxVersionRequirement": 0,
 "minVersionRequirement": 0,
 "pingProviders": true
}
Field Description Mandatory
serviceDefinitionRequirement Name of the required Service Definition yes
interfaceRequirements List of required interfaces no
securityRequirements List of required security settings no
metadataRequirements Key value pairs of required metadata no
versionRequirement Required version number no
maxVersionRequirement Maximum version requirement no
minVersionRequirement Minimum version requirement no
pingProviders Return only available providers no

Note: Valid interfaceRequirements name pattern: protocol-SECURE or INSECURE format. (e.g.: HTTPS-SECURE-JSON)

Note: Possible values for securityRequirements are:

  • NOT_SECURE
  • CERTIFICATE
  • TOKEN
  • not defined, if you don't want to filter on security type

Returns a ServiceQueryList

{
 "serviceQueryData": [
   {
     "id": 0,
     "serviceDefinition": {
       "id": 0,
       "serviceDefinition": "string",
       "createdAt": "string",
       "updatedAt": "string"
     },
     "provider": {
       "id": 0,
       "systemName": "string",
       "address": "string",
       "port": 0,
       "authenticationInfo": "string",
       "createdAt": "string",
       "updatedAt": "string"
     },
     "serviceUri": "string",
     "endOfValidity": "string",
     "secure": "NOT_SECURE",
     "metadata": {
       "additionalProp1": "string",
       "additionalProp2": "string",
       "additionalProp3": "string"
     },
     "version": 0,
     "interfaces": [
       {
         "id": 0,
         "interfaceName": "string",
         "createdAt": "string",
         "updatedAt": "string"
       }
     ],
     "createdAt": "string",
     "updatedAt": "string"
    }
 ],
 "unfilteredHits": 0
}
Field Description
serviceQueryData The array of objects containing the data
id ID of the entry, used by the Orchestrator
serviceDefinition Service Definition
provider Provider System
serviceUri URI of the Service
endOfValidity Service is available until this timestamp.
secure Security info
metadata Metadata
version Version of the Service
interfaces List of interfaces the Service supports
createdAt Creation date of the entry
updatedAt When the entry was last updated
unfilteredHits Number of hits based on service definition without filters

Note: 4.1.2 version: PUT /serviceregistry /query
This version always returned the records in an array of JSON objects. The response did not contain any information about the unfiltered hits and the objects did not contain any modification related timestamp information. Interfaces and metadata were bound to the service definition and security type was not defined. Service Registry object did contain an "udp" flag beside the interface definition.

POST /serviceregistry/register

Registers a service. A provider is allowed to register only its own services. It means that provider system name and certificate common name must match for successful registration.

ServiceRegistryEntry is the input

{
  "serviceDefinition": "string",
  "providerSystem": {
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    "string"
  ]
}
Field Description Mandatory
serviceDefinition Service Definition yes
providerSystem Provider System yes
serviceUri URI of the service yes
endOfValidity Service is available until this timestamp no
secure Security info no
metadata Metadata no
version Version of the Service no
interfaces List of the interfaces the Service supports yes

Note: Valid interfaces name pattern: protocol-SECURE or INSECURE format. (e.g.: HTTPS-SECURE-JSON)

Note: Possible values for secure are:

  • NOT_SECURE (default value if field is not defined)
  • CERTIFICATE
  • TOKEN

Returns a ServiceRegistryEntry

{
  "id": 0,
  "serviceDefinition": {
    "id": 0,
    "serviceDefinition": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "provider": {
    "id": 0,
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    {
      "id": 0,
      "interfaceName": "string",
      "createdAt": "string",
      "updatedAt": "string"
 }
 ],
 "createdAt": "string",
 "updatedAt": "string"
}
Field Description
id ID of the ServiceRegistryEntry
serviceDefinition Service Definition
provider Provider System
serviceUri URI of the Service
endOfValidity Service is available until this timestamp
secure Security info
metadata Metadata
version Version of the Service
interfaces List of the interfaces the Service supports
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: POST /serviceregistry/register
In this version interfaces and metadata were bound to the service definition and security type was not defined at all. The response object did not contain any modification related time stamp information. Service Registry object did contain an "udp" flag beside the interface definition.

DELETE /serviceregistry/unregister

Removes a registered service. A provider is allowed to unregister only its own services. It means that provider system name and certificate common name must match for successful unregistration.

Query params:

Field Description Mandatory
service_definition Name of the service to be removed yes
system_name Name of the Provider yes
address Address of the Provider yes
port Port of the Provider yes

Note: 4.1.2 version: PUT /serviceregistry/remove
In this version the input was a JSON object with many unnecessary information.

POST /serviceregistry/query/system

This service can only be used by other core services, therefore is not part of the public API.

GET /serviceregistry/system/{id}

This service can only be used by other core services, therefore is not part of the public API.

Get all entries

GET /serviceregistry/mgmt

Returns a list of Service Registry records. If page and item_per_page are not defined, returns all records.

Query params:

Field Description Mandatory
page zero based page index no
item_per_page maximum number of items returned no
sort_field sorts by the given column no
direction direction of sorting no

Note: Default value for sort_field is id. All possible values are:

  • id
  • createdAt
  • updatedAt

Note: Default value for direction is ASC. All possible values are:

  • ASC
  • DESC

Returns a ServiceRegistryEntryList

{
  "data": [
    {
      "id": 0,
      "serviceDefinition": {
        "id": 0,
        "serviceDefinition": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "provider": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "serviceUri": "string",
      "endOfValidity": "string",
      "secure": "NOT_SECURE",
      "metadata": {
        "additionalProp1": "string",
        "additionalProp2": "string",
        "additionalProp3": "string"
      },
      "version": 0,
      "interfaces": [
        {
          "id": 0,
          "interfaceName": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "count": 0
}
Field Description
data Array of ServiceRegistryEntry
id ID of the ServiceRegistryEntry
serviceDefinition Service Definition
provider Provider System
serviceUri URI of the Service
endOfValidity Service is available until this timestamp
secure Security info
metadata Metadata
version Version of the Service
interfaces List of the interfaces the Service supports
createdAt Creation date of the entry
updatedAt When the entry was last updated
count Number of entries found

Note 4.1.2 version: GET /serviceregistry/mgmt/all
This version always returned the records in an array of JSON objects. The objects did not contain any modification related time stamp information. Interfaces and metadata were bound to the service definition and security type was not defined. Service Registry object did contain an "udp" flag beside the interface definition.

POST /serviceregistry/mgmt

Creates service registry record and returns the newly created record.

ServiceRegistryEntry is the input

{
  "serviceDefinition": "string",
  "providerSystem": {
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    "string"
 ]
}
Field Description Mandatory
serviceDefinition Service Definition yes
providerSystem Provider System yes
serviceUri URI of the Service no
endOfValidity Service is available until this timestamp. no
secure Security info no
metadata Metadata no
version Version of the Service no
interfaces List of the interfaces the Service supports yes

Note: Valid interfaces name pattern: protocol-SECURE or INSECURE format. (e.g.: HTTPS-SECURE-JSON)

Note: Possible values for secure are:

  • NOT_SECURE (default value if field is not defined)
  • CERTIFICATE
  • TOKEN

Returns a ServiceRegistryEntry

{
  "id": 0,
  "serviceDefinition": {
    "id": 0,
    "serviceDefinition": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "provider": {
    "id": 0,
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    {
      "id": 0,
      "interfaceName": "string",
      "createdAt": "string",
      "updatedAt": "string"
 }
 ],
 "createdAt": "string",
 "updatedAt": "string"
}
Field Description
id ID of the ServiceRegistryEntry
serviceDefinition Service Definition
provider Provider System
serviceUri URI of the Service
endOfValidity Service is available until this timestamp
secure Security info
metadata Metadata
version Version of the Service
interfaces List of the interfaces the Service supports
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: POST /serviceregistry/support/register
It was available for clients as well, not only for the system operator of the local cloud. Interfaces and metadata were bound to the service definition and security type was not defined at all. The response object did not contain any modification related time stamp information. Service Registry object did contain an "udp" flag beside the interface definition.

GET /serviceregistry/mgmt/{id}

Returns the Service Registry Entry specified by the ID path parameter.

Returns a ServiceRegistryEntry

{
  "id": 0,
  "serviceDefinition": {
    "id": 0,
    "serviceDefinition": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "provider": {
    "id": 0,
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    {
      "id": 0,
      "interfaceName": "string",
      "createdAt": "string",
      "updatedAt": "string"
 }
 ],
 "createdAt": "string",
 "updatedAt": "string"
}
Field Description
id ID of the ServiceRegistryEntry
serviceDefinition Service Definition
provider Provider System
serviceUri URI of the Service
endOfValidity Service is available until this timestamp
secure Security info
metadata Metadata
version Version of the Service
interfaces List of the interfaces the Service supports
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: GET /serviceregistry/mgmt/id/{id}
In this version interfaces and metadata were bound to the service definition and security type was not defined at all. The response object did not contain any modification related time stamp information. Service Registry object did contain an "udp" flag beside the interface definition.

PUT /serviceregistry/mgmt/{id}

Updates and returns the modified service registry record specified by the id path parameter. Not defined fields are going to be updated to "null" value.

ServiceRegistryEntry is the input

{
  "serviceDefinition": "string",
  "providerSystem": {
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    "string"
 ]
}
Field Description Mandatory
serviceDefinition Service Definition yes
providerSystem Provider System yes
serviceUri URI of the Service no
endOfValidity Service is available until this timestamp. no
secure Security info no
metadata Metadata no
version Version of the Service no
interfaces List of the interfaces the Service supports yes

Note: Valid interfaces name pattern: protocol-SECURE or INSECURE format. (e.g.: HTTPS-SECURE-JSON)

Note: Possible values for secure are:

  • NOT_SECURE (default value if field is not defined)
  • CERTIFICATE
  • TOKEN

Returns a ServiceRegistryEntry

{
  "id": 0,
  "serviceDefinition": {
    "id": 0,
    "serviceDefinition": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "provider": {
    "id": 0,
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    {
      "id": 0,
      "interfaceName": "string",
      "createdAt": "string",
      "updatedAt": "string"
 }
 ],
 "createdAt": "string",
 "updatedAt": "string"
}
Field Description
id ID of the ServiceRegistryEntry
serviceDefinition Service Definition
provider Provider System
serviceUri URI of the Service
endOfValidity Service is available until this timestamp
secure Security info
metadata Metadata
version Version of the Service
interfaces List of the interfaces the Service supports
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: PUT /serviceregistry/mgmt/update/{id}
In this version interfaces and metadata were bound to the service definition and security type was not defined at all. The response object did not contain any modification related time stamp information. Service Registry object did contain an "udp" flag beside the interface definition.

PATCH /serviceregistry/mgmt/{id}

Updates and returns the modified service registry record specified by the id path parameter. Not defined fields are NOT going to be updated.

ServiceRegistryEntry is the input

{
  "serviceDefinition": "string",
  "providerSystem": {
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    "string"
 ]
}
Field Description Mandatory
serviceDefinition Service Definition no
providerSystem Provider System no
serviceUri URI of the Service no
endOfValidity Service is available until this timestamp. no
secure Security info no
metadata Metadata no
version Version of the Service no
interfaces List of the interfaces the Service supports no

Note: Valid interfaces name pattern: protocol-SECURE or INSECURE format. (e.g.: HTTPS-SECURE-JSON)

Note: Possible values for secure are:

  • NOT_SECURE (default value if field is not defined)
  • CERTIFICATE
  • TOKEN

Returns a ServiceRegistryEntry

{
  "id": 0,
  "serviceDefinition": {
    "id": 0,
    "serviceDefinition": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "provider": {
    "id": 0,
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "serviceUri": "string",
  "endOfValidity": "string",
  "secure": "NOT_SECURE",
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "version": 0,
  "interfaces": [
    {
      "id": 0,
      "interfaceName": "string",
      "createdAt": "string",
      "updatedAt": "string"
 }
 ],
 "createdAt": "string",
 "updatedAt": "string"
}
Field Description
id ID of the ServiceRegistryEntry
serviceDefinition Service Definition
provider Provider System
serviceUri URI of the Service
endOfValidity Service is available until this timestamp
secure Security info
metadata Metadata
version Version of the Service
interfaces List of the interfaces the Service supports
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: Not existed

DELETE /serviceregistry/mgmt/{id}

Remove the service registry record specified by the id path parameter.

Note: 4.1.2 version: DELETE /serviceregistry/mgmt/{entryId}
This version did return Http 404 (not found), when record was not found by id.

GET /serviceregistry/mgmt/grouped

Returns all Service Registry Entries grouped for the purpose of the Management Tools' Service Registry view:

  • autoCompleteData
  • servicesGroupedByServiceDefinitionAndInterface
  • servicesGroupedBySystems

Returns a ServiceRegistryGrouped

{
  "autoCompleteData": {
    "interfaceList": [
      {
        "id": 0,
        "value": "string"
      }
    ],
    "serviceList": [
      {
        "id": 0,
        "value": "string"
      }
    ],
    "systemList": [
      {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      }
    ]
  },
  "servicesGroupedByServiceDefinitionAndInterface": [
    {
      "serviceDefinitionId": 0,
      "serviceDefinition": "string",
      "interfaceName": "string",
      "providerServices": [
        {
          "id": 0,
          "serviceDefinition": {
            "id": 0,
            "serviceDefinition": "string",
            "createdAt": "string",
            "updatedAt": "string"
          },
          "provider": {
            "id": 0,
            "systemName": "string",
            "address": "string",
            "port": 0,
            "authenticationInfo": "string",
            "createdAt": "string",
            "updatedAt": "string"
          },
          "serviceUri": "string",
          "endOfValidity": "string",
          "secure": "NOT_SECURE",
          "metadata": {
            "additionalProp1": "string",
            "additionalProp2": "string",
            "additionalProp3": "string"
          },
          "version": 0,
          "interfaces": [
            {
              "id": 0,
              "interfaceName": "string",
              "createdAt": "string",
              "updatedAt": "string"
            }
          ],
          "createdAt": "string",
          "updatedAt": "string"
        }
      ]
    }
  ],
  "servicesGroupedBySystems": [
    {
      "systemId": 0,
      "systemName": "string",
      "address": "string",
      "port": 0,
      "services": [
        {
          "id": 0,
          "serviceDefinition": {
            "id": 0,
            "serviceDefinition": "string",
            "createdAt": "string",
            "updatedAt": "string"
          },
          "provider": {
            "id": 0,
            "systemName": "string",
            "address": "string",
            "port": 0,
            "authenticationInfo": "string",
            "createdAt": "string",
            "updatedAt": "string"
          },
          "serviceUri": "string",
          "endOfValidity": "string",
          "secure": "NOT_SECURE",
          "metadata": {
            "additionalProp1": "string",
            "additionalProp2": "string",
            "additionalProp3": "string"
          },
          "version": 0,
          "interfaces": [
            {
              "id": 0,
              "interfaceName": "string",
              "createdAt": "string",
              "updatedAt": "string"
            }
          ],
          "createdAt": "string",
          "updatedAt": "string"
        }
      ]
    }
  ]
}
Field Description
autocompleteData Data for the Management Tools' autocomplete engine
servicesGroupedByServiceDefinitionAndInterface Services Grouped by Service Definition and Interface
servicesGroupedBySystems Services Grouped By Systems

Note: 4.1.2 version: Not existed

GET /serviceregistry/mgmt/servicedef/{serviceDefinition}

Returns a list of Service Registry records specified by the serviceDefinition path parameter. If page and item_per_page are not defined, returns all records.

Query params:

Field Description Mandatory
page zero based page index no
item_per_page maximum number of items returned no
sort_field sorts by the given column no
direction direction of sorting no

Note: Default value for sort_field is id. All possible values are:

  • id
  • createdAt
  • updatedAt

Note: Default value for direction is ASC. All possible values are:

  • ASC
  • DESC

Returns a ServiceRegistryEntryList

{
  "data": [
    {
      "id": 0,
      "serviceDefinition": {
        "id": 0,
        "serviceDefinition": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "provider": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "serviceUri": "string",
      "endOfValidity": "string",
      "secure": "NOT_SECURE",
      "metadata": {
        "additionalProp1": "string",
        "additionalProp2": "string",
        "additionalProp3": "string"
      },
      "version": 0,
      "interfaces": [
        {
          "id": 0,
          "interfaceName": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "count": 0
}
Field Description
data Array of ServiceRegistryEntry
id ID of the ServiceRegistryEntry
serviceDefinition Service Definition
provider Provider System
serviceUri URI of the Service
endOfValidity Service is available until this timestamp
secure Security info
metadata Metadata
version Version of the Service
interfaces List of the interfaces the Service supports
createdAt Creation date of the entry
updatedAt When the entry was last updated
count Number of entries found

Note: 4.1.2 version: GET /serviceregistry/mgmt/servicedef/{serviceDefinition}
This version always returned the records in an array of JSON objects. The objects did not contain any modification related time stamp information. Interfaces and metadata were bound to the service definition and security type was not defined. Service Registry object did contain an "udp" flag beside the interface definition.

GET /serviceregistry/mgmt/services

Returns a list of Service Definition records. If page and item_per_page are not defined, returns all records.

Query params:

Field Description Mandatory
page zero based page index no
item_per_page maximum number of items returned no
sort_field sorts by the given column no
direction direction of sorting no

Note: Default value for sort_field is id. All possible values are:

  • id
  • createdAt
  • updatedAt

Note: Default value for direction is ASC. All possible values are:

  • ASC
  • DESC

Returns a ServiceDefinitionList

{
  "data": [
    {
      "id": 0,
      "serviceDefinition": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
   ],
  "count": 0
}

Note: 4.1.2 version: GET /mgmt/services
This version always returned the records in an array of JSON objects. The objects did not contain any modification related time stamp information. Interfaces and metadata were part of the service definition entity.

POST /serviceregistry/mgmt/services

Creates service definition record and returns the newly created record.

Service Definition is the input

{
  "serviceDefinition": "string"
}
Field Description Mandatory
serviceDefinition Service Definition yes

Returns a Service Definition

{
  "id": 0,
  "serviceDefinition": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
serviceDefinition Service Definition
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: POST /mgmt/services
In this version interfaces and metadata were part of the service definition entity. The response object did not contain any modification related time stamp information.

GET /serviceregistry/mgmt/services/{id}

Returns the Service Definition record specified by the id path parameter.

Returns a ServiceDefinition

{
  "id": 0,
  "serviceDefinition": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
serviceDefinition Service Definition
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: GET /mgmt/services/{serviceId} The response object did not contain any modification related time stamp information. Interfaces and metadata were part of the service definition entity.

PUT /serviceregistry/mgmt/services/{id}

Updates and returns the modified Service Definition record specified by the ID path parameter.

ServiceDefinition is the input

{
  "serviceDefinition": "string"
}
Field Description Mandatory
serviceDefinition Service Definition yes

Returns a ServiceDefinition

{
  "id": 0,
  "serviceDefinition": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
serviceDefinition Service Definition
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: PUT /mgmt/services/{serviceId}
The response object did not contain any modification related time stamp information. Interfaces and metadata were part of the service definition entity.

PATCH /serviceregistry/mgmt/services/{id}

Updates and returns the modified Service Definition record specified by the ID path parameter.

ServiceDefinition is the input

{
  "serviceDefinition": "string"
}
Field Description Mandatory
serviceDefinition Service Definition no

Returns a ServiceDefinition

{
  "id": 0,
  "serviceDefinition": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
serviceDefinition Service Definition
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: Not existed

DELETE /serviceregistry/mgmt/services/{id}

Removes the service definition record specified by the id path parameter.

Note: 4.1.2 version: DELETE /mgmt/services/{serviceId} This version did return HTTP 404 (Not Found), when record was not found by ID.

GET /serviceregistry/mgmt/systems

Returns a list of System records. If page and item_per_page are not defined, it returns all records.

Query params:

Field Description Mandatory
page zero based page index no
item_per_page maximum number of items returned no
sort_field sorts by the given column no
direction direction of sorting no

Note: Default value for sort_field is id. All possible values are:

  • id
  • createdAt
  • updatedAt

Note: Default value for direction is ASC. All possible values are:

  • ASC
  • DESC

Returns a SystemList

{
  "data": [
    {
      "id": 0,
      "systemName": "string",
      "address": "string",
      "port": 0,
      "authenticationInfo": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "count": 0
}
Field Description
id ID of the entry
systemName Name of the System
address Address
port Port
authenticationInfo Authentication Info
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: GET /mgmt/systems This version always returned the records in an array of JSON objects. The objects did not contain any modification related time stamp information.

POST /serviceregistry/mgmt/systems

Creates a System record and returns the newly created record.

System is the input

{
  "systemName": "string",
  "address": "string",
  "port": 0,
  "authenticationInfo": "string"
}
Field Description Mandatory
systemName Name of the System yes
address Address yes
port Port yes
authenticationInfo Authentication Info no

Returns a System

{
  "id": 0,
  "systemName": "string",
  "address": "string",
  "port": 0,
  "authenticationInfo": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
systemName Name of the System
address Address
port Port
authenticationInfo Authentication Info
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: POST /mgmt/systems
In this version the response object did not contain any modification related time stamp information.

GET /serviceregistry/systems/{id}

Returns the System record specified by the ID path parameter.

Returns a System

{
  "id": 0,
  "systemName": "string",
  "address": "string",
  "port": 0,
  "authenticationInfo": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
systemName Name of the System
address Address
port Port
authenticationInfo Authentication Info
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: GET /mgmt/systems/{systemId}
In this version the response object did not contain any modification related time stamp information

PUT /serviceregistry/mgmt/systems/{id}

Updates and returns the modified System record specified by the ID path parameter. Not defined fields are going to be updated to "null" value.

System is the input

{
  "systemName": "string",
  "address": "string",
  "port": 0,
  "authenticationInfo": "string"
}
Field Description Mandatory
systemName Name of the System yes
address Address yes
port Port yes
authenticationInfo Authentication Info no

Returns a System

{
  "id": 0,
  "systemName": "string",
  "address": "string",
  "port": 0,
  "authenticationInfo": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
systemName Name of the System
address Address
port Port
authenticationInfo Authentication Info
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: PUT /mgmt/systems/{systemId}
In this version the response object did not contain any modification related time stamp information.

PATCH /serviceregistry/mgmt/systems/{id}

Updates and returns the modified system record specified by the id path parameter. Not defined fields are going to be NOT updated.

System is the input

{
  "systemName": "string",
  "address": "string",
  "port": 0,
  "authenticationInfo": "string"
}
Field Description Mandatory
systemName Name of the System no
address Address no
port Port no
authenticationInfo Authentication Info no

Returns a System

{
  "id": 0,
  "systemName": "string",
  "address": "string",
  "port": 0,
  "authenticationInfo": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
systemName Name of the System
address Address
port Port
authenticationInfo Authentication Info
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: Not existed

DELETE /serviceregistry/mgmt/systems/{id}

Removes the System record specified by the ID path parameter.

Note: 4.1.2 version: DELETE /mgmt/systems/{systemId}
This version did return HTTP 404 (Not Found), when record was not found by ID.

This System has:

  • A database that describes which Application System can consume what Services from which Application Systems (Intra-Cloud access rules)
  • A database that describes which other Local Clouds are allowed to consume what Services from this Cloud (Inter-Cloud authorization rules)

The purpose of this System is therefore to:

  • Provide AuthorizationControl Service (both intra- and inter-Cloud)
  • Provide a TokenGeneration Service for allowing session control within the Local Cloud

The purpose of the TokenGeneration functionality is to create session control functionality through the Core Sytems. The output is JSON Web Token that validates the Service Consumer system when it will try to access the Service from another Application System (Service Provider). This Token shall be primarily generated during the orchestration process and only released to the Service Consumer when all affected Core Systems are notified and agreed to the to-be-established Service connection.

This System (in line with all core Systems) utilizes the X.509 certificate Common Name naming convention in order to work.

This System only provides two Core Services:

  • AuthorizationControl
  • TokenGeneration

There are two use cases connected to the Authorization System:

  • Check access rights (invoke the AuthorizationControl)
  • Generate an access token (the Orchestrator invokes the TokenGeneration)

Authorization Cross check Figure 1. Authorization crosscheck during orchestration process

The AuthorizationControl Service provides 2 different interfaces to look up authorization rights:

  • Intra-Cloud authorization: defines an authorization right between a consumer and provider system in the same Local Cloud for a specific Service.
  • Inter-Cloud authorization: defines an authorization right for an external Cloud to consume a specific Service from the Local Cloud.

The Authorization offers three types of endpoints. Client, Management and Private.

Swagger API documentation is available on: https://<host>:<port>
The base URL for the requests: http://<host>:<port>/authorization

Function URL subpath Method Input Output
Echo /echo GET - OK
Get Public Key /publickey GET - Public Key

<a name="authorization_endpoints_private />

Private endpoint description

These services can only be used by other core services, therefore they are not part of the public API.

Function URL subpath Method Input Output
Check an Intercloud rule /intercloud/check POST InterCloudRule OK
Check an Intracloud rule /intracloud/check POST IntraCloudRule OK
Generate Token /token POST TokenRule TokenData

There endpoints are mainly used by the Management Tool and Cloud Administrators.

Function URL subpath Method Input Output
Get all Intracloud rules /mgmt/intracloud GET - IntracloudRuleList
Add Intercloud rules /mgmt/intracloud POST IntracloudRuleForm IntracloudRuleList
Get an Intercloud rule by ID /mgmt/intracloud/{id} GET IntracloudRuleID IntracloudRule
Delete an Intracloud rule by ID /mgmt/intracloud/{id} DELETE IntracloudRuleID -
Get all Intercloud rules /mgmt/intercloud GET - IntercloudRuleList
Add Intercloud rules /mgmt/intercloud POST IntercloudRuleForm IntercloudRule
Get an Intercloud rule by ID /mgmt/intercloud/{id} GET IntercloudRuleID IntercloudRule
Delete an Intercloud rule by ID /mgmt/intercloud/{id} DELETE IntercloudRuleID -

The following services no longer exist:

  • GET /authorization/mgmt/intracloud/systemId/{systemId}/services
  • GET /authorization/mgmt/intracloud/systemId/{systemId}
  • GET /authorization/mgmt/intracloud/servicedef/{serviceDefinition}
  • PUT /authorization/mgmt/intracloud
  • DELETE /authorization/mgmt/intracloud/systemId/{systemId}
  • GET /authorization/mgmt/intercloud/operator/{operator}/cloudname/{cloudName}/services
  • GET /authorization/mgmt/intercloud/operator/{operator}/cloudname/{cloudName}
  • GET /authorization/mgmt/intercloud/servicedef/{serviceDefinition}
  • PUT /authorization/mgmt/intercloud
  • DELETE /authorization/mgmt/intercloud/operator/{operator}/cloudname/{cloudName}
GET /authorization/echo

Returns a "Got it" message with the purpose of testing the core service availability.

Note: 4.1.2 version: GET /authorization/mgmt It was only available for the system operator of the local cloud.

GET /authorization/publickey

Returns the public key of the Authorization core service as a (Base64 encoded) text. This service is necessary for providers if they want to utilize the token based security.

Note:: 4.1.2 version: GET /authorization/mgmt/publickey It was only available for system operator of the local cloud.

POST /authorization/intercloud/check

TODO

POST /authorization/intracloud/check

TODO

POST /authorization/token

TODO

###Get all Intracloud rules

GET /authorization/mgmt/intracloud

Returns a list of Intracloud authorization records. If page and item_per_page are not defined, it returns all records.

Query params:

Field Description Mandatory
page zero based page index no
item_per_page maximum number of items returned no
sort_field sorts by the given column no
direction direction of sorting no

Note: Default value for sort_field is id. All possible values are:

  • id
  • createdAt
  • updatedAt

Note: Default value for direction is ASC. All possible values are:

  • ASC
  • DESC

Returns an IntracloudRuleList

{
  "count": 0,
  "data": [
    {
      "id": 0,
      "consumerSystem": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "providerSystem": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "serviceDefinition": {
        "id": 0,
        "serviceDefinition": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "interfaces": [
        {
          "id": 0,
          "interfaceName": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}
Field Description
count number of records
data An array containing the data
id ID of the entry
consumerSystem Consumer System
providerSystem Provider System
serviceDefinition Service Definition
interfaces Interfaces
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: Authorization is a little stricter than before: the access now depends on specific interfaces besides provider and service.

Note: 4.1.2 version: GET /authorization/mgmt/intracloud
This version always returned all records in an array of JSON objects. The objects did not contain any time information. Access didn't depend on interface.

POST /authorization/mgmt/intracloud

Creates Intracloud authorization rules and returns the newly created rules.

<a name="datastructures_intracloud_rule"_form />

IntracloudRuleForm is the input

{
  "consumerId": 0,
  "providerIds": [
    0
  ],
  "interfaceIds": [
    0
  ],
  "serviceDefinitionIds": [
    0
  ]
}

Note: This is a very general stucture, however only two possible combinations are allowed:

  • One provider ID, one interface ID with multiple service definition IDs
  • Multiple provider IDs, multiple interface IDs with one service definition ID.
Field Description Mandatory
consumerId ID of the consumer yes
providerIds IDs of the providers yes
interfaceIds IDs of the interfaces yes
serviceDefinitionIds IDs of the Service Definitions yes

Returns an IntracloudRuleList

{
  "count": 0,
  "data": [
    {
      "id": 0,
      "consumerSystem": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "providerSystem": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "serviceDefinition": {
        "id": 0,
        "serviceDefinition": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "interfaces": [
        {
          "id": 0,
          "interfaceName": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}
Field Description
count number of records
data An array containing the data
id ID of the entry
consumerSystem Consumer System
providerSystem Provider System
serviceDefinition Service Definition
interfaces Interfaces
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: POST /authorization/mgmt/intracloud
This version required whole JSON objects as consumer, provider and service instead of ids and didn't use interface restrictions.

GET /authorization/mgmt/intracloud/{id}

Returns the Intracloud related authorization rule specified by the ID path parameter.

Returns an IntraCloudRule

{
  "id": 0,
  "consumerSystem": {
    "id": 0,
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "providerSystem": {
    "id": 0,
    "systemName": "string",
    "address": "string",
    "port": 0,
    "authenticationInfo": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "serviceDefinition": {
    "id": 0,
    "serviceDefinition": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "interfaces": [
    {
      "id": 0,
      "interfaceName": "string",
      "createdAt": "string",
      "updatedAt": "string"
    }
  ],
  "createdAt": "string",
  "updatedAt": "string"
}
Field Description
id ID of the entry
consumerSystem Consumer System
providerSystem Provider System
serviceDefinition Service Definition
interfaces Interfaces
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: GET /authorization/mgmt/intracloud/{id}
The returned structure did not contain time information and interface restrictions

DELETE /authorization/mgmt/intracloud/{id}

Removes the Intracloud related authorization rule specified by the ID path parameter.

Note: 4.1.2 version: DELETE /authorization/mgmt/intracloud/{id} Same the new version.

GET authorization/mgmt/intercloud

Returns a list of Intercloud related authorization rules. If page and item_per_page are not defined, it returns all records.

Query params:

Field Description Mandatory
page zero based page index no
item_per_page maximum number of items returned no
sort_field sorts by the given column no
direction direction of sorting no

Note: Default value for sort_field is id. All possible values are:

  • id
  • createdAt
  • updatedAt

Note: Default value for direction is ASC. All possible values are:

  • ASC
  • DESC

Returns an IntercloudRuleList

{
  "count": 0,
  "data": [
    {
      "id": 0,
      "cloud": {
        "id": 0,
        "operator": "string",
        "name": "string",
        "authenticationInfo": "string",
        "secure": true,
        "neighbor": true,
        "ownCloud": true,
        "createdAt": "string",
        "updatedAt": "string"
      },
      "provider": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "serviceDefinition": {
        "id": 0,
        "serviceDefinition": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "interfaces": [
        {
          "id": 0,
          "interfaceName": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}
Field Description
count number of records
data An array containing the data
id ID of the entry
cloud Cloud information
provider Provider System
serviceDefinition Service Definition
interfaces Interfaces
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: Authorization is stricter than before: the access now depends on specific provider and interfaces besides service.

Note: 4.1.2 version: GET /authorization/mgmt/intercloud
This version always returned all records in an array of JSON objects. The objects did not contain any time information. Access didn't depend on provider and interface.

POST /authorization/mgmt/intercloud

Creates Intercloud authorization rules and returns the newly created rules.

Input is IntercloudRuleForm

{
  "cloudId": 0,
  "providerIdList": [
    0
  ],
  "interfaceIdList": [
    0
  ],
  "serviceDefinitionIdList": [
    0
  ]
}

Note: This is a very general stucture, however only two possible combinations are allowed:

  • One provider ID, one interface ID with multiple service definition IDs
  • Multiple provider IDs, multiple interface IDs with one service definition ID.
Field Description Mandatory
cloudId ID of the Cloud yes
providerIds IDs of the providers yes
interfaceIds IDs of the interfaces yes
serviceDefinitionIds IDs of the Service Definitions yes

Returns an IntercloudRuleList

{
  "count": 0,
  "data": [
    {
      "id": 0,
      "cloud": {
        "id": 0,
        "operator": "string",
        "name": "string",
        "authenticationInfo": "string",
        "secure": true,
        "neighbor": true,
        "ownCloud": true,
        "createdAt": "string",
        "updatedAt": "string"
      },
      "provider": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "serviceDefinition": {
        "id": 0,
        "serviceDefinition": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "interfaces": [
        {
          "id": 0,
          "interfaceName": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}
Field Description
count number of records
data An array containing the data
id ID of the entry
cloud Cloud information
provider Provider System
serviceDefinition Service Definition
interfaces Interfaces
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: POST /authorization/mgmt/intercloud
This version required whole JSON objects as consumer cloud and service instead of ids and didn't use provider and interface restrictions.

GET /authorization/mgmt/intercloud/{id}

Returns the Intercloud related authorization record specified by the ID path parameter.

Returns an IntercloudRuleList

{
  "count": 0,
  "data": [
    {
      "id": 0,
      "cloud": {
        "id": 0,
        "operator": "string",
        "name": "string",
        "authenticationInfo": "string",
        "secure": true,
        "neighbor": true,
        "ownCloud": true,
        "createdAt": "string",
        "updatedAt": "string"
      },
      "provider": {
        "id": 0,
        "systemName": "string",
        "address": "string",
        "port": 0,
        "authenticationInfo": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "serviceDefinition": {
        "id": 0,
        "serviceDefinition": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "interfaces": [
        {
          "id": 0,
          "interfaceName": "string",
          "createdAt": "string",
          "updatedAt": "string"
        }
      ],
      "createdAt": "string",
      "updatedAt": "string"
    }
  ]
}
Field Description
count number of records
data An array containing the data
id ID of the entry
cloud Cloud information
provider Provider System
serviceDefinition Service Definition
interfaces Interfaces
createdAt Creation date of the entry
updatedAt When the entry was last updated

Note: 4.1.2 version: GET /authorization/mgmt/intercloud/{id}
The returned structure did not contain time information, provider and interface restrictions.

Removes the Intercloud related authorization record specified by the ID path parameter.

Note: 4.1.2 version: DELETE /authorization/mgmt/intercloud/{id} Same as the new version.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages