From 2befc7f8c34536a1f2b9856aa5ab46fbee1313b3 Mon Sep 17 00:00:00 2001
From: Idoia Murua <idoia.murua@tecnalia.com>
Date: Wed, 24 Apr 2024 16:58:45 +0200
Subject: [PATCH] README initialization

---
 README.md                 |   99 +-
 usagecontrol_openapi.yaml | 3220 +++++++++++++++++++++++++++++++++++++
 2 files changed, 3243 insertions(+), 76 deletions(-)
 create mode 100644 usagecontrol_openapi.yaml

diff --git a/README.md b/README.md
index 9e35b79..ee408e9 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,39 @@
-# Usagecontrol
+# UsageControl
 
+The UsageControl can be installed via docker compose. The composition includes:
+- A PostgreSQL database.
+- The UsageControl with its HTTP API.
 
+The HTTP API offered by the UsageControl is specified [here](./usagecontrol_openapi.yaml).
 
-## Getting started
+## Installation requirements
+UJSE requires the following ACROSS components to be already installed:
 
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
+- [Transparency Dashboard Backend](https://git.code.tecnalia.com/across/public/citizen-front-end/transparency-dashboard/transparency-dashboard-ui): to get the list of given consents by each citizen and the status of them.
+- [Service Catalogue](https://git.code.tecnalia.com/across/public/data-harmonization-and-connectors/service-registry/Public_Service_Catalog_ENG)
+- An Identity Server, as Keycloak, installed and configured with its corresponding realm and clients.
 
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
+To install the project, you need to have Docker and Docker-compose installed on your machine. If you don't have it, you can install it by following the instructions on the official Docker website.
 
-## Add your files
 
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
+## Identity Server configuration
+A client named `usagecontrol` and with the `citizen` role within the realm to be used for all the Across clients must be configured in the Identity Server.
 
-```
-cd existing_repo
-git remote add origin https://git.code.tecnalia.com/across/private/citizen-data-ownership-and-usage-control/usage-control/usagecontrol.git
-git branch -M main
-git push -uf origin main
-```
-
-## Integrate with your tools
-
-- [ ] [Set up project integrations](https://git.code.tecnalia.com/across/private/citizen-data-ownership-and-usage-control/usage-control/usagecontrol/-/settings/integrations)
-
-## Collaborate with your team
-
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
-
-## Test and Deploy
-
-Use the built-in continuous integration in GitLab.
-
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
-
-***
-
-# Editing this README
-
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
-
-## Suggestions for a good README
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
-
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
 
 ## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
+Clone this repository:
 
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
-
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
-
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
+``` bash
+git clone https://git.code.tecnalia.com/across/public/citizen-data-ownership-and-usage-control/usage-control/Usagecontrol.git
+```
 
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
+Create and start the containers specified in the docker-compose.yml file:
 
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
+``` bash
+docker-compose up -d
+```
 
 ## License
-For open source projects, say how it is licensed.
 
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
+Read the [license file](./LICENSE) for more information.
+
diff --git a/usagecontrol_openapi.yaml b/usagecontrol_openapi.yaml
new file mode 100644
index 0000000..d2ab508
--- /dev/null
+++ b/usagecontrol_openapi.yaml
@@ -0,0 +1,3220 @@
+{
+  "openapi": "3.0.1",
+  "info": {
+    "title": "Across Usage Control",
+    "description": "Api Documentation",
+    "termsOfService": "",
+    "contact": {
+      "email": ""
+    },
+    "license": {
+      "name": "Apache 2.0",
+      "url": "http://www.apache.org/licenses/LICENSE-2.0"
+    },
+    "version": "1.0"
+  },
+  "servers": [
+    {
+      "url": "/across/AcrossDataUsage/1.0"
+    }
+  ],
+  "security": [
+    {
+      "bearer-jwt": [
+        "read",
+        "write"
+      ]
+    },
+    {
+      "openid-connect": [
+        "read",
+        "write"
+      ]
+    }
+  ],
+  "paths": {
+    "/api/rest/v1/usage-policy/{id}": {
+      "put": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "update",
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "format": "uuid"
+            }
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/UsagePolicy"
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "$ref": "#/components/schemas/UsagePolicy"
+                }
+              }
+            }
+          }
+        }
+      },
+      "delete": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "delete",
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "format": "uuid"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        }
+      }
+    },
+    "/datausage/enforce": {
+      "post": {
+        "tags": [
+          "enforce-usage-controller"
+        ],
+        "summary": "usageControlUse",
+        "operationId": "usageControlUseUsingPOST",
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/UsagePolicyDtoUsagePolicy"
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "404": {
+            "description": "Not Found",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "object"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Unauthorized",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "object"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "object"
+                }
+              }
+            }
+          },
+          "201": {
+            "description": "Created",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "object"
+                }
+              }
+            }
+          },
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "object"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/datausage/admin/resetNumAccess": {
+      "post": {
+        "tags": [
+          "admin-controller"
+        ],
+        "summary": "resetNumAccess",
+        "operationId": "resetNumAccess",
+        "parameters": [
+          {
+            "name": "serviceId",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "userId",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "404": {
+            "description": "Not Found",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Unauthorized",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "201": {
+            "description": "Created",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "200": {
+            "description": "OK",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          }
+        },
+        "security": [
+          {
+            "bearer-jwt": []
+          },
+          {
+            "openid-connect": []
+          }
+        ]
+      }
+    },
+    "/api/rest/v1/usage-policy": {
+      "post": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "save",
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/UsagePolicyDtoPost"
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "$ref": "#/components/schemas/UsagePolicy"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/datausage/admin/access": {
+      "get": {
+        "tags": [
+          "admin-controller"
+        ],
+        "summary": "getAccess",
+        "operationId": "getAccess",
+        "parameters": [
+          {
+            "name": "userId",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "serviceId",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "404": {
+            "description": "Not Found",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Unauthorized",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "200": {
+            "description": "OK",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden",
+            "content": {
+              "text/plain": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          }
+        },
+        "security": [
+          {
+            "bearer-jwt": []
+          },
+          {
+            "openid-connect": []
+          }
+        ]
+      }
+    },
+    "/api/rest/v1/usage-policy/user": {
+      "get": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "findByUserId",
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/UsagePolicy"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/api/rest/v1/usage-policy/user/{userId}/service/check-data-usage-policies": {
+      "get": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "checkDataUsagePolicies",
+        "parameters": [
+          {
+            "name": "userId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string",
+              "format": "uuid"
+            }
+          },
+          {
+            "name": "serviceId",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "object"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/api/rest/v1/usage-policy/user/available-services": {
+      "get": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "getAvailableServices",
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/ServiceCatalog"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/api/rest/v1/usage-policy/user/available-services/count": {
+      "get": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "hasServicesWithConsentAndWithoutUsagePolicy",
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "boolean"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/api/rest/v1/usage-policy/test": {
+      "get": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "testService",
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "string"
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/api/rest/v1/usage-policy/service": {
+      "get": {
+        "tags": [
+          "usage-policies-controller"
+        ],
+        "operationId": "findByServiceId",
+        "parameters": [
+          {
+            "name": "serviceId",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/UsagePolicy"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/api/rest/v1/policy-rule": {
+      "get": {
+        "tags": [
+          "policy-rule-controller"
+        ],
+        "operationId": "findAll",
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/PolicyRule"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/api/rest/v1/event-log/user": {
+      "get": {
+        "tags": [
+          "event-logs-controller"
+        ],
+        "operationId": "findByUserId_1",
+        "responses": {
+          "200": {
+            "description": "OK",
+            "content": {
+              "*/*": {
+                "schema": {
+                  "type": "array",
+                  "items": {
+                    "$ref": "#/components/schemas/EventLog"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "PolicyRule": {
+        "required": [
+          "enabled",
+          "name"
+        ],
+        "type": "object",
+        "properties": {
+          "id": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "name": {
+            "type": "string"
+          },
+          "enabled": {
+            "type": "boolean"
+          }
+        }
+      },
+      "UsagePolicy": {
+        "required": [
+          "createdOn",
+          "serviceId",
+          "title",
+          "userId"
+        ],
+        "type": "object",
+        "properties": {
+          "id": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "userId": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "serviceId": {
+            "type": "string"
+          },
+          "title": {
+            "type": "string"
+          },
+          "description": {
+            "type": "string"
+          },
+          "usagePolicyValues": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/UsagePolicyValue"
+            }
+          },
+          "createdOn": {
+            "type": "string"
+          }
+        }
+      },
+      "UsagePolicyValue": {
+        "required": [
+          "policyRuleId",
+          "usagePolicyId"
+        ],
+        "type": "object",
+        "properties": {
+          "id": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "usagePolicyId": {
+            "$ref": "#/components/schemas/UsagePolicy"
+          },
+          "policyRuleId": {
+            "$ref": "#/components/schemas/PolicyRule"
+          },
+          "value": {
+            "type": "string"
+          }
+        }
+      },
+      "UsagePolicyDtoUsagePolicy": {
+        "type": "object",
+        "properties": {
+          "userId": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "serviceId": {
+            "type": "string"
+          },
+          "values": {
+            "uniqueItems": true,
+            "type": "array",
+            "items": {
+              "type": "object"
+            }
+          }
+        }
+      },
+      "UsagePolicyDtoPost": {
+        "type": "object",
+        "properties": {
+          "serviceId": {
+            "type": "string"
+          },
+          "title": {
+            "type": "string"
+          },
+          "description": {
+            "type": "string"
+          },
+          "usagePolicyValues": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/UsagePolicyValue"
+            }
+          }
+        }
+      },
+      "AccessLog": {
+        "type": "object",
+        "properties": {
+          "requestAttributesEnabled": {
+            "type": "boolean"
+          }
+        }
+      },
+      "Adapter": {
+        "type": "object",
+        "properties": {
+          "domain": {
+            "type": "string"
+          }
+        }
+      },
+      "Catalina": {
+        "type": "object",
+        "properties": {
+          "await": {
+            "type": "boolean"
+          },
+          "configFile": {
+            "type": "string"
+          },
+          "parentClassLoader": {
+            "type": "object",
+            "properties": {
+              "parent": {
+                "type": "object",
+                "properties": {
+                  "name": {
+                    "type": "string"
+                  },
+                  "unnamedModule": {
+                    "type": "object",
+                    "properties": {
+                      "layer": {
+                        "type": "object"
+                      },
+                      "name": {
+                        "type": "string"
+                      },
+                      "descriptor": {
+                        "type": "object",
+                        "properties": {
+                          "open": {
+                            "type": "boolean"
+                          },
+                          "automatic": {
+                            "type": "boolean"
+                          }
+                        }
+                      },
+                      "annotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "declaredAnnotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "named": {
+                        "type": "boolean"
+                      },
+                      "packages": {
+                        "uniqueItems": true,
+                        "type": "array",
+                        "items": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  },
+                  "defaultAssertionStatus": {
+                    "type": "boolean",
+                    "writeOnly": true
+                  },
+                  "registeredAsParallelCapable": {
+                    "type": "boolean"
+                  },
+                  "definedPackages": {
+                    "type": "array",
+                    "items": {
+                      "type": "object",
+                      "properties": {
+                        "name": {
+                          "type": "string"
+                        },
+                        "annotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "declaredAnnotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "sealed": {
+                          "type": "boolean"
+                        },
+                        "specificationTitle": {
+                          "type": "string"
+                        },
+                        "specificationVersion": {
+                          "type": "string"
+                        },
+                        "specificationVendor": {
+                          "type": "string"
+                        },
+                        "implementationTitle": {
+                          "type": "string"
+                        },
+                        "implementationVersion": {
+                          "type": "string"
+                        },
+                        "implementationVendor": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "name": {
+                "type": "string"
+              },
+              "unnamedModule": {
+                "type": "object",
+                "properties": {
+                  "layer": {
+                    "type": "object"
+                  },
+                  "name": {
+                    "type": "string"
+                  },
+                  "descriptor": {
+                    "type": "object",
+                    "properties": {
+                      "open": {
+                        "type": "boolean"
+                      },
+                      "automatic": {
+                        "type": "boolean"
+                      }
+                    }
+                  },
+                  "annotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "declaredAnnotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "named": {
+                    "type": "boolean"
+                  },
+                  "packages": {
+                    "uniqueItems": true,
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "defaultAssertionStatus": {
+                "type": "boolean",
+                "writeOnly": true
+              },
+              "registeredAsParallelCapable": {
+                "type": "boolean"
+              },
+              "definedPackages": {
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "properties": {
+                    "name": {
+                      "type": "string"
+                    },
+                    "annotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "declaredAnnotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "sealed": {
+                      "type": "boolean"
+                    },
+                    "specificationTitle": {
+                      "type": "string"
+                    },
+                    "specificationVersion": {
+                      "type": "string"
+                    },
+                    "specificationVendor": {
+                      "type": "string"
+                    },
+                    "implementationTitle": {
+                      "type": "string"
+                    },
+                    "implementationVersion": {
+                      "type": "string"
+                    },
+                    "implementationVendor": {
+                      "type": "string"
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "server": {
+            "$ref": "#/components/schemas/Server"
+          },
+          "useShutdownHook": {
+            "type": "boolean"
+          },
+          "useNaming": {
+            "type": "boolean"
+          },
+          "generateCode": {
+            "type": "boolean"
+          },
+          "generatedCodeLocation": {
+            "type": "string",
+            "format": "binary"
+          },
+          "generatedCodePackage": {
+            "type": "string"
+          },
+          "useGeneratedCode": {
+            "type": "boolean"
+          }
+        }
+      },
+      "Channel": {
+        "type": "object",
+        "properties": {
+          "identifier": {
+            "type": "string"
+          },
+          "hoursAvailable": {
+            "type": "string"
+          },
+          "openingHours": {
+            "type": "string"
+          },
+          "type": {
+            "type": "string"
+          }
+        }
+      },
+      "Cluster": {
+        "type": "object",
+        "properties": {
+          "clusterName": {
+            "type": "string"
+          },
+          "container": {
+            "$ref": "#/components/schemas/Container"
+          }
+        }
+      },
+      "CompetentAuthority": {
+        "type": "object",
+        "properties": {
+          "hasAddress": {
+            "type": "string"
+          },
+          "identifier": {
+            "type": "string"
+          },
+          "prefLabel": {
+            "type": "string"
+          },
+          "spatial": {
+            "type": "string"
+          },
+          "title": {
+            "type": "string"
+          }
+        }
+      },
+      "Connector": {
+        "type": "object",
+        "properties": {
+          "state": {
+            "type": "string",
+            "enum": [
+              "NEW",
+              "INITIALIZING",
+              "INITIALIZED",
+              "STARTING_PREP",
+              "STARTING",
+              "STARTED",
+              "STOPPING_PREP",
+              "STOPPING",
+              "STOPPED",
+              "DESTROYING",
+              "DESTROYED",
+              "FAILED"
+            ]
+          },
+          "throwOnFailure": {
+            "type": "boolean"
+          },
+          "domain": {
+            "type": "string"
+          },
+          "service": {
+            "$ref": "#/components/schemas/Service"
+          },
+          "allowTrace": {
+            "type": "boolean"
+          },
+          "asyncTimeout": {
+            "type": "integer",
+            "format": "int64"
+          },
+          "enableLookups": {
+            "type": "boolean"
+          },
+          "xpoweredBy": {
+            "type": "boolean"
+          },
+          "proxyName": {
+            "type": "string"
+          },
+          "proxyPort": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "discardFacades": {
+            "type": "boolean"
+          },
+          "redirectPort": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "scheme": {
+            "type": "string"
+          },
+          "secure": {
+            "type": "boolean"
+          },
+          "maxCookieCount": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "maxParameterCount": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "maxPostSize": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "maxSavePostSize": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "parseBodyMethods": {
+            "type": "string"
+          },
+          "useIPVHosts": {
+            "type": "boolean"
+          },
+          "protocolHandlerClassName": {
+            "type": "string"
+          },
+          "protocolHandler": {
+            "$ref": "#/components/schemas/ProtocolHandler"
+          },
+          "encodedSolidusHandling": {
+            "type": "string"
+          },
+          "useBodyEncodingForURI": {
+            "type": "boolean"
+          },
+          "port": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "protocol": {
+            "type": "string"
+          },
+          "encodedSolidusHandlingInternal": {
+            "type": "string",
+            "enum": [
+              "DECODE",
+              "REJECT",
+              "PASS_THROUGH"
+            ]
+          },
+          "redirectPortWithOffset": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "uriencoding": {
+            "type": "string"
+          },
+          "portWithOffset": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "localPort": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "portOffset": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "uricharset": {
+            "type": "object",
+            "properties": {
+              "registered": {
+                "type": "boolean"
+              }
+            }
+          },
+          "executorName": {
+            "type": "string"
+          },
+          "objectName": {
+            "type": "object",
+            "properties": {
+              "canonicalName": {
+                "type": "string"
+              },
+              "domain": {
+                "type": "string"
+              },
+              "domainLength": {
+                "type": "integer",
+                "format": "int32",
+                "writeOnly": true
+              },
+              "pattern": {
+                "type": "boolean"
+              },
+              "domainPattern": {
+                "type": "boolean"
+              },
+              "propertyPattern": {
+                "type": "boolean"
+              },
+              "propertyListPattern": {
+                "type": "boolean"
+              },
+              "propertyValuePattern": {
+                "type": "boolean"
+              },
+              "keyPropertyList": {
+                "type": "object",
+                "additionalProperties": {
+                  "type": "string"
+                }
+              },
+              "keyPropertyListString": {
+                "type": "string"
+              },
+              "canonicalKeyPropertyListString": {
+                "type": "string"
+              },
+              "mbeanServer": {
+                "type": "object",
+                "properties": {
+                  "classLoaderRepository": {
+                    "type": "object"
+                  },
+                  "mbeanCount": {
+                    "type": "integer",
+                    "format": "int32"
+                  },
+                  "defaultDomain": {
+                    "type": "string"
+                  },
+                  "domains": {
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                },
+                "writeOnly": true
+              }
+            }
+          },
+          "stateName": {
+            "type": "string"
+          }
+        }
+      },
+      "ContactPoint": {
+        "type": "object",
+        "properties": {
+          "email": {
+            "type": "string"
+          },
+          "faxNumber": {
+            "type": "string"
+          },
+          "hoursAvailable": {
+            "type": "string"
+          },
+          "identifier": {
+            "type": "string"
+          },
+          "openingHours": {
+            "type": "string"
+          },
+          "telephone": {
+            "type": "string"
+          }
+        }
+      },
+      "Container": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "type": "string"
+          },
+          "parent": {
+            "$ref": "#/components/schemas/Container"
+          },
+          "logger": {
+            "$ref": "#/components/schemas/Log"
+          },
+          "parentClassLoader": {
+            "type": "object",
+            "properties": {
+              "parent": {
+                "type": "object",
+                "properties": {
+                  "name": {
+                    "type": "string"
+                  },
+                  "unnamedModule": {
+                    "type": "object",
+                    "properties": {
+                      "layer": {
+                        "type": "object"
+                      },
+                      "name": {
+                        "type": "string"
+                      },
+                      "descriptor": {
+                        "type": "object",
+                        "properties": {
+                          "open": {
+                            "type": "boolean"
+                          },
+                          "automatic": {
+                            "type": "boolean"
+                          }
+                        }
+                      },
+                      "annotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "declaredAnnotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "named": {
+                        "type": "boolean"
+                      },
+                      "packages": {
+                        "uniqueItems": true,
+                        "type": "array",
+                        "items": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  },
+                  "defaultAssertionStatus": {
+                    "type": "boolean",
+                    "writeOnly": true
+                  },
+                  "registeredAsParallelCapable": {
+                    "type": "boolean"
+                  },
+                  "definedPackages": {
+                    "type": "array",
+                    "items": {
+                      "type": "object",
+                      "properties": {
+                        "name": {
+                          "type": "string"
+                        },
+                        "annotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "declaredAnnotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "sealed": {
+                          "type": "boolean"
+                        },
+                        "specificationTitle": {
+                          "type": "string"
+                        },
+                        "specificationVersion": {
+                          "type": "string"
+                        },
+                        "specificationVendor": {
+                          "type": "string"
+                        },
+                        "implementationTitle": {
+                          "type": "string"
+                        },
+                        "implementationVersion": {
+                          "type": "string"
+                        },
+                        "implementationVendor": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "name": {
+                "type": "string"
+              },
+              "unnamedModule": {
+                "type": "object",
+                "properties": {
+                  "layer": {
+                    "type": "object"
+                  },
+                  "name": {
+                    "type": "string"
+                  },
+                  "descriptor": {
+                    "type": "object",
+                    "properties": {
+                      "open": {
+                        "type": "boolean"
+                      },
+                      "automatic": {
+                        "type": "boolean"
+                      }
+                    }
+                  },
+                  "annotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "declaredAnnotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "named": {
+                    "type": "boolean"
+                  },
+                  "packages": {
+                    "uniqueItems": true,
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "defaultAssertionStatus": {
+                "type": "boolean",
+                "writeOnly": true
+              },
+              "registeredAsParallelCapable": {
+                "type": "boolean"
+              },
+              "definedPackages": {
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "properties": {
+                    "name": {
+                      "type": "string"
+                    },
+                    "annotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "declaredAnnotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "sealed": {
+                      "type": "boolean"
+                    },
+                    "specificationTitle": {
+                      "type": "string"
+                    },
+                    "specificationVersion": {
+                      "type": "string"
+                    },
+                    "specificationVendor": {
+                      "type": "string"
+                    },
+                    "implementationTitle": {
+                      "type": "string"
+                    },
+                    "implementationVersion": {
+                      "type": "string"
+                    },
+                    "implementationVendor": {
+                      "type": "string"
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "backgroundProcessorDelay": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "realm": {
+            "$ref": "#/components/schemas/Realm"
+          },
+          "pipeline": {
+            "$ref": "#/components/schemas/Pipeline"
+          },
+          "catalinaHome": {
+            "type": "string",
+            "format": "binary"
+          },
+          "logName": {
+            "type": "string"
+          },
+          "mbeanKeyProperties": {
+            "type": "string"
+          },
+          "cluster": {
+            "$ref": "#/components/schemas/Cluster"
+          },
+          "accessLog": {
+            "$ref": "#/components/schemas/AccessLog"
+          },
+          "startStopThreads": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "catalinaBase": {
+            "type": "string",
+            "format": "binary"
+          },
+          "objectName": {
+            "type": "object",
+            "properties": {
+              "canonicalName": {
+                "type": "string"
+              },
+              "domain": {
+                "type": "string"
+              },
+              "domainLength": {
+                "type": "integer",
+                "format": "int32",
+                "writeOnly": true
+              },
+              "pattern": {
+                "type": "boolean"
+              },
+              "domainPattern": {
+                "type": "boolean"
+              },
+              "propertyPattern": {
+                "type": "boolean"
+              },
+              "propertyListPattern": {
+                "type": "boolean"
+              },
+              "propertyValuePattern": {
+                "type": "boolean"
+              },
+              "keyPropertyList": {
+                "type": "object",
+                "additionalProperties": {
+                  "type": "string"
+                }
+              },
+              "keyPropertyListString": {
+                "type": "string"
+              },
+              "canonicalKeyPropertyListString": {
+                "type": "string"
+              },
+              "mbeanServer": {
+                "type": "object",
+                "properties": {
+                  "classLoaderRepository": {
+                    "type": "object"
+                  },
+                  "mbeanCount": {
+                    "type": "integer",
+                    "format": "int32"
+                  },
+                  "defaultDomain": {
+                    "type": "string"
+                  },
+                  "domains": {
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                },
+                "writeOnly": true
+              }
+            }
+          },
+          "domain": {
+            "type": "string"
+          },
+          "state": {
+            "type": "string",
+            "enum": [
+              "NEW",
+              "INITIALIZING",
+              "INITIALIZED",
+              "STARTING_PREP",
+              "STARTING",
+              "STARTED",
+              "STOPPING_PREP",
+              "STOPPING",
+              "STOPPED",
+              "DESTROYING",
+              "DESTROYED",
+              "FAILED"
+            ]
+          },
+          "stateName": {
+            "type": "string"
+          }
+        }
+      },
+      "ContextTransaction": {
+        "type": "object"
+      },
+      "CredentialHandler": {
+        "type": "object"
+      },
+      "DataController": {
+        "type": "object",
+        "properties": {
+          "hasAddress": {
+            "type": "string"
+          },
+          "hasContact": {
+            "type": "string"
+          },
+          "email": {
+            "type": "string"
+          },
+          "operatorName": {
+            "type": "string"
+          },
+          "organizationName": {
+            "type": "string"
+          },
+          "piiController": {
+            "type": "string"
+          },
+          "telephone": {
+            "type": "string"
+          }
+        }
+      },
+      "Datamapping": {
+        "type": "object",
+        "properties": {
+          "conceptId": {
+            "type": "string"
+          },
+          "name": {
+            "type": "string"
+          },
+          "property": {
+            "type": "string"
+          },
+          "required": {
+            "type": "boolean"
+          },
+          "type": {
+            "type": "string"
+          }
+        }
+      },
+      "Dataset": {
+        "type": "object",
+        "properties": {
+          "identifier": {
+            "type": "string"
+          },
+          "dataMapping": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/Datamapping"
+            }
+          },
+          "datasetSchema": {
+            "$ref": "#/components/schemas/DatasetSchema"
+          },
+          "dataStructureSpecification": {
+            "type": "string"
+          },
+          "description": {
+            "type": "array",
+            "items": {
+              "type": "object"
+            }
+          },
+          "distribution": {
+            "type": "array",
+            "items": {
+              "type": "object"
+            }
+          }
+        }
+      },
+      "DatasetSchema": {
+        "type": "object",
+        "properties": {
+          "context": {
+            "type": "string"
+          },
+          "id": {
+            "type": "string"
+          },
+          "type": {
+            "type": "string"
+          }
+        }
+      },
+      "Description": {
+        "type": "object",
+        "properties": {
+          "description": {
+            "type": "string"
+          },
+          "descriptionUrl": {
+            "type": "string"
+          },
+          "iconUrl": {
+            "type": "string"
+          },
+          "locale": {
+            "type": "string"
+          },
+          "title": {
+            "type": "string"
+          }
+        }
+      },
+      "DescriptionInfo": {
+        "type": "object",
+        "properties": {
+          "description": {
+            "type": "string"
+          },
+          "title": {
+            "type": "string"
+          },
+          "locale": {
+            "type": "string"
+          },
+          "keyword": {
+            "type": "array",
+            "items": {
+              "type": "object"
+            }
+          }
+        }
+      },
+      "Engine": {
+        "type": "object",
+        "properties": {
+          "service": {
+            "$ref": "#/components/schemas/Service"
+          },
+          "jvmRoute": {
+            "type": "string"
+          },
+          "defaultHost": {
+            "type": "string"
+          },
+          "name": {
+            "type": "string"
+          },
+          "parent": {
+            "$ref": "#/components/schemas/Container"
+          },
+          "logger": {
+            "$ref": "#/components/schemas/Log"
+          },
+          "parentClassLoader": {
+            "type": "object",
+            "properties": {
+              "parent": {
+                "type": "object",
+                "properties": {
+                  "name": {
+                    "type": "string"
+                  },
+                  "unnamedModule": {
+                    "type": "object",
+                    "properties": {
+                      "layer": {
+                        "type": "object"
+                      },
+                      "name": {
+                        "type": "string"
+                      },
+                      "descriptor": {
+                        "type": "object",
+                        "properties": {
+                          "open": {
+                            "type": "boolean"
+                          },
+                          "automatic": {
+                            "type": "boolean"
+                          }
+                        }
+                      },
+                      "annotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "declaredAnnotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "named": {
+                        "type": "boolean"
+                      },
+                      "packages": {
+                        "uniqueItems": true,
+                        "type": "array",
+                        "items": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  },
+                  "defaultAssertionStatus": {
+                    "type": "boolean",
+                    "writeOnly": true
+                  },
+                  "registeredAsParallelCapable": {
+                    "type": "boolean"
+                  },
+                  "definedPackages": {
+                    "type": "array",
+                    "items": {
+                      "type": "object",
+                      "properties": {
+                        "name": {
+                          "type": "string"
+                        },
+                        "annotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "declaredAnnotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "sealed": {
+                          "type": "boolean"
+                        },
+                        "specificationTitle": {
+                          "type": "string"
+                        },
+                        "specificationVersion": {
+                          "type": "string"
+                        },
+                        "specificationVendor": {
+                          "type": "string"
+                        },
+                        "implementationTitle": {
+                          "type": "string"
+                        },
+                        "implementationVersion": {
+                          "type": "string"
+                        },
+                        "implementationVendor": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "name": {
+                "type": "string"
+              },
+              "unnamedModule": {
+                "type": "object",
+                "properties": {
+                  "layer": {
+                    "type": "object"
+                  },
+                  "name": {
+                    "type": "string"
+                  },
+                  "descriptor": {
+                    "type": "object",
+                    "properties": {
+                      "open": {
+                        "type": "boolean"
+                      },
+                      "automatic": {
+                        "type": "boolean"
+                      }
+                    }
+                  },
+                  "annotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "declaredAnnotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "named": {
+                    "type": "boolean"
+                  },
+                  "packages": {
+                    "uniqueItems": true,
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "defaultAssertionStatus": {
+                "type": "boolean",
+                "writeOnly": true
+              },
+              "registeredAsParallelCapable": {
+                "type": "boolean"
+              },
+              "definedPackages": {
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "properties": {
+                    "name": {
+                      "type": "string"
+                    },
+                    "annotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "declaredAnnotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "sealed": {
+                      "type": "boolean"
+                    },
+                    "specificationTitle": {
+                      "type": "string"
+                    },
+                    "specificationVersion": {
+                      "type": "string"
+                    },
+                    "specificationVendor": {
+                      "type": "string"
+                    },
+                    "implementationTitle": {
+                      "type": "string"
+                    },
+                    "implementationVersion": {
+                      "type": "string"
+                    },
+                    "implementationVendor": {
+                      "type": "string"
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "backgroundProcessorDelay": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "realm": {
+            "$ref": "#/components/schemas/Realm"
+          },
+          "pipeline": {
+            "$ref": "#/components/schemas/Pipeline"
+          },
+          "catalinaHome": {
+            "type": "string",
+            "format": "binary"
+          },
+          "logName": {
+            "type": "string"
+          },
+          "mbeanKeyProperties": {
+            "type": "string"
+          },
+          "cluster": {
+            "$ref": "#/components/schemas/Cluster"
+          },
+          "accessLog": {
+            "$ref": "#/components/schemas/AccessLog"
+          },
+          "startStopThreads": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "catalinaBase": {
+            "type": "string",
+            "format": "binary"
+          },
+          "objectName": {
+            "type": "object",
+            "properties": {
+              "canonicalName": {
+                "type": "string"
+              },
+              "domain": {
+                "type": "string"
+              },
+              "domainLength": {
+                "type": "integer",
+                "format": "int32",
+                "writeOnly": true
+              },
+              "pattern": {
+                "type": "boolean"
+              },
+              "domainPattern": {
+                "type": "boolean"
+              },
+              "propertyPattern": {
+                "type": "boolean"
+              },
+              "propertyListPattern": {
+                "type": "boolean"
+              },
+              "propertyValuePattern": {
+                "type": "boolean"
+              },
+              "keyPropertyList": {
+                "type": "object",
+                "additionalProperties": {
+                  "type": "string"
+                }
+              },
+              "keyPropertyListString": {
+                "type": "string"
+              },
+              "canonicalKeyPropertyListString": {
+                "type": "string"
+              },
+              "mbeanServer": {
+                "type": "object",
+                "properties": {
+                  "classLoaderRepository": {
+                    "type": "object"
+                  },
+                  "mbeanCount": {
+                    "type": "integer",
+                    "format": "int32"
+                  },
+                  "defaultDomain": {
+                    "type": "string"
+                  },
+                  "domains": {
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                },
+                "writeOnly": true
+              }
+            }
+          },
+          "domain": {
+            "type": "string"
+          },
+          "state": {
+            "type": "string",
+            "enum": [
+              "NEW",
+              "INITIALIZING",
+              "INITIALIZED",
+              "STARTING_PREP",
+              "STARTING",
+              "STARTED",
+              "STOPPING_PREP",
+              "STOPPING",
+              "STOPPED",
+              "DESTROYING",
+              "DESTROYED",
+              "FAILED"
+            ]
+          },
+          "stateName": {
+            "type": "string"
+          }
+        }
+      },
+      "Log": {
+        "type": "object",
+        "properties": {
+          "infoEnabled": {
+            "type": "boolean"
+          },
+          "debugEnabled": {
+            "type": "boolean"
+          },
+          "errorEnabled": {
+            "type": "boolean"
+          },
+          "fatalEnabled": {
+            "type": "boolean"
+          },
+          "traceEnabled": {
+            "type": "boolean"
+          },
+          "warnEnabled": {
+            "type": "boolean"
+          }
+        }
+      },
+      "Mapper": {
+        "type": "object",
+        "properties": {
+          "defaultHostName": {
+            "type": "string",
+            "writeOnly": true
+          }
+        }
+      },
+      "NamingResourcesImpl": {
+        "type": "object",
+        "properties": {
+          "state": {
+            "type": "string",
+            "enum": [
+              "NEW",
+              "INITIALIZING",
+              "INITIALIZED",
+              "STARTING_PREP",
+              "STARTING",
+              "STARTED",
+              "STOPPING_PREP",
+              "STOPPING",
+              "STOPPED",
+              "DESTROYING",
+              "DESTROYED",
+              "FAILED"
+            ]
+          },
+          "throwOnFailure": {
+            "type": "boolean"
+          },
+          "domain": {
+            "type": "string"
+          },
+          "container": {
+            "type": "object"
+          },
+          "transaction": {
+            "$ref": "#/components/schemas/ContextTransaction"
+          },
+          "objectName": {
+            "type": "object",
+            "properties": {
+              "canonicalName": {
+                "type": "string"
+              },
+              "domain": {
+                "type": "string"
+              },
+              "domainLength": {
+                "type": "integer",
+                "format": "int32",
+                "writeOnly": true
+              },
+              "pattern": {
+                "type": "boolean"
+              },
+              "domainPattern": {
+                "type": "boolean"
+              },
+              "propertyPattern": {
+                "type": "boolean"
+              },
+              "propertyListPattern": {
+                "type": "boolean"
+              },
+              "propertyValuePattern": {
+                "type": "boolean"
+              },
+              "keyPropertyList": {
+                "type": "object",
+                "additionalProperties": {
+                  "type": "string"
+                }
+              },
+              "keyPropertyListString": {
+                "type": "string"
+              },
+              "canonicalKeyPropertyListString": {
+                "type": "string"
+              },
+              "mbeanServer": {
+                "type": "object",
+                "properties": {
+                  "classLoaderRepository": {
+                    "type": "object"
+                  },
+                  "mbeanCount": {
+                    "type": "integer",
+                    "format": "int32"
+                  },
+                  "defaultDomain": {
+                    "type": "string"
+                  },
+                  "domains": {
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                },
+                "writeOnly": true
+              }
+            }
+          },
+          "stateName": {
+            "type": "string"
+          }
+        }
+      },
+      "Obligation": {
+        "type": "object",
+        "properties": {
+          "activity": {
+            "type": "string"
+          },
+          "event": {
+            "type": "string"
+          }
+        }
+      },
+      "Organization": {
+        "type": "object",
+        "properties": {
+          "businessType": {
+            "type": "string"
+          },
+          "orgName": {
+            "type": "string"
+          },
+          "orgUrl": {
+            "type": "string"
+          },
+          "required": {
+            "type": "boolean"
+          }
+        }
+      },
+      "PersonalDataHandling": {
+        "type": "object",
+        "properties": {
+          "collectionMethod": {
+            "type": "string"
+          },
+          "collectionOperator": {
+            "type": "string"
+          },
+          "description": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/Description"
+            }
+          },
+          "hasContext": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "hasPersonalDataCategory": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "hasSector": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "legalBasis": {
+            "type": "string"
+          },
+          "obligations": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/Obligation"
+            }
+          },
+          "policyRef": {
+            "type": "string"
+          },
+          "processingCategories": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "purposeCategory": {
+            "type": "string"
+          },
+          "purposeId": {
+            "type": "string"
+          },
+          "purposeName": {
+            "type": "string"
+          },
+          "recipients": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "requiredDatasets": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "shareWith": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/Organization"
+            }
+          },
+          "storage": {
+            "$ref": "#/components/schemas/Storage"
+          },
+          "termination": {
+            "type": "string"
+          }
+        }
+      },
+      "Pipeline": {
+        "type": "object",
+        "properties": {
+          "first": {
+            "$ref": "#/components/schemas/Valve"
+          },
+          "basic": {
+            "$ref": "#/components/schemas/Valve"
+          },
+          "valves": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/Valve"
+            }
+          },
+          "asyncSupported": {
+            "type": "boolean"
+          },
+          "container": {
+            "$ref": "#/components/schemas/Container"
+          }
+        }
+      },
+      "ProtocolHandler": {
+        "type": "object",
+        "properties": {
+          "executor": {
+            "type": "object"
+          },
+          "adapter": {
+            "$ref": "#/components/schemas/Adapter"
+          },
+          "utilityExecutor": {
+            "type": "object",
+            "properties": {
+              "shutdown": {
+                "type": "boolean"
+              },
+              "terminated": {
+                "type": "boolean"
+              }
+            }
+          },
+          "aprRequired": {
+            "type": "boolean"
+          },
+          "sendfileSupported": {
+            "type": "boolean"
+          },
+          "desiredBufferSize": {
+            "type": "integer",
+            "format": "int32"
+          }
+        }
+      },
+      "Realm": {
+        "type": "object",
+        "properties": {
+          "credentialHandler": {
+            "$ref": "#/components/schemas/CredentialHandler"
+          },
+          "available": {
+            "type": "boolean"
+          },
+          "container": {
+            "$ref": "#/components/schemas/Container"
+          }
+        }
+      },
+      "Server": {
+        "type": "object",
+        "properties": {
+          "address": {
+            "type": "string"
+          },
+          "port": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "parentClassLoader": {
+            "type": "object",
+            "properties": {
+              "parent": {
+                "type": "object",
+                "properties": {
+                  "name": {
+                    "type": "string"
+                  },
+                  "unnamedModule": {
+                    "type": "object",
+                    "properties": {
+                      "layer": {
+                        "type": "object"
+                      },
+                      "name": {
+                        "type": "string"
+                      },
+                      "descriptor": {
+                        "type": "object",
+                        "properties": {
+                          "open": {
+                            "type": "boolean"
+                          },
+                          "automatic": {
+                            "type": "boolean"
+                          }
+                        }
+                      },
+                      "annotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "declaredAnnotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "named": {
+                        "type": "boolean"
+                      },
+                      "packages": {
+                        "uniqueItems": true,
+                        "type": "array",
+                        "items": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  },
+                  "defaultAssertionStatus": {
+                    "type": "boolean",
+                    "writeOnly": true
+                  },
+                  "registeredAsParallelCapable": {
+                    "type": "boolean"
+                  },
+                  "definedPackages": {
+                    "type": "array",
+                    "items": {
+                      "type": "object",
+                      "properties": {
+                        "name": {
+                          "type": "string"
+                        },
+                        "annotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "declaredAnnotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "sealed": {
+                          "type": "boolean"
+                        },
+                        "specificationTitle": {
+                          "type": "string"
+                        },
+                        "specificationVersion": {
+                          "type": "string"
+                        },
+                        "specificationVendor": {
+                          "type": "string"
+                        },
+                        "implementationTitle": {
+                          "type": "string"
+                        },
+                        "implementationVersion": {
+                          "type": "string"
+                        },
+                        "implementationVendor": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "name": {
+                "type": "string"
+              },
+              "unnamedModule": {
+                "type": "object",
+                "properties": {
+                  "layer": {
+                    "type": "object"
+                  },
+                  "name": {
+                    "type": "string"
+                  },
+                  "descriptor": {
+                    "type": "object",
+                    "properties": {
+                      "open": {
+                        "type": "boolean"
+                      },
+                      "automatic": {
+                        "type": "boolean"
+                      }
+                    }
+                  },
+                  "annotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "declaredAnnotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "named": {
+                    "type": "boolean"
+                  },
+                  "packages": {
+                    "uniqueItems": true,
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "defaultAssertionStatus": {
+                "type": "boolean",
+                "writeOnly": true
+              },
+              "registeredAsParallelCapable": {
+                "type": "boolean"
+              },
+              "definedPackages": {
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "properties": {
+                    "name": {
+                      "type": "string"
+                    },
+                    "annotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "declaredAnnotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "sealed": {
+                      "type": "boolean"
+                    },
+                    "specificationTitle": {
+                      "type": "string"
+                    },
+                    "specificationVersion": {
+                      "type": "string"
+                    },
+                    "specificationVendor": {
+                      "type": "string"
+                    },
+                    "implementationTitle": {
+                      "type": "string"
+                    },
+                    "implementationVersion": {
+                      "type": "string"
+                    },
+                    "implementationVendor": {
+                      "type": "string"
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "portWithOffset": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "catalinaBase": {
+            "type": "string",
+            "format": "binary"
+          },
+          "catalinaHome": {
+            "type": "string",
+            "format": "binary"
+          },
+          "globalNamingContext": {
+            "type": "object",
+            "properties": {
+              "nameInNamespace": {
+                "type": "string"
+              },
+              "environment": {
+                "type": "object",
+                "additionalProperties": {
+                  "type": "object"
+                }
+              }
+            }
+          },
+          "catalina": {
+            "$ref": "#/components/schemas/Catalina"
+          },
+          "utilityThreads": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "globalNamingResources": {
+            "$ref": "#/components/schemas/NamingResourcesImpl"
+          },
+          "shutdown": {
+            "type": "string"
+          },
+          "portOffset": {
+            "type": "integer",
+            "format": "int32"
+          },
+          "namingToken": {
+            "type": "object"
+          },
+          "utilityExecutor": {
+            "type": "object",
+            "properties": {
+              "shutdown": {
+                "type": "boolean"
+              },
+              "terminated": {
+                "type": "boolean"
+              }
+            }
+          },
+          "state": {
+            "type": "string",
+            "enum": [
+              "NEW",
+              "INITIALIZING",
+              "INITIALIZED",
+              "STARTING_PREP",
+              "STARTING",
+              "STARTED",
+              "STOPPING_PREP",
+              "STOPPING",
+              "STOPPED",
+              "DESTROYING",
+              "DESTROYED",
+              "FAILED"
+            ]
+          },
+          "stateName": {
+            "type": "string"
+          }
+        }
+      },
+      "Service": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "type": "string"
+          },
+          "container": {
+            "$ref": "#/components/schemas/Engine"
+          },
+          "parentClassLoader": {
+            "type": "object",
+            "properties": {
+              "parent": {
+                "type": "object",
+                "properties": {
+                  "name": {
+                    "type": "string"
+                  },
+                  "unnamedModule": {
+                    "type": "object",
+                    "properties": {
+                      "layer": {
+                        "type": "object"
+                      },
+                      "name": {
+                        "type": "string"
+                      },
+                      "descriptor": {
+                        "type": "object",
+                        "properties": {
+                          "open": {
+                            "type": "boolean"
+                          },
+                          "automatic": {
+                            "type": "boolean"
+                          }
+                        }
+                      },
+                      "annotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "declaredAnnotations": {
+                        "type": "array",
+                        "items": {
+                          "type": "object"
+                        }
+                      },
+                      "named": {
+                        "type": "boolean"
+                      },
+                      "packages": {
+                        "uniqueItems": true,
+                        "type": "array",
+                        "items": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  },
+                  "defaultAssertionStatus": {
+                    "type": "boolean",
+                    "writeOnly": true
+                  },
+                  "registeredAsParallelCapable": {
+                    "type": "boolean"
+                  },
+                  "definedPackages": {
+                    "type": "array",
+                    "items": {
+                      "type": "object",
+                      "properties": {
+                        "name": {
+                          "type": "string"
+                        },
+                        "annotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "declaredAnnotations": {
+                          "type": "array",
+                          "items": {
+                            "type": "object"
+                          }
+                        },
+                        "sealed": {
+                          "type": "boolean"
+                        },
+                        "specificationTitle": {
+                          "type": "string"
+                        },
+                        "specificationVersion": {
+                          "type": "string"
+                        },
+                        "specificationVendor": {
+                          "type": "string"
+                        },
+                        "implementationTitle": {
+                          "type": "string"
+                        },
+                        "implementationVersion": {
+                          "type": "string"
+                        },
+                        "implementationVendor": {
+                          "type": "string"
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "name": {
+                "type": "string"
+              },
+              "unnamedModule": {
+                "type": "object",
+                "properties": {
+                  "layer": {
+                    "type": "object"
+                  },
+                  "name": {
+                    "type": "string"
+                  },
+                  "descriptor": {
+                    "type": "object",
+                    "properties": {
+                      "open": {
+                        "type": "boolean"
+                      },
+                      "automatic": {
+                        "type": "boolean"
+                      }
+                    }
+                  },
+                  "annotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "declaredAnnotations": {
+                    "type": "array",
+                    "items": {
+                      "type": "object"
+                    }
+                  },
+                  "named": {
+                    "type": "boolean"
+                  },
+                  "packages": {
+                    "uniqueItems": true,
+                    "type": "array",
+                    "items": {
+                      "type": "string"
+                    }
+                  }
+                }
+              },
+              "defaultAssertionStatus": {
+                "type": "boolean",
+                "writeOnly": true
+              },
+              "registeredAsParallelCapable": {
+                "type": "boolean"
+              },
+              "definedPackages": {
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "properties": {
+                    "name": {
+                      "type": "string"
+                    },
+                    "annotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "declaredAnnotations": {
+                      "type": "array",
+                      "items": {
+                        "type": "object"
+                      }
+                    },
+                    "sealed": {
+                      "type": "boolean"
+                    },
+                    "specificationTitle": {
+                      "type": "string"
+                    },
+                    "specificationVersion": {
+                      "type": "string"
+                    },
+                    "specificationVendor": {
+                      "type": "string"
+                    },
+                    "implementationTitle": {
+                      "type": "string"
+                    },
+                    "implementationVersion": {
+                      "type": "string"
+                    },
+                    "implementationVendor": {
+                      "type": "string"
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "mapper": {
+            "$ref": "#/components/schemas/Mapper"
+          },
+          "server": {
+            "$ref": "#/components/schemas/Server"
+          },
+          "domain": {
+            "type": "string"
+          },
+          "state": {
+            "type": "string",
+            "enum": [
+              "NEW",
+              "INITIALIZING",
+              "INITIALIZED",
+              "STARTING_PREP",
+              "STARTING",
+              "STARTED",
+              "STOPPING_PREP",
+              "STOPPING",
+              "STOPPED",
+              "DESTROYING",
+              "DESTROYED",
+              "FAILED"
+            ]
+          },
+          "stateName": {
+            "type": "string"
+          }
+        }
+      },
+      "ServiceCatalog": {
+        "type": "object",
+        "properties": {
+          "createdByUserId": {
+            "type": "string"
+          },
+          "hasInfo": {
+            "$ref": "#/components/schemas/ServiceInfo"
+          },
+          "hasServiceInstance": {
+            "$ref": "#/components/schemas/ServiceInstance"
+          },
+          "hasUsageRule": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/UsageRule"
+            }
+          },
+          "identifier": {
+            "type": "string"
+          },
+          "isPersonalDataHandling": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/PersonalDataHandling"
+            }
+          },
+          "isPublicServie": {
+            "type": "boolean"
+          },
+          "issued": {
+            "type": "string"
+          },
+          "serviceIconUrl": {
+            "type": "string"
+          },
+          "status": {
+            "type": "string"
+          },
+          "title": {
+            "type": "string"
+          },
+          "versionInfo": {
+            "type": "string"
+          }
+        }
+      },
+      "ServiceInfo": {
+        "type": "object",
+        "properties": {
+          "description": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/DescriptionInfo"
+            }
+          },
+          "hasChannel": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/Channel"
+            }
+          },
+          "hasCompetentAuthority": {
+            "$ref": "#/components/schemas/CompetentAuthority"
+          },
+          "hasContactPoint": {
+            "$ref": "#/components/schemas/ContactPoint"
+          },
+          "hasInput": {
+            "type": "array",
+            "items": {
+              "type": "object"
+            }
+          },
+          "identifier": {
+            "type": "string"
+          },
+          "isDescribedAt": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "isGroupedBy": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "keyword": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "language": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "processingTime": {
+            "type": "string"
+          },
+          "produces": {
+            "type": "array",
+            "items": {
+              "type": "object"
+            }
+          },
+          "requires": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "sector": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "spatial": {
+            "type": "string"
+          },
+          "status": {
+            "type": "string"
+          },
+          "thematicArea": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          },
+          "title": {
+            "type": "string"
+          },
+          "type": {
+            "type": "array",
+            "items": {
+              "type": "string"
+            }
+          }
+        }
+      },
+      "ServiceInstance": {
+        "type": "object",
+        "properties": {
+          "connector": {
+            "$ref": "#/components/schemas/Connector"
+          },
+          "dataController": {
+            "$ref": "#/components/schemas/DataController"
+          },
+          "dataset": {
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/Dataset"
+            }
+          },
+          "serviceProvider": {
+            "$ref": "#/components/schemas/ServiceProvider"
+          },
+          "serviceUrls": {
+            "$ref": "#/components/schemas/ServiceUrl"
+          }
+        }
+      },
+      "ServiceProvider": {
+        "type": "object",
+        "properties": {
+          "businessId": {
+            "type": "string"
+          },
+          "city": {
+            "type": "string"
+          },
+          "country": {
+            "type": "string"
+          },
+          "email": {
+            "type": "string"
+          },
+          "hasAddress": {
+            "type": "string"
+          },
+          "jurisdiction": {
+            "type": "string"
+          },
+          "name": {
+            "type": "string"
+          },
+          "postalcode": {
+            "type": "string"
+          },
+          "state": {
+            "type": "string"
+          },
+          "telephone": {
+            "type": "string"
+          }
+        }
+      },
+      "ServiceUrl": {
+        "type": "object",
+        "properties": {
+          "libraryDomain": {
+            "type": "string"
+          },
+          "linkingRedirectUri": {
+            "type": "string"
+          },
+          "loginUri": {
+            "type": "string"
+          },
+          "notificationUri": {
+            "type": "string"
+          },
+          "objectionUri": {
+            "type": "string"
+          }
+        }
+      },
+      "Storage": {
+        "type": "object",
+        "properties": {
+          "duration": {
+            "type": "string"
+          },
+          "location": {
+            "type": "string"
+          }
+        }
+      },
+      "UsageRule": {
+        "type": "object",
+        "properties": {
+          "usageId": {
+            "type": "string"
+          },
+          "usageName": {
+            "type": "string"
+          },
+          "usageType": {
+            "type": "string"
+          }
+        }
+      },
+      "Valve": {
+        "type": "object",
+        "properties": {
+          "next": {
+            "$ref": "#/components/schemas/Valve"
+          },
+          "asyncSupported": {
+            "type": "boolean"
+          }
+        }
+      },
+      "EventLog": {
+        "required": [
+          "action",
+          "createdOn",
+          "serviceName",
+          "userId"
+        ],
+        "type": "object",
+        "properties": {
+          "id": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "userId": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "createdOn": {
+            "type": "string"
+          },
+          "serviceName": {
+            "type": "string"
+          },
+          "action": {
+            "type": "string"
+          },
+          "dataName": {
+            "type": "string"
+          },
+          "dataValue": {
+            "type": "string"
+          }
+        }
+      }
+    },
+    "securitySchemes": {
+      "openid-connect": {
+        "type": "openIdConnect",
+        "openIdConnectUrl": "https://idp-security-dev.k8s.across-h2020.eu/realms/eidas-greece/.well-known/openid-configuration"
+      },
+      "bearer-jwt": {
+        "type": "http",
+        "scheme": "bearer",
+        "bearerFormat": "JWT"
+      }
+    }
+  }
+}
\ No newline at end of file
-- 
GitLab