diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000000000000000000000000000000000000..80848532e47d58cc7a4b618f600b438960f9f045 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..e89330a618c137cdaccde46f87923736cc04dfb4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..1f2405bfd38f19242334cdeb83d1575692189c05 --- /dev/null +++ b/.gitignore @@ -0,0 +1,52 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json +speed-measure-plugin*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db +src/assets/config/config.dev.json +src/assets/config/config.prod.json +src/assets/config/config.theming.json +/src/assets/config/theming.scss +/.angular +/.tmp/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..ad803984fe9c6c9ef22c697848a5bfa32caba925 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,40 @@ +include: + - project: osl/code/org.etsi.osl.main + ref: main + file: + - ci-templates/default.yml + - ci-templates/build.yml + rules: + - if: '$CI_COMMIT_REF_NAME == "main"' + + - project: osl/code/org.etsi.osl.main + ref: develop + file: + - ci-templates/default.yml + - ci-templates/build.yml + rules: + - if: '$CI_COMMIT_REF_NAME == "develop"' + + - project: osl/code/org.etsi.osl.main + ref: $CI_COMMIT_REF_NAME + file: + - ci-templates/default.yml + - ci-templates/build.yml + rules: + - if: '$CI_COMMIT_REF_PROTECTED && $CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop"' + + - project: osl/code/org.etsi.osl.main + ref: develop + file: + - ci-templates/default.yml + - ci-templates/build_unprotected.yml + rules: + - if: '$CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop" && !$CI_COMMIT_REF_PROTECTED' + +angular_build: + extends: .angular_build + +docker_build: + extends: .docker_build + needs: + - angular_build diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..cc5b982f31c08d3a792522be32d072b9837fe0a3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +# Stage 0, "build-stage", based on Node.js, to build and compile the frontend +#build is already performed outside docker file + + +# Stage 1, based on Nginx, to have only the compiled app, ready for production with Nginx +FROM nginx:1.19.4 +#Copy ci-dashboard-dist +COPY ./dist/org.etsi.osl.tmf.web/ /usr/share/nginx/html/services +#Copy default nginx configuration +COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/angular.json b/angular.json new file mode 100644 index 0000000000000000000000000000000000000000..b06494c10ef6032d69af2ff090f004028db3fa7b --- /dev/null +++ b/angular.json @@ -0,0 +1,158 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "org.etsi.osl.tmf.web": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "allowedCommonJsDependencies": ["jwt-decode"], + "outputPath": "dist/org.etsi.osl.tmf.web", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "aot": true, + "assets": [ + "src/favicon.ico", + { + "glob": "**/*", + "input": "src/assets/", + "output": "/assets/" + } + ], + "styles": [ + "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", + "node_modules/@fortawesome/fontawesome-free/css/all.min.css", + "src/styles.scss", + "node_modules/ngx-toastr/toastr.css" + ], + "scripts": [ + "node_modules/marked/marked.min.js", + "node_modules/blockly/blockly_compressed.js", + "node_modules/blockly/blocks_compressed.js", + "node_modules/blockly/msg/js/en.js", + "node_modules/blockly/javascript_compressed.js", + "src/assets/blockly/custom_blocks.js", + "src/assets/blockly/custom_java_blocks.js" + ] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "5mb", + "maximumError": "8mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" + } + ] + }, + "development": { + "optimization": false, + "outputHashing": "all", + "sourceMap": true, + "namedChunks": true, + "extractLicenses": false, + "vendorChunk": true, + "buildOptimizer": false, + "budgets": [] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "org.etsi.osl.tmf.web:build" + }, + "configurations": { + "production": { + "browserTarget": "org.etsi.osl.tmf.web:build:production" + }, + "development": { + "browserTarget": "org.etsi.osl.tmf.web:build:development" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "org.etsi.osl.tmf.web:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", + "src/styles.scss" + ], + "scripts": [] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "tsconfig.app.json", + "tsconfig.spec.json", + "e2e/tsconfig.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "org.etsi.osl.tmf.web:serve" + }, + "configurations": { + "production": { + "devServerTarget": "org.etsi.osl.tmf.web:serve:production" + } + } + } + } + } + }, + "defaultProject": "org.etsi.osl.tmf.web" +} \ No newline at end of file diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js new file mode 100644 index 0000000000000000000000000000000000000000..73e4e6806cd6b451dc89181ce574c386c6c837da --- /dev/null +++ b/e2e/protractor.conf.js @@ -0,0 +1,32 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9371e08ee30613c8932ddfdec461f268786c1d7d --- /dev/null +++ b/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('org.etsi.osl.tmf.web app is running!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/e2e/src/app.po.ts b/e2e/src/app.po.ts new file mode 100644 index 0000000000000000000000000000000000000000..b8498c26f24ea7661ad43fda1a000c7b2cef29e3 --- /dev/null +++ b/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText() { + return element(by.css('app-root .content span')).getText() as Promise; + } +} diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..c92199cfd63f1b4f2d57843891fadec9089b3373 --- /dev/null +++ b/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es2018", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000000000000000000000000000000000000..28f05fbb85d969fe01209718b51f090e226ab641 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, './coverage/org.etsi.osl.tmf.web'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/nginx-custom.conf b/nginx-custom.conf new file mode 100644 index 0000000000000000000000000000000000000000..74101ac4ddff33a767e3628dc9fe61113200c6a4 --- /dev/null +++ b/nginx-custom.conf @@ -0,0 +1,24 @@ + # Expires map + map $sent_http_content_type $expires { + default off; + text/html epoch; + text/css max; + application/json max; + application/javascript max; + ~image/ max; + } + + server { + listen 80; + include /etc/nginx/mime.types; + + server_name tmf_web; + location / { + root /usr/share/nginx/html/services; + index index.html index.htm; + try_files $uri $uri/ /index.html =404; + } + + expires $expires; + gzip on; + } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..036fbda074cc84742c6ee22e35a3ec6ca94aa304 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,22027 @@ +{ + "name": "org.etsi.osl.tmf.web", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "org.etsi.osl.tmf.web", + "version": "0.0.0", + "dependencies": { + "@angular/animations": "~13.3.11", + "@angular/cdk": "~13.3.9", + "@angular/common": "~13.3.11", + "@angular/compiler": "~13.3.11", + "@angular/core": "~13.3.11", + "@angular/forms": "~13.3.11", + "@angular/localize": "^13.3.11", + "@angular/material": "~13.3.9", + "@angular/platform-browser": "~13.3.11", + "@angular/platform-browser-dynamic": "~13.3.11", + "@angular/router": "~13.3.11", + "@danielmoncada/angular-datetime-picker": "~13.1.1", + "@danielmoncada/angular-datetime-picker-moment-adapter": "~1.1.0", + "@fortawesome/fontawesome-free": "~5.15.4", + "@fullcalendar/angular": "~5.11.2", + "@fullcalendar/core": "~5.11.2", + "@fullcalendar/daygrid": "~5.11.2", + "@fullcalendar/interaction": "~5.11.2", + "@fullcalendar/list": "~5.11.2", + "@fullcalendar/resource-timeline": "~5.11.2", + "@fullcalendar/timegrid": "~5.11.2", + "@iplab/ngx-file-upload": "~13.0.0", + "@ng-bootstrap/ng-bootstrap": "~11.0.1", + "ang-jsoneditor": "^1.10.5", + "angular-oauth2-oidc": "~13.0.1", + "blockly": "git://github.com/google/blockly.git#6.20210701.0", + "bootstrap": "~4.6.0", + "jsoneditor": "^9.10.0", + "jwt-decode": "~2.2.0", + "ngx-markdown": "~13.1.0", + "ngx-progressbar": "~8.0.0", + "ngx-toastr": "~14.3.0", + "rxjs": "~6.6.7", + "tslib": "~2.0.0", + "zone.js": "~0.11.8" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~13.3.9", + "@angular/cli": "~13.3.9", + "@angular/compiler-cli": "~13.3.11", + "@angular/language-service": "~13.3.11", + "@types/jasmine": "~3.3.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~12.11.1", + "codelyzer": "~6.0.2", + "jasmine-core": "~3.5.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~6.4.1", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage-istanbul-reporter": "~3.0.2", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "~1.5.0", + "ng-swagger-gen": "^2.2.0", + "protractor": "~7.0.0", + "ts-node": "~7.0.0", + "tslint": "~6.1.0", + "typescript": "~4.6.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1303.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "13.3.9", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "13.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1303.9", + "@angular-devkit/build-webpack": "0.1303.9", + "@angular-devkit/core": "13.3.9", + "@babel/core": "7.16.12", + "@babel/generator": "7.16.8", + "@babel/helper-annotate-as-pure": "7.16.7", + "@babel/plugin-proposal-async-generator-functions": "7.16.8", + "@babel/plugin-transform-async-to-generator": "7.16.8", + "@babel/plugin-transform-runtime": "7.16.10", + "@babel/preset-env": "7.16.11", + "@babel/runtime": "7.16.7", + "@babel/template": "7.16.7", + "@discoveryjs/json-ext": "0.5.6", + "@ngtools/webpack": "13.3.9", + "ansi-colors": "4.1.1", + "babel-loader": "8.2.5", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "15.3.0", + "circular-dependency-plugin": "5.2.2", + "copy-webpack-plugin": "10.2.1", + "core-js": "3.20.3", + "critters": "0.0.16", + "css-loader": "6.5.1", + "esbuild-wasm": "0.14.22", + "glob": "7.2.0", + "https-proxy-agent": "5.0.0", + "inquirer": "8.2.0", + "jsonc-parser": "3.0.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.2", + "less-loader": "10.2.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.0", + "mini-css-extract-plugin": "2.5.3", + "minimatch": "3.0.5", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.5", + "postcss-import": "14.0.2", + "postcss-loader": "6.2.1", + "postcss-preset-env": "7.2.3", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.49.9", + "sass-loader": "12.4.0", + "semver": "7.3.5", + "source-map-loader": "3.0.1", + "source-map-support": "0.5.21", + "stylus": "0.56.0", + "stylus-loader": "6.2.0", + "terser": "5.14.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.3.1", + "webpack": "5.70.0", + "webpack-dev-middleware": "5.3.0", + "webpack-dev-server": "4.7.3", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.14.22" + }, + "peerDependencies": { + "@angular/compiler-cli": "^13.0.0 || ^13.3.0-rc.0", + "@angular/localize": "^13.0.0 || ^13.3.0-rc.0", + "@angular/service-worker": "^13.0.0 || ^13.3.0-rc.0", + "karma": "^6.3.0", + "ng-packagr": "^13.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.4.3 <4.7" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.3.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1303.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.1303.9", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "13.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.11.tgz", + "integrity": "sha512-ben+EGXpCrClnIVAAnEQmhQdKmnnqFhMp5BqMxgOslSYBAmCutLA6rBu5vsc8kZcGian1wt+lueF7G1Uk5cGBg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.11", + "jsonc-parser": "3.0.0", + "magic-string": "0.25.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular/animations": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "13.3.11" + } + }, + "node_modules/@angular/animations/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/cdk": { + "version": "13.3.9", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^5.0.0" + }, + "peerDependencies": { + "@angular/common": "^13.0.0 || ^14.0.0-0", + "@angular/core": "^13.0.0 || ^14.0.0-0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cdk/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/cli": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.11.tgz", + "integrity": "sha512-LTuQ1wC/VJiHqHx8nYJCx0EJv1Ek7R6VvP/5vmr/+M8oVvJ2zSh/aIbcPg6BTL0YEfMI6nX41mUjPBUfF0q2OA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@angular-devkit/architect": "0.1303.11", + "@angular-devkit/core": "13.3.11", + "@angular-devkit/schematics": "13.3.11", + "@schematics/angular": "13.3.11", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.3.3", + "ini": "2.0.0", + "inquirer": "8.2.0", + "jsonc-parser": "3.0.0", + "npm-package-arg": "8.1.5", + "npm-pick-manifest": "6.1.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "12.0.3", + "resolve": "1.22.0", + "semver": "7.3.5", + "symbol-observable": "4.0.0", + "uuid": "8.3.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { + "version": "0.1303.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.11.tgz", + "integrity": "sha512-JwrWomNqNGjAeKlqV2pimUFlCgFxQy+Vioz9+QAPIrUkvvjbkQ1dZKOe8Ul8eosb1N3Ln282U6qzOpHKfJ4TOg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.11", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular/common": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "13.3.11", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/common/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/compiler": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + } + }, + "node_modules/@angular/compiler-cli": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.17.2", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.26.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/main-ngcc.js" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "13.3.11", + "typescript": ">=4.4.2 <4.7" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.19.6", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.20.1", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/template": { + "version": "7.18.10", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/magic-string": { + "version": "0.26.7", + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/compiler-cli/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/compiler/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/core": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.11.4" + } + }, + "node_modules/@angular/core/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/forms": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "13.3.11", + "@angular/core": "13.3.11", + "@angular/platform-browser": "13.3.11", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/forms/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/language-service": { + "version": "13.3.11", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + } + }, + "node_modules/@angular/localize": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "@babel/core": "7.17.2", + "glob": "7.2.0", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "13.3.11", + "@angular/compiler-cli": "13.3.11" + } + }, + "node_modules/@angular/localize/node_modules/@babel/core": { + "version": "7.17.2", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.0.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/localize/node_modules/@babel/generator": { + "version": "7.20.1", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/localize/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular/localize/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/material": { + "version": "13.3.9", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^13.0.0 || ^14.0.0-0", + "@angular/cdk": "13.3.9", + "@angular/common": "^13.0.0 || ^14.0.0-0", + "@angular/core": "^13.0.0 || ^14.0.0-0", + "@angular/forms": "^13.0.0 || ^14.0.0-0", + "@angular/platform-browser": "^13.0.0 || ^14.0.0-0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/material/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/platform-browser": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/animations": "13.3.11", + "@angular/common": "13.3.11", + "@angular/core": "13.3.11" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "13.3.11", + "@angular/compiler": "13.3.11", + "@angular/core": "13.3.11", + "@angular/platform-browser": "13.3.11" + } + }, + "node_modules/@angular/platform-browser-dynamic/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/platform-browser/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@angular/router": { + "version": "13.3.11", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "13.3.11", + "@angular/core": "13.3.11", + "@angular/platform-browser": "13.3.11", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/router/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.1", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.12", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.16.8", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.19.6", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { + "version": "7.18.10", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.19.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.19.4", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.18.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.1", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.18.10", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.19.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.16.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.11", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.16.7", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.0.2", + "dev": true, + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@danielmoncada/angular-datetime-picker": { + "version": "13.1.1", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/cdk": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "@angular/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "@angular/core": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0" + } + }, + "node_modules/@danielmoncada/angular-datetime-picker-moment-adapter": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/cdk": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "@angular/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "@angular/core": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "moment": "^2.29.1" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "5.15.4", + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fullcalendar/angular": { + "version": "5.11.2", + "resolved": "https://registry.npmjs.org/@fullcalendar/angular/-/angular-5.11.2.tgz", + "integrity": "sha512-o4IsB3DCS7mcwwXtbaAAWY5WVIT1hSelj/hvFwkr49/ZxmmQYjpjP00Gant0vxvSvu29ZYys/2Gg/ZFVtkkLhQ==", + "dependencies": { + "@fullcalendar/core": "~5.11.2", + "fast-deep-equal": "^3.1.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 6.9.0", + "npm": ">= 3.0.0" + }, + "peerDependencies": { + "@angular/common": "9 - 13", + "@angular/core": "9 - 13" + } + }, + "node_modules/@fullcalendar/common": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/common/-/common-5.11.3.tgz", + "integrity": "sha512-welVwyfQOXQQGfDwBMSfYEPbiO1cPfUD+C7jd3ZoweJR+dSO11ddFugxIQ7dGfABAGZ63oq/+LW9FsmAJezVNg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/common/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/core": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-5.11.3.tgz", + "integrity": "sha512-YUFxCvVJytUwFeXCx4J17kFMM7Ixwn9zBjVRw5NM2bMwgR6VAhSnlZc6yNQSOIy7Hj2TF0vDkO/4JNlTvxyAXw==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "preact": "^10.0.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/core/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/daygrid": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-5.11.3.tgz", + "integrity": "sha512-PCK0y80DRNCzWuC5lGpIWqCgKDvql1ah7rXql5lu+Gn2EeFj15ZQ8diMFjtNIQucEmFaNOXnR05Pgcry1n6Shg==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/daygrid/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/interaction": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-5.11.3.tgz", + "integrity": "sha512-L955wkDjza62K96ndstvYs2Fd4V0kayTDpqW8W7huFG3Ox8MutpLqKAa2SCaTvcNIlWS4oexGQRiQAaJG7u47A==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/interaction/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/list": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-5.11.3.tgz", + "integrity": "sha512-6m9rJPzB5XfJZg+MlgVpha1cI3NUDeyV3GOmojJWZuti05NfDP4f0lzFUul8W7m1DQcjGS2UPRNE8HouA3guEA==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/list/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/premium-common": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/premium-common/-/premium-common-5.11.3.tgz", + "integrity": "sha512-fvMU8OmIReBXoY1iOkRO+zGwbUHA1YB9xtkYbSL3ZeMQ008P0Lj6ar7Jv/lB5XDRgh50TRfFIgfDjdszESAc4w==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/premium-common/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/resource-common": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource-common/-/resource-common-5.11.3.tgz", + "integrity": "sha512-KPsAITCuRI+dg6FoEPnJ+966xMRg5Le66b5cCJ3tDHoswSjUUeu5q46lMsKIblhJM8MCFDVw1pLzDyHZPOhX/w==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/premium-common": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/resource-common/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/resource-timeline": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource-timeline/-/resource-timeline-5.11.3.tgz", + "integrity": "sha512-iYIXZPfqtiN/qizpGDCYlFVssdDTZv6lU/5N1v0FzvGMZfU2LkHLhCkouQeBQHja8ZCbJisy4sK3kUR9mXh2cg==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/premium-common": "~5.11.3", + "@fullcalendar/resource-common": "~5.11.3", + "@fullcalendar/scrollgrid": "~5.11.3", + "@fullcalendar/timeline": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/resource-timeline/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/scrollgrid": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/scrollgrid/-/scrollgrid-5.11.3.tgz", + "integrity": "sha512-JTWDmejPmit65pCoQafUPeplI2+iogXG/3TNbusXMSWYaaMrINHDQiBZ/6EAt46hO2eWyEglmgS0BwVXZNSlGg==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/premium-common": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/scrollgrid/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/timegrid": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-5.11.3.tgz", + "integrity": "sha512-SjIj2ZQ7nTyL1RxZkCPvNbuUQ0xHT+gfYJdUL3FT4bPjPJCxWtQ2CL8hxaeNmVozYYuy0yrGTW5Oup2+9IplbA==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/daygrid": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/timegrid/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@fullcalendar/timeline": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/timeline/-/timeline-5.11.3.tgz", + "integrity": "sha512-nbMJ2gG9mLGUZgGUB2O726u3D8EFxJkZsKA/O1053j5QiQ7C8Wca1rh8UX+bed/s+wmkWwKV5pB0CiOax4f3gQ==", + "dependencies": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/premium-common": "~5.11.3", + "@fullcalendar/scrollgrid": "~5.11.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/timeline/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@iplab/ngx-file-upload": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@iplab/ngx-file-upload/-/ngx-file-upload-13.0.0.tgz", + "integrity": "sha512-noHKyFtbypdx/+97b/xyv72tAD7cMAwdvpwD9/PsJW5BWvWgDZNh6xwMTq5glcf4FXP4o0ygMW7agYcvB9GNIA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^13.0.0", + "@angular/common": "^13.0.0", + "@angular/core": "^13.0.0", + "rxjs": "^6.4.0 || ^7.0.0" + } + }, + "node_modules/@iplab/ngx-file-upload/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@ng-bootstrap/ng-bootstrap": { + "version": "11.0.1", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^13.0.0", + "@angular/core": "^13.0.0", + "@angular/forms": "^13.0.0", + "@angular/localize": "^13.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@ng-bootstrap/ng-bootstrap/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/@ngtools/webpack": { + "version": "13.3.9", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^13.0.0", + "typescript": ">=4.4.3 <4.7", + "webpack": "^5.30.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/git": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "1.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "dev": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/@npmcli/run-script": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^8.2.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/@schematics/angular": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.11.tgz", + "integrity": "sha512-imKBnKYEse0SBVELZO/753nkpt3eEgpjrYkB+AFWF9YfO/4RGnYXDHoH8CFkzxPH9QQCgNrmsVFNiYGS+P/S1A==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.11", + "@angular-devkit/schematics": "13.3.11", + "jsonc-parser": "3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@sphinxxxx/color-conversion": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.12", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "8.4.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.14", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.31", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "3.3.16", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jasmine": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/marked": { + "version": "4.0.7", + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "12.11.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/q": { + "version": "0.0.32", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/selenium-webdriver": { + "version": "3.0.20", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/abab": { + "version": "2.0.6", + "license": "BSD-3-Clause" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/accepts": { + "version": "1.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ace-builds": { + "version": "1.34.1", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.34.1.tgz", + "integrity": "sha512-hwRzr6BkRwsq5A19yA9E36KNNtn0+zESYolnWK3TADJsWVQS0T24nvbgdjXwqk2JEMQXE4PlqAw+ZgprvFtKjw==" + }, + "node_modules/acorn": { + "version": "7.4.1", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "4.3.4", + "license": "MIT", + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "6.4.2", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "6.2.0", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ang-jsoneditor": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/ang-jsoneditor/-/ang-jsoneditor-1.10.5.tgz", + "integrity": "sha512-i4sPCpKUN7DQzNctcJcEoMRex850iGvweaL3AYuFOJUWADyJ3BVMjv3GprUzA+jqURs83NucPFsIE1v1iMT2jA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "*", + "@angular/core": "*", + "jsoneditor": "^9.1.8" + } + }, + "node_modules/ang-jsoneditor/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/angular-oauth2-oidc": { + "version": "13.0.1", + "license": "MIT", + "dependencies": { + "fast-sha256": "^1.3.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=12.0.0", + "@angular/core": ">=12.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/aria-query": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "node_modules/array-equal": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/array-union": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/async": { + "version": "2.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/atob": { + "version": "2.1.2", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "license": "MIT" + }, + "node_modules/axobject-query": { + "version": "2.0.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ast-types-flow": "0.0.7" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "dev": true, + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blocking-proxy": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "blocking-proxy": "built/lib/bin.js" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/blockly": { + "version": "6.20210701.0", + "resolved": "git+ssh://git@github.com/google/blockly.git#64188ae27297b1ca23a3244cc987dfbfc6e98f34", + "license": "Apache-2.0", + "dependencies": { + "jsdom": "15.2.1" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour": { + "version": "3.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/boolean": { + "version": "3.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "license": "BSD-2-Clause" + }, + "node_modules/browserslist": { + "version": "4.21.4", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserstack": { + "version": "1.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "https-proxy-agent": "^2.2.1" + } + }, + "node_modules/browserstack/node_modules/agent-base": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/browserstack/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/browserstack/node_modules/https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/builtins": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001429", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/circular-dependency-plugin": { + "version": "5.2.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.1" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/codelyzer": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + }, + "peerDependencies": { + "@angular/compiler": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "@angular/core": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "tslint": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/codelyzer/node_modules/@angular/compiler": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/codelyzer/node_modules/@angular/core": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "rxjs": "^6.5.3", + "tslib": "^1.10.0", + "zone.js": "~0.10.2" + } + }, + "node_modules/codelyzer/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codelyzer/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/codelyzer/node_modules/zone.js": { + "version": "0.10.3", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "dev": true, + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/compressible": { + "version": "2.0.18", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/connect": { + "version": "3.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.4.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "10.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.20.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/core-js": { + "version": "3.20.3", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/critters": { + "version": "0.0.16", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "dev": true, + "license": "CC0-1.0", + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cssauron": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "X.X.X" + } + }, + "node_modules/cssdb": { + "version": "5.1.0", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "license": "MIT" + }, + "node_modules/custom-event": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.3", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "license": "MIT" + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "2.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/depd": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/di": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/diff": { + "version": "3.5.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-packet/node_modules/ip": { + "version": "1.1.8", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/emoji-toolkit": { + "version": "6.6.0", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "2.2.0", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/errno": { + "version": "0.1.8", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-error": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/esbuild": { + "version": "0.14.22", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-arm64": "0.14.22", + "esbuild-darwin-64": "0.14.22", + "esbuild-darwin-arm64": "0.14.22", + "esbuild-freebsd-64": "0.14.22", + "esbuild-freebsd-arm64": "0.14.22", + "esbuild-linux-32": "0.14.22", + "esbuild-linux-64": "0.14.22", + "esbuild-linux-arm": "0.14.22", + "esbuild-linux-arm64": "0.14.22", + "esbuild-linux-mips64le": "0.14.22", + "esbuild-linux-ppc64le": "0.14.22", + "esbuild-linux-riscv64": "0.14.22", + "esbuild-linux-s390x": "0.14.22", + "esbuild-netbsd-64": "0.14.22", + "esbuild-openbsd-64": "0.14.22", + "esbuild-sunos-64": "0.14.22", + "esbuild-windows-32": "0.14.22", + "esbuild-windows-64": "0.14.22", + "esbuild-windows-arm64": "0.14.22" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.14.22", + "dev": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.22", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/fast-sha256": { + "version": "1.3.0", + "license": "Unlicense" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.13.0", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/format-util": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/global-agent": { + "version": "2.2.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-tunnel-ng": { + "version": "2.7.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "12.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "dev": true, + "license": "ISC" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/has": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "dev": true, + "license": "BSD", + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "dev": true, + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "4.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/immutable": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer": { + "version": "8.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/rxjs": { + "version": "7.5.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/tslib": { + "version": "2.4.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/ip": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-cwd": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-in-cwd": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jasmine": { + "version": "2.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/jasmine-core": { + "version": "3.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jasmine-spec-reporter": { + "version": "5.0.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/jasmine/node_modules/jasmine-core": { + "version": "2.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jasminewd2": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.9.x" + } + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/jquery": { + "version": "3.6.1", + "license": "MIT", + "peer": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "15.2.1", + "license": "MIT", + "dependencies": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "5.1.0", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-ref-parser": { + "version": "5.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-me-maybe": "^1.0.1", + "debug": "^3.1.0", + "js-yaml": "^3.12.0", + "ono": "^4.0.6" + } + }, + "node_modules/json-schema-ref-parser/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/json-source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", + "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jsoneditor": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-9.10.0.tgz", + "integrity": "sha512-vmVSD3ubZ8jwkiDKVW5MB5ESI/MUm4trVUw5WnT4j5FV6m81liA2YfQ0l84PlN4qJ3DCeYWFWfprOUoCjzkDhQ==", + "dependencies": { + "ace-builds": "^1.15.2", + "ajv": "^6.12.6", + "javascript-natural-sort": "^0.7.1", + "jmespath": "^0.16.0", + "json-source-map": "^0.6.1", + "jsonrepair": "^3.0.2", + "mobius1-selectr": "^2.4.13", + "picomodal": "^3.0.0", + "vanilla-picker": "^2.12.1" + } + }, + "node_modules/jsoneditor/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/jsoneditor/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/jsonrepair": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.8.0.tgz", + "integrity": "sha512-89lrxpwp+IEcJ6kwglF0HH3Tl17J08JEpYfXnvvjdp4zV4rjSoGu2NdQHxBs7yTOk3ETjTn9du48pBy8iBqj1w==", + "bin": { + "jsonrepair": "bin/cli.js" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "dev": true, + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/jwt-decode": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/karma": { + "version": "6.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + } + }, + "node_modules/karma-jasmine": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "jasmine-core": "^3.6.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "karma": "*" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "1.5.4", + "dev": true, + "license": "MIT", + "peerDependencies": { + "jasmine-core": ">=3.5", + "karma": ">=0.9", + "karma-jasmine": ">=1.1" + } + }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "3.99.1", + "dev": true, + "license": "MIT" + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/mkdirp": { + "version": "0.5.6", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/katex": { + "version": "0.15.6", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.0.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/less": { + "version": "4.1.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^2.5.2", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "10.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/less/node_modules/tslib": { + "version": "2.4.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/levn": { + "version": "0.3.0", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lie": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.7.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.3" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/log4js/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.25.7", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "dev": true, + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/marked": { + "version": "4.2.0", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.9", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.0.5", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.4", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mobius1-selectr": { + "version": "2.4.13", + "resolved": "https://registry.npmjs.org/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz", + "integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==" + }, + "node_modules/moment": { + "version": "2.29.4", + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/mustache": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + }, + "engines": { + "npm": ">=1.4.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "dev": true, + "license": "ISC" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "2.9.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ng-swagger-gen": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.10", + "global-agent": "^2.1.12", + "global-tunnel-ng": "^2.7.1", + "json-schema-ref-parser": "^5.1.3", + "mustache": "^2.3.2", + "npm-conf": "^1.1.3" + }, + "bin": { + "ng-swagger-gen": "ng-swagger-gen" + }, + "peerDependencies": { + "@angular/core": ">=6.0.0", + "rxjs": ">=6.0.0" + } + }, + "node_modules/ngx-markdown": { + "version": "13.1.0", + "license": "MIT", + "dependencies": { + "@types/marked": "^4.0.2", + "emoji-toolkit": "^6.6.0", + "katex": "^0.15.1", + "marked": "^4.0.10", + "prismjs": "^1.25.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^13.0.0", + "@angular/core": "^13.0.0", + "@angular/platform-browser": "^13.0.0", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "^0.11.4" + } + }, + "node_modules/ngx-markdown/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/ngx-progressbar": { + "version": "8.0.0", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0", + "@angular/router": ">=13.0.0", + "rxjs": ">=6.0.0" + } + }, + "node_modules/ngx-toastr": { + "version": "14.3.0", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=12.0.0-0", + "@angular/core": ">=12.0.0-0", + "@angular/platform-browser": ">=12.0.0-0" + } + }, + "node_modules/ngx-toastr/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/node-forge": { + "version": "1.3.1", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "license": "MIT" + }, + "node_modules/nopt": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-install-checks": { + "version": "4.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/npm-package-arg": { + "version": "8.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-pick-manifest": { + "version": "6.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm-registry-fetch": { + "version": "12.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^10.0.1", + "minipass": "^3.1.6", + "minipass-fetch": "^1.4.1", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^8.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm-registry-fetch/node_modules/@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/@npmcli/move-file": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/@tootallnate/once": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm-registry-fetch/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/cacache": { + "version": "16.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/glob": { + "version": "8.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.14.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen/node_modules/minipass-fetch": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm-registry-fetch/node_modules/minimatch": { + "version": "5.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-registry-fetch/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm-registry-fetch/node_modules/ssri": { + "version": "9.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/unique-filename": { + "version": "2.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/unique-slug": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.2", + "license": "MIT" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ono": { + "version": "4.0.11", + "dev": true, + "license": "MIT", + "dependencies": { + "format-util": "^1.0.3" + } + }, + "node_modules/open": { + "version": "8.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "12.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^2.0.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^3.0.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^12.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "license": "MIT", + "optional": true + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-sax-parser": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-sax-parser/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/picomodal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/picomodal/-/picomodal-3.0.0.tgz", + "integrity": "sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==" + }, + "node_modules/pify": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/piscina": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/popper.js": { + "version": "1.16.1", + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/postcss": { + "version": "8.4.5", + "dev": true, + "license": "MIT", + "dependencies": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "dev": true, + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "14.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "dev": true, + "license": "CC0-1.0", + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "10.2.0", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.2.3", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "autoprefixer": "^10.4.2", + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001299", + "css-blank-pseudo": "^3.0.2", + "css-has-pseudo": "^3.0.3", + "css-prefers-color-scheme": "^6.0.2", + "cssdb": "^5.0.0", + "postcss-attribute-case-insensitive": "^5.0.0", + "postcss-color-functional-notation": "^4.2.1", + "postcss-color-hex-alpha": "^8.0.2", + "postcss-color-rebeccapurple": "^7.0.2", + "postcss-custom-media": "^8.0.0", + "postcss-custom-properties": "^12.1.2", + "postcss-custom-selectors": "^6.0.0", + "postcss-dir-pseudo-class": "^6.0.3", + "postcss-double-position-gradients": "^3.0.4", + "postcss-env-function": "^4.0.4", + "postcss-focus-visible": "^6.0.3", + "postcss-focus-within": "^5.0.3", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.2", + "postcss-image-set-function": "^4.0.4", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.0.3", + "postcss-logical": "^5.0.3", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.2", + "postcss-overflow-shorthand": "^3.0.2", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.3", + "postcss-pseudo-class-any-link": "^7.0.2", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^5.0.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/preact": { + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.2.tgz", + "integrity": "sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/protractor": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "bin": { + "protractor": "bin/protractor", + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=10.13.x" + } + }, + "node_modules/protractor/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/protractor/node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/protractor/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/protractor/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/source-map-support": { + "version": "0.4.18", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/protractor/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/protractor/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/y18n": { + "version": "4.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/protractor/node_modules/yargs": { + "version": "15.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/yargs-parser": { + "version": "18.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/psl": { + "version": "1.9.0", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "license": "Apache-2.0" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "dev": true, + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/request": { + "version": "2.88.2", + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "license": "ISC", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "license": "ISC", + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native/node_modules/tough-cookie": { + "version": "2.5.0", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.49.9", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "12.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/saucelabs": { + "version": "1.5.0", + "dev": true, + "dependencies": { + "https-proxy-agent": "^2.2.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/saucelabs/node_modules/agent-base": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/saucelabs/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/saucelabs/node_modules/https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/saxes": { + "version": "3.1.11", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/selenium-webdriver": { + "version": "3.6.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/selenium-webdriver/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/selenium-webdriver/node_modules/tmp": { + "version": "0.0.30", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/semver-dsl": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/semver-dsl/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/slash": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "license": "MIT" + }, + "node_modules/spdy": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "license": "ISC", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streamroller": { + "version": "3.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/stylus": { + "version": "0.56.0", + "dev": true, + "license": "MIT", + "dependencies": { + "css": "^3.0.0", + "debug": "^4.3.2", + "glob": "^7.1.6", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stylus-loader": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.7", + "klona": "^2.0.4", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/terser": { + "version": "5.14.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.8.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "3.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-node/node_modules/mkdirp": { + "version": "0.5.6", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tslib": { + "version": "2.0.3", + "license": "0BSD" + }, + "node_modules/tslint": { + "version": "6.1.3", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/diff": { + "version": "4.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslint/node_modules/mkdirp": { + "version": "0.5.6", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "2.29.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.3.2", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "4.6.4", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/vanilla-picker": { + "version": "2.12.3", + "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", + "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", + "dependencies": { + "@sphinxxxx/color-conversion": "^2.2.2" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webdriver-js-extender": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webdriver-manager": { + "version": "12.1.9", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.9.tgz", + "integrity": "sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ==", + "dev": true, + "dependencies": { + "adm-zip": "^0.5.2", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + }, + "bin": { + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webdriver-manager/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/webdriver-manager/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/webdriver-manager/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/webdriver-manager/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.70.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.0", + "ws": "^8.1.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/del": { + "version": "6.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/is-path-cwd": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.10.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.8.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/acorn-import-assertions": { + "version": "1.8.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.5.9", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "license": "Apache-2.0" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.6.0", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/zone.js": { + "version": "0.11.8", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + } + }, + "node_modules/zone.js/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@angular-devkit/architect": { + "version": "0.1303.9", + "dev": true, + "requires": { + "@angular-devkit/core": "13.3.9", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/build-angular": { + "version": "13.3.9", + "dev": true, + "requires": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1303.9", + "@angular-devkit/build-webpack": "0.1303.9", + "@angular-devkit/core": "13.3.9", + "@babel/core": "7.16.12", + "@babel/generator": "7.16.8", + "@babel/helper-annotate-as-pure": "7.16.7", + "@babel/plugin-proposal-async-generator-functions": "7.16.8", + "@babel/plugin-transform-async-to-generator": "7.16.8", + "@babel/plugin-transform-runtime": "7.16.10", + "@babel/preset-env": "7.16.11", + "@babel/runtime": "7.16.7", + "@babel/template": "7.16.7", + "@discoveryjs/json-ext": "0.5.6", + "@ngtools/webpack": "13.3.9", + "ansi-colors": "4.1.1", + "babel-loader": "8.2.5", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "15.3.0", + "circular-dependency-plugin": "5.2.2", + "copy-webpack-plugin": "10.2.1", + "core-js": "3.20.3", + "critters": "0.0.16", + "css-loader": "6.5.1", + "esbuild": "0.14.22", + "esbuild-wasm": "0.14.22", + "glob": "7.2.0", + "https-proxy-agent": "5.0.0", + "inquirer": "8.2.0", + "jsonc-parser": "3.0.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.2", + "less-loader": "10.2.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.0", + "mini-css-extract-plugin": "2.5.3", + "minimatch": "3.0.5", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.5", + "postcss-import": "14.0.2", + "postcss-loader": "6.2.1", + "postcss-preset-env": "7.2.3", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.49.9", + "sass-loader": "12.4.0", + "semver": "7.3.5", + "source-map-loader": "3.0.1", + "source-map-support": "0.5.21", + "stylus": "0.56.0", + "stylus-loader": "6.2.0", + "terser": "5.14.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.3.1", + "webpack": "5.70.0", + "webpack-dev-middleware": "5.3.0", + "webpack-dev-server": "4.7.3", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1303.9", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1303.9", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "13.3.9", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.11.tgz", + "integrity": "sha512-ben+EGXpCrClnIVAAnEQmhQdKmnnqFhMp5BqMxgOslSYBAmCutLA6rBu5vsc8kZcGian1wt+lueF7G1Uk5cGBg==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.3.11", + "jsonc-parser": "3.0.0", + "magic-string": "0.25.7", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + } + } + }, + "@angular/animations": { + "version": "13.3.11", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/cdk": { + "version": "13.3.9", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/cli": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.11.tgz", + "integrity": "sha512-LTuQ1wC/VJiHqHx8nYJCx0EJv1Ek7R6VvP/5vmr/+M8oVvJ2zSh/aIbcPg6BTL0YEfMI6nX41mUjPBUfF0q2OA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1303.11", + "@angular-devkit/core": "13.3.11", + "@angular-devkit/schematics": "13.3.11", + "@schematics/angular": "13.3.11", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.3.3", + "ini": "2.0.0", + "inquirer": "8.2.0", + "jsonc-parser": "3.0.0", + "npm-package-arg": "8.1.5", + "npm-pick-manifest": "6.1.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "12.0.3", + "resolve": "1.22.0", + "semver": "7.3.5", + "symbol-observable": "4.0.0", + "uuid": "8.3.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1303.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.11.tgz", + "integrity": "sha512-JwrWomNqNGjAeKlqV2pimUFlCgFxQy+Vioz9+QAPIrUkvvjbkQ1dZKOe8Ul8eosb1N3Ln282U6qzOpHKfJ4TOg==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.3.11", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + } + } + }, + "@angular/common": { + "version": "13.3.11", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/compiler": { + "version": "13.3.11", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/compiler-cli": { + "version": "13.3.11", + "requires": { + "@babel/core": "^7.17.2", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.26.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.19.6", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/generator": { + "version": "7.20.1", + "requires": { + "@babel/types": "^7.20.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@babel/template": { + "version": "7.18.10", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "magic-string": { + "version": "0.26.7", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/core": { + "version": "13.3.11", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/forms": { + "version": "13.3.11", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/language-service": { + "version": "13.3.11", + "dev": true + }, + "@angular/localize": { + "version": "13.3.11", + "requires": { + "@babel/core": "7.17.2", + "glob": "7.2.0", + "yargs": "^17.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.17.2", + "requires": { + "@ampproject/remapping": "^2.0.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.20.1", + "requires": { + "@babel/types": "^7.20.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@angular/material": { + "version": "13.3.9", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/platform-browser": { + "version": "13.3.11", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/platform-browser-dynamic": { + "version": "13.3.11", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@angular/router": { + "version": "13.3.11", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@assemblyscript/loader": { + "version": "0.10.1", + "dev": true + }, + "@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.20.1" + }, + "@babel/core": { + "version": "7.16.12", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + }, + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/generator": { + "version": "7.16.8", + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.19.0", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.19.0", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + } + } + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.19.6", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.18.10", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.19.0", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.19.4", + "requires": { + "@babel/types": "^7.19.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + }, + "@babel/helper-validator-option": { + "version": "7.18.6" + }, + "@babel/helper-wrap-function": { + "version": "7.19.0", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.18.10", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + } + } + }, + "@babel/helpers": { + "version": "7.20.1", + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.18.10", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + } + } + }, + "@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.19.4", + "dev": true, + "requires": { + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.19.0", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.19.1", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.16.10", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.16.11", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.16.7", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "requires": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/types": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@colors/colors": { + "version": "1.5.0", + "dev": true + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/selector-specificity": { + "version": "2.0.2", + "dev": true, + "requires": {} + }, + "@danielmoncada/angular-datetime-picker": { + "version": "13.1.1", + "requires": { + "tslib": "^2.0.0" + } + }, + "@danielmoncada/angular-datetime-picker-moment-adapter": { + "version": "1.1.0", + "requires": { + "tslib": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.6", + "dev": true + }, + "@fortawesome/fontawesome-free": { + "version": "5.15.4" + }, + "@fullcalendar/angular": { + "version": "5.11.2", + "resolved": "https://registry.npmjs.org/@fullcalendar/angular/-/angular-5.11.2.tgz", + "integrity": "sha512-o4IsB3DCS7mcwwXtbaAAWY5WVIT1hSelj/hvFwkr49/ZxmmQYjpjP00Gant0vxvSvu29ZYys/2Gg/ZFVtkkLhQ==", + "requires": { + "@fullcalendar/core": "~5.11.2", + "fast-deep-equal": "^3.1.1", + "tslib": "^2.0.0" + } + }, + "@fullcalendar/common": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/common/-/common-5.11.3.tgz", + "integrity": "sha512-welVwyfQOXQQGfDwBMSfYEPbiO1cPfUD+C7jd3ZoweJR+dSO11ddFugxIQ7dGfABAGZ63oq/+LW9FsmAJezVNg==", + "requires": { + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/core": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-5.11.3.tgz", + "integrity": "sha512-YUFxCvVJytUwFeXCx4J17kFMM7Ixwn9zBjVRw5NM2bMwgR6VAhSnlZc6yNQSOIy7Hj2TF0vDkO/4JNlTvxyAXw==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "preact": "^10.0.5", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/daygrid": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-5.11.3.tgz", + "integrity": "sha512-PCK0y80DRNCzWuC5lGpIWqCgKDvql1ah7rXql5lu+Gn2EeFj15ZQ8diMFjtNIQucEmFaNOXnR05Pgcry1n6Shg==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/interaction": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-5.11.3.tgz", + "integrity": "sha512-L955wkDjza62K96ndstvYs2Fd4V0kayTDpqW8W7huFG3Ox8MutpLqKAa2SCaTvcNIlWS4oexGQRiQAaJG7u47A==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/list": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-5.11.3.tgz", + "integrity": "sha512-6m9rJPzB5XfJZg+MlgVpha1cI3NUDeyV3GOmojJWZuti05NfDP4f0lzFUul8W7m1DQcjGS2UPRNE8HouA3guEA==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/premium-common": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/premium-common/-/premium-common-5.11.3.tgz", + "integrity": "sha512-fvMU8OmIReBXoY1iOkRO+zGwbUHA1YB9xtkYbSL3ZeMQ008P0Lj6ar7Jv/lB5XDRgh50TRfFIgfDjdszESAc4w==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/resource-common": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource-common/-/resource-common-5.11.3.tgz", + "integrity": "sha512-KPsAITCuRI+dg6FoEPnJ+966xMRg5Le66b5cCJ3tDHoswSjUUeu5q46lMsKIblhJM8MCFDVw1pLzDyHZPOhX/w==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/premium-common": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/resource-timeline": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource-timeline/-/resource-timeline-5.11.3.tgz", + "integrity": "sha512-iYIXZPfqtiN/qizpGDCYlFVssdDTZv6lU/5N1v0FzvGMZfU2LkHLhCkouQeBQHja8ZCbJisy4sK3kUR9mXh2cg==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/premium-common": "~5.11.3", + "@fullcalendar/resource-common": "~5.11.3", + "@fullcalendar/scrollgrid": "~5.11.3", + "@fullcalendar/timeline": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/scrollgrid": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/scrollgrid/-/scrollgrid-5.11.3.tgz", + "integrity": "sha512-JTWDmejPmit65pCoQafUPeplI2+iogXG/3TNbusXMSWYaaMrINHDQiBZ/6EAt46hO2eWyEglmgS0BwVXZNSlGg==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/premium-common": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/timegrid": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-5.11.3.tgz", + "integrity": "sha512-SjIj2ZQ7nTyL1RxZkCPvNbuUQ0xHT+gfYJdUL3FT4bPjPJCxWtQ2CL8hxaeNmVozYYuy0yrGTW5Oup2+9IplbA==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/daygrid": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@fullcalendar/timeline": { + "version": "5.11.3", + "resolved": "https://registry.npmjs.org/@fullcalendar/timeline/-/timeline-5.11.3.tgz", + "integrity": "sha512-nbMJ2gG9mLGUZgGUB2O726u3D8EFxJkZsKA/O1053j5QiQ7C8Wca1rh8UX+bed/s+wmkWwKV5pB0CiOax4f3gQ==", + "requires": { + "@fullcalendar/common": "~5.11.3", + "@fullcalendar/premium-common": "~5.11.3", + "@fullcalendar/scrollgrid": "~5.11.3", + "tslib": "^2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + } + } + }, + "@gar/promisify": { + "version": "1.1.3", + "dev": true + }, + "@iplab/ngx-file-upload": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@iplab/ngx-file-upload/-/ngx-file-upload-13.0.0.tgz", + "integrity": "sha512-noHKyFtbypdx/+97b/xyv72tAD7cMAwdvpwD9/PsJW5BWvWgDZNh6xwMTq5glcf4FXP4o0ygMW7agYcvB9GNIA==", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0" + }, + "@jridgewell/set-array": { + "version": "1.1.2" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@ng-bootstrap/ng-bootstrap": { + "version": "11.0.1", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "@ngtools/webpack": { + "version": "13.3.9", + "dev": true, + "requires": {} + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "1.1.1", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "2.1.0", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "1.0.3", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "2.0.0", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^8.2.0", + "read-package-json-fast": "^2.0.1" + } + }, + "@schematics/angular": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.11.tgz", + "integrity": "sha512-imKBnKYEse0SBVELZO/753nkpt3eEgpjrYkB+AFWF9YfO/4RGnYXDHoH8CFkzxPH9QQCgNrmsVFNiYGS+P/S1A==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.3.11", + "@angular-devkit/schematics": "13.3.11", + "jsonc-parser": "3.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.11.tgz", + "integrity": "sha512-rfqoLMRYhlz0wzKlHx7FfyIyQq8dKTsmbCoIVU1cEIH0gyTMVY7PbVzwRRcO6xp5waY+0hA+0Brriujpuhkm4w==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + } + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "dev": true + }, + "@sphinxxxx/color-conversion": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==" + }, + "@tootallnate/once": { + "version": "1.1.2", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.2", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "dev": true + }, + "@types/cors": { + "version": "2.8.12", + "dev": true + }, + "@types/eslint": { + "version": "8.4.9", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "dev": true + }, + "@types/express": { + "version": "4.17.14", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.31", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.9", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "3.3.16", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.10", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "dev": true + }, + "@types/marked": { + "version": "4.0.7" + }, + "@types/mime": { + "version": "3.0.1", + "dev": true + }, + "@types/node": { + "version": "12.11.7", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.20", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.15.0", + "dev": true, + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ws": { + "version": "8.5.3", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "dev": true + }, + "abab": { + "version": "2.0.6" + }, + "abbrev": { + "version": "1.1.1", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ace-builds": { + "version": "1.34.1", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.34.1.tgz", + "integrity": "sha512-hwRzr6BkRwsq5A19yA9E36KNNtn0+zESYolnWK3TADJsWVQS0T24nvbgdjXwqk2JEMQXE4PlqAw+ZgprvFtKjw==" + }, + "acorn": { + "version": "7.4.1" + }, + "acorn-globals": { + "version": "4.3.4", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2" + } + } + }, + "acorn-walk": { + "version": "6.2.0" + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "dev": true + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "8.9.0", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ang-jsoneditor": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/ang-jsoneditor/-/ang-jsoneditor-1.10.5.tgz", + "integrity": "sha512-i4sPCpKUN7DQzNctcJcEoMRex850iGvweaL3AYuFOJUWADyJ3BVMjv3GprUzA+jqURs83NucPFsIE1v1iMT2jA==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } + }, + "angular-oauth2-oidc": { + "version": "13.0.1", + "requires": { + "fast-sha256": "^1.3.0", + "tslib": "^2.0.0" + } + }, + "ansi-colors": { + "version": "4.1.1", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1" + }, + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "3.1.0", + "dev": true + }, + "aproba": { + "version": "2.0.0", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "argparse": { + "version": "1.0.10", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "dev": true + } + } + }, + "aria-query": { + "version": "3.0.0", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "array-equal": { + "version": "1.0.0" + }, + "array-flatten": { + "version": "2.1.2", + "dev": true + }, + "array-union": { + "version": "3.0.1", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0" + }, + "ast-types-flow": { + "version": "0.0.7", + "dev": true + }, + "async": { + "version": "2.6.4", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "asynckit": { + "version": "0.4.0" + }, + "atob": { + "version": "2.1.2", + "dev": true + }, + "autoprefixer": { + "version": "10.4.13", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "aws-sign2": { + "version": "0.7.0" + }, + "aws4": { + "version": "1.11.0" + }, + "axobject-query": { + "version": "2.0.2", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-loader": { + "version": "8.2.5", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "balanced-match": { + "version": "1.0.2" + }, + "base64-js": { + "version": "1.5.1", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "dev": true + }, + "batch": { + "version": "0.6.1", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0" + }, + "bl": { + "version": "4.1.0", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "blockly": { + "version": "git+ssh://git@github.com/google/blockly.git#64188ae27297b1ca23a3244cc987dfbfc6e98f34", + "from": "blockly@git://github.com/google/blockly.git#6.20210701.0", + "requires": { + "jsdom": "15.2.1" + } + }, + "body-parser": { + "version": "1.20.1", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "dev": true + }, + "boolean": { + "version": "3.2.0", + "dev": true + }, + "bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "requires": {} + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0" + }, + "browserslist": { + "version": "4.21.4", + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "browserstack": { + "version": "1.6.1", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, + "buffer": { + "version": "5.7.1", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "dev": true + }, + "cacache": { + "version": "15.3.0", + "dev": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "call-bind": { + "version": "1.0.2", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001429" + }, + "caseless": { + "version": "0.12.0" + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chownr": { + "version": "2.0.0", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "dev": true + }, + "circular-dependency-plugin": { + "version": "5.2.2", + "dev": true, + "requires": {} + }, + "clean-stack": { + "version": "2.2.0", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "codelyzer": { + "version": "6.0.2", + "dev": true, + "requires": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + }, + "dependencies": { + "@angular/compiler": { + "version": "9.0.0", + "dev": true, + "requires": {} + }, + "@angular/core": { + "version": "9.0.0", + "dev": true, + "requires": {} + }, + "source-map": { + "version": "0.5.7", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "dev": true + }, + "zone.js": { + "version": "0.10.3", + "dev": true + } + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "color-support": { + "version": "1.1.3", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "dev": true + }, + "colors": { + "version": "1.4.0", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "dev": true + }, + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1" + }, + "config-chain": { + "version": "1.1.13", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "dev": true + } + } + }, + "connect": { + "version": "3.7.0", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0" + }, + "cookie": { + "version": "0.4.2", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-webpack-plugin": { + "version": "10.2.1", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "schema-utils": { + "version": "4.0.0", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "core-js": { + "version": "3.20.3", + "dev": true + }, + "core-js-compat": { + "version": "3.26.0", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-util-is": { + "version": "1.0.2" + }, + "cors": { + "version": "2.8.5", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "7.0.1", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "critters": { + "version": "0.0.16", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "css": { + "version": "3.0.0", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "css-blank-pseudo": { + "version": "3.0.3", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-has-pseudo": { + "version": "3.0.4", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-loader": { + "version": "6.5.1", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + } + }, + "css-prefers-color-scheme": { + "version": "6.0.3", + "dev": true, + "requires": {} + }, + "css-select": { + "version": "4.3.0", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-what": { + "version": "6.1.0", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssdb": { + "version": "5.1.0", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "dev": true + }, + "cssom": { + "version": "0.4.4" + }, + "cssstyle": { + "version": "2.3.0", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8" + } + } + }, + "custom-event": { + "version": "1.0.1", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.8", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "date-format": { + "version": "4.0.14", + "dev": true + }, + "debug": { + "version": "4.3.3", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.4" + }, + "default-gateway": { + "version": "6.0.3", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defaults": { + "version": "1.0.4", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "del": { + "version": "2.2.2", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "5.0.0", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0" + }, + "delegates": { + "version": "1.0.0", + "dev": true + }, + "depd": { + "version": "2.0.0", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0" + }, + "destroy": { + "version": "1.2.0", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "dev": true + }, + "di": { + "version": "0.0.1", + "dev": true + }, + "diff": { + "version": "3.5.0", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "dev": true + }, + "dns-packet": { + "version": "1.3.4", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + }, + "dependencies": { + "ip": { + "version": "1.1.8", + "dev": true + } + } + }, + "dns-txt": { + "version": "2.0.2", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "1.4.1", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "4.3.1", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.284" + }, + "emoji-regex": { + "version": "8.0.0" + }, + "emoji-toolkit": { + "version": "6.6.0" + }, + "emojis-list": { + "version": "3.0.0", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "engine.io": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "dev": true, + "requires": {} + } + } + }, + "engine.io-parser": { + "version": "5.0.4", + "dev": true + }, + "enhanced-resolve": { + "version": "5.10.0", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "dev": true + }, + "entities": { + "version": "2.2.0", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "dev": true + }, + "errno": { + "version": "0.1.8", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "dev": true + }, + "es6-error": { + "version": "4.1.1", + "dev": true + }, + "es6-promise": { + "version": "4.2.8", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "esbuild": { + "version": "0.14.22", + "dev": true, + "optional": true, + "requires": { + "esbuild-android-arm64": "0.14.22", + "esbuild-darwin-64": "0.14.22", + "esbuild-darwin-arm64": "0.14.22", + "esbuild-freebsd-64": "0.14.22", + "esbuild-freebsd-arm64": "0.14.22", + "esbuild-linux-32": "0.14.22", + "esbuild-linux-64": "0.14.22", + "esbuild-linux-arm": "0.14.22", + "esbuild-linux-arm64": "0.14.22", + "esbuild-linux-mips64le": "0.14.22", + "esbuild-linux-ppc64le": "0.14.22", + "esbuild-linux-riscv64": "0.14.22", + "esbuild-linux-s390x": "0.14.22", + "esbuild-netbsd-64": "0.14.22", + "esbuild-openbsd-64": "0.14.22", + "esbuild-sunos-64": "0.14.22", + "esbuild-windows-32": "0.14.22", + "esbuild-windows-64": "0.14.22", + "esbuild-windows-arm64": "0.14.22" + } + }, + "esbuild-wasm": { + "version": "0.14.22", + "dev": true + }, + "esbuild-windows-64": { + "version": "0.14.22", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1" + }, + "escape-html": { + "version": "1.0.3", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5" + }, + "escodegen": { + "version": "1.14.3", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "optional": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1" + }, + "esrecurse": { + "version": "4.3.0", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0" + }, + "esutils": { + "version": "2.0.3" + }, + "etag": { + "version": "1.8.1", + "dev": true + }, + "eventemitter-asyncresource": { + "version": "1.0.0", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "dev": true + }, + "events": { + "version": "3.3.0", + "dev": true + }, + "execa": { + "version": "5.1.1", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "dev": true + }, + "express": { + "version": "4.18.2", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "dev": true + }, + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "finalhandler": { + "version": "1.2.0", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2" + }, + "external-editor": { + "version": "3.1.0", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0" + }, + "fast-deep-equal": { + "version": "3.1.3" + }, + "fast-glob": { + "version": "3.2.12", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0" + }, + "fast-levenshtein": { + "version": "2.0.6" + }, + "fast-sha256": { + "version": "1.3.0" + }, + "fastparse": { + "version": "1.1.2", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "3.2.0", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "fill-range": { + "version": "7.0.1", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flatted": { + "version": "3.2.7", + "dev": true + }, + "follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1" + }, + "form-data": { + "version": "2.3.3", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "format-util": { + "version": "1.0.5", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0" + }, + "function-bind": { + "version": "1.1.1", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "dev": true + }, + "gauge": { + "version": "4.0.4", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gensync": { + "version": "1.0.0-beta.2" + }, + "get-caller-file": { + "version": "2.0.5" + }, + "get-intrinsic": { + "version": "1.1.3", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-package-type": { + "version": "0.1.0", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.0", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "dev": true + }, + "global-agent": { + "version": "2.2.0", + "dev": true, + "requires": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "dev": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globals": { + "version": "11.12.0" + }, + "globalthis": { + "version": "1.0.3", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "12.2.0", + "dev": true, + "requires": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "dev": true + }, + "har-schema": { + "version": "2.0.0" + }, + "har-validator": { + "version": "5.1.5", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "0.4.1" + } + } + }, + "has": { + "version": "1.0.3", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0" + }, + "has-property-descriptors": { + "version": "1.0.0", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "dev": true + }, + "hdr-histogram-js": { + "version": "2.0.3", + "dev": true, + "requires": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "2.3.3", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.8", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "4.0.1", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "http-signature": { + "version": "1.2.0", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "dev": true + }, + "ignore-walk": { + "version": "4.0.1", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "dev": true + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "ini": { + "version": "2.0.0", + "dev": true + }, + "inquirer": { + "version": "8.2.0", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "rxjs": { + "version": "7.5.7", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.4.1", + "dev": true + } + } + }, + "ip": { + "version": "2.0.0", + "dev": true + }, + "ip-regex": { + "version": "2.1.0" + }, + "ipaddr.js": { + "version": "2.0.1", + "dev": true + }, + "is-arguments": { + "version": "1.1.1", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "dev": true + }, + "is-extglob": { + "version": "2.1.1" + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "is-glob": { + "version": "4.0.3", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "dev": true + }, + "is-number": { + "version": "7.0.0" + }, + "is-path-cwd": { + "version": "1.0.0", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "3.0.0", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0" + }, + "is-unicode-supported": { + "version": "0.1.0", + "dev": true + }, + "is-what": { + "version": "3.14.1", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.10", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "dev": true + }, + "isstream": { + "version": "0.1.2" + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "dev": true + }, + "make-dir": { + "version": "2.1.0", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.5", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jasmine": { + "version": "2.8.0", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "dev": true + } + } + }, + "jasmine-core": { + "version": "3.5.0", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "5.0.2", + "dev": true, + "requires": { + "colors": "1.4.0" + } + }, + "jasminewd2": { + "version": "2.2.0", + "dev": true + }, + "javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==" + }, + "jest-worker": { + "version": "27.5.1", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==" + }, + "jquery": { + "version": "3.6.1", + "peer": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1" + }, + "jsdom": { + "version": "15.2.1", + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.0" + } + } + }, + "jsesc": { + "version": "2.5.2" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true + }, + "json-schema": { + "version": "0.4.0" + }, + "json-schema-ref-parser": { + "version": "5.1.3", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "debug": "^3.1.0", + "js-yaml": "^3.12.0", + "ono": "^4.0.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "dev": true + }, + "json-source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/json-source-map/-/json-source-map-0.6.1.tgz", + "integrity": "sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==" + }, + "json-stringify-safe": { + "version": "5.0.1" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonc-parser": { + "version": "3.0.0", + "dev": true + }, + "jsoneditor": { + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/jsoneditor/-/jsoneditor-9.10.0.tgz", + "integrity": "sha512-vmVSD3ubZ8jwkiDKVW5MB5ESI/MUm4trVUw5WnT4j5FV6m81liA2YfQ0l84PlN4qJ3DCeYWFWfprOUoCjzkDhQ==", + "requires": { + "ace-builds": "^1.15.2", + "ajv": "^6.12.6", + "javascript-natural-sort": "^0.7.1", + "jmespath": "^0.16.0", + "json-source-map": "^0.6.1", + "jsonrepair": "^3.0.2", + "mobius1-selectr": "^2.4.13", + "picomodal": "^3.0.0", + "vanilla-picker": "^2.12.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + } + } + }, + "jsonfile": { + "version": "4.0.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "dev": true + }, + "jsonrepair": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/jsonrepair/-/jsonrepair-3.8.0.tgz", + "integrity": "sha512-89lrxpwp+IEcJ6kwglF0HH3Tl17J08JEpYfXnvvjdp4zV4rjSoGu2NdQHxBs7yTOk3ETjTn9du48pBy8iBqj1w==" + }, + "jsprim": { + "version": "1.4.2", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.10.1", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "jwt-decode": { + "version": "2.2.0" + }, + "karma": { + "version": "6.4.1", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.1", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "4.0.2", + "dev": true, + "requires": { + "jasmine-core": "^3.6.0" + }, + "dependencies": { + "jasmine-core": { + "version": "3.99.1", + "dev": true + } + } + }, + "karma-jasmine-html-reporter": { + "version": "1.5.4", + "dev": true, + "requires": {} + }, + "karma-source-map-support": { + "version": "1.4.0", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "katex": { + "version": "0.15.6", + "requires": { + "commander": "^8.0.0" + }, + "dependencies": { + "commander": { + "version": "8.3.0" + } + } + }, + "kind-of": { + "version": "6.0.3", + "dev": true + }, + "klona": { + "version": "2.0.5", + "dev": true + }, + "less": { + "version": "4.1.2", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^2.5.2", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "dev": true, + "optional": true + }, + "tslib": { + "version": "2.4.1", + "dev": true + } + } + }, + "less-loader": { + "version": "10.2.0", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "levn": { + "version": "0.3.0", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "license-webpack-plugin": { + "version": "4.0.2", + "dev": true, + "requires": { + "webpack-sources": "^3.0.0" + } + }, + "lie": { + "version": "3.3.0", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "dev": true + }, + "loader-utils": { + "version": "3.2.0", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21" + }, + "lodash.debounce": { + "version": "4.0.8", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0" + }, + "log-symbols": { + "version": "4.1.0", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.7.0", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.3" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "lru-cache": { + "version": "6.0.0", + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.7", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "dev": true + }, + "make-fetch-happen": { + "version": "9.1.0", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "marked": { + "version": "4.2.0" + }, + "matcher": { + "version": "3.0.0", + "dev": true, + "requires": { + "escape-string-regexp": "^4.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "dev": true + } + } + }, + "media-typer": { + "version": "0.3.0", + "dev": true + }, + "memfs": { + "version": "3.4.9", + "dev": true, + "requires": { + "fs-monkey": "^1.0.3" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "dev": true + }, + "methods": { + "version": "1.1.2", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "dev": true + }, + "mime-db": { + "version": "1.52.0" + }, + "mime-types": { + "version": "2.1.35", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.5.3", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "dev": true + }, + "minimatch": { + "version": "3.0.5", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "dev": true + }, + "minipass": { + "version": "3.3.4", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "dev": true + }, + "mobius1-selectr": { + "version": "2.4.13", + "resolved": "https://registry.npmjs.org/mobius1-selectr/-/mobius1-selectr-2.4.13.tgz", + "integrity": "sha512-Mk9qDrvU44UUL0EBhbAA1phfQZ7aMZPjwtL7wkpiBzGh8dETGqfsh50mWoX9EkjDlkONlErWXArHCKfoxVg0Bw==" + }, + "moment": { + "version": "2.29.4", + "peer": true + }, + "ms": { + "version": "2.1.2" + }, + "multicast-dns": { + "version": "6.2.3", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "dev": true + }, + "mustache": { + "version": "2.3.2", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "dev": true + }, + "needle": { + "version": "2.9.1", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "negotiator": { + "version": "0.6.3", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "dev": true + }, + "ng-swagger-gen": { + "version": "2.3.1", + "dev": true, + "requires": { + "argparse": "^1.0.10", + "global-agent": "^2.1.12", + "global-tunnel-ng": "^2.7.1", + "json-schema-ref-parser": "^5.1.3", + "mustache": "^2.3.2", + "npm-conf": "^1.1.3" + } + }, + "ngx-markdown": { + "version": "13.1.0", + "requires": { + "@types/marked": "^4.0.2", + "emoji-toolkit": "^6.6.0", + "katex": "^0.15.1", + "marked": "^4.0.10", + "prismjs": "^1.25.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "ngx-progressbar": { + "version": "8.0.0", + "requires": { + "tslib": "^2.0.0" + } + }, + "ngx-toastr": { + "version": "14.3.0", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + }, + "node-forge": { + "version": "1.3.1", + "dev": true + }, + "node-gyp": { + "version": "8.4.1", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-releases": { + "version": "2.0.6" + }, + "nopt": { + "version": "5.0.0", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0" + }, + "normalize-range": { + "version": "0.1.2", + "dev": true + }, + "npm-bundled": { + "version": "1.1.2", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-conf": { + "version": "1.1.3", + "dev": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "dev": true + }, + "npm-package-arg": { + "version": "8.1.5", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "3.0.0", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "npm-registry-fetch": { + "version": "12.0.2", + "dev": true, + "requires": { + "make-fetch-happen": "^10.0.1", + "minipass": "^3.1.6", + "minipass-fetch": "^1.4.1", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^8.1.5" + }, + "dependencies": { + "@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "16.1.3", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + } + }, + "glob": { + "version": "8.0.3", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "lru-cache": { + "version": "7.14.0", + "dev": true + }, + "make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "dependencies": { + "minipass-fetch": { + "version": "2.1.2", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + } + } + }, + "minimatch": { + "version": "5.1.0", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "ssri": { + "version": "9.0.1", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "unique-filename": { + "version": "2.0.1", + "dev": true, + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nwsapi": { + "version": "2.2.2" + }, + "oauth-sign": { + "version": "0.9.0" + }, + "object-assign": { + "version": "4.1.1", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "dev": true + }, + "obuf": { + "version": "1.1.2", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "dev": true + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "ono": { + "version": "4.0.11", + "dev": true, + "requires": { + "format-util": "^1.0.3" + } + }, + "open": { + "version": "8.4.0", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.8.3", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "5.4.1", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "pacote": { + "version": "12.0.3", + "dev": true, + "requires": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^2.0.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^3.0.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^12.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "pako": { + "version": "1.0.11", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-node-version": { + "version": "1.0.1", + "dev": true + }, + "parse5": { + "version": "5.1.1", + "optional": true + }, + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "dev": true + } + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "dev": true + } + } + }, + "parse5-sax-parser": { + "version": "6.0.1", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "path-is-inside": { + "version": "1.0.2", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "dev": true + }, + "performance-now": { + "version": "2.1.0" + }, + "picocolors": { + "version": "1.0.0" + }, + "picomatch": { + "version": "2.3.1" + }, + "picomodal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/picomodal/-/picomodal-3.0.0.tgz", + "integrity": "sha512-FoR3TDfuLlqUvcEeK5ifpKSVVns6B4BQvc8SDF6THVMuadya6LLtji0QgUDSStw0ZR2J7I6UGi5V2V23rnPWTw==" + }, + "pify": { + "version": "3.0.0", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "piscina": { + "version": "3.2.0", + "dev": true, + "requires": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0", + "nice-napi": "^1.0.2" + } + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pn": { + "version": "1.1.0" + }, + "popper.js": { + "version": "1.16.1", + "peer": true + }, + "portfinder": { + "version": "1.0.32", + "dev": true, + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "postcss": { + "version": "8.4.5", + "dev": true, + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + } + }, + "postcss-attribute-case-insensitive": { + "version": "5.0.2", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-color-functional-notation": { + "version": "4.2.4", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-hex-alpha": { + "version": "8.0.4", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "7.1.1", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-media": { + "version": "8.0.2", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-properties": { + "version": "12.1.10", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "6.0.3", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-dir-pseudo-class": { + "version": "6.0.5", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-double-position-gradients": { + "version": "3.1.2", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-env-function": { + "version": "4.0.6", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-focus-visible": { + "version": "6.0.4", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-focus-within": { + "version": "5.0.4", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "dev": true, + "requires": {} + }, + "postcss-gap-properties": { + "version": "3.0.5", + "dev": true, + "requires": {} + }, + "postcss-image-set-function": { + "version": "4.0.7", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-import": { + "version": "14.0.2", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-initial": { + "version": "4.0.1", + "dev": true, + "requires": {} + }, + "postcss-lab-function": { + "version": "4.2.1", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-loader": { + "version": "6.2.1", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "postcss-logical": { + "version": "5.0.4", + "dev": true, + "requires": {} + }, + "postcss-media-minmax": { + "version": "5.0.0", + "dev": true, + "requires": {} + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-nesting": { + "version": "10.2.0", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-overflow-shorthand": { + "version": "3.0.4", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-page-break": { + "version": "3.0.4", + "dev": true, + "requires": {} + }, + "postcss-place": { + "version": "7.0.5", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "7.2.3", + "dev": true, + "requires": { + "autoprefixer": "^10.4.2", + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001299", + "css-blank-pseudo": "^3.0.2", + "css-has-pseudo": "^3.0.3", + "css-prefers-color-scheme": "^6.0.2", + "cssdb": "^5.0.0", + "postcss-attribute-case-insensitive": "^5.0.0", + "postcss-color-functional-notation": "^4.2.1", + "postcss-color-hex-alpha": "^8.0.2", + "postcss-color-rebeccapurple": "^7.0.2", + "postcss-custom-media": "^8.0.0", + "postcss-custom-properties": "^12.1.2", + "postcss-custom-selectors": "^6.0.0", + "postcss-dir-pseudo-class": "^6.0.3", + "postcss-double-position-gradients": "^3.0.4", + "postcss-env-function": "^4.0.4", + "postcss-focus-visible": "^6.0.3", + "postcss-focus-within": "^5.0.3", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.2", + "postcss-image-set-function": "^4.0.4", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.0.3", + "postcss-logical": "^5.0.3", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.2", + "postcss-overflow-shorthand": "^3.0.2", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.3", + "postcss-pseudo-class-any-link": "^7.0.2", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^5.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "7.1.6", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "dev": true, + "requires": {} + }, + "postcss-selector-not": { + "version": "5.0.0", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "dev": true + }, + "preact": { + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.2.tgz", + "integrity": "sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw==" + }, + "prelude-ls": { + "version": "1.1.2" + }, + "pretty-bytes": { + "version": "5.6.0", + "dev": true + }, + "prismjs": { + "version": "1.29.0" + }, + "process-nextick-args": { + "version": "2.0.1", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "proto-list": { + "version": "1.2.4", + "dev": true + }, + "protractor": { + "version": "7.0.0", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cliui": { + "version": "6.0.0", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "y18n": { + "version": "4.0.3", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "dev": true + } + } + }, + "prr": { + "version": "1.0.1", + "dev": true, + "optional": true + }, + "psl": { + "version": "1.9.0" + }, + "punycode": { + "version": "2.1.1" + }, + "q": { + "version": "1.4.1", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "dev": true + }, + "qs": { + "version": "6.11.0", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "dev": true + } + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13" + }, + "regenerate": { + "version": "1.4.2", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpu-core": { + "version": "5.2.1", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "dev": true + } + } + }, + "request": { + "version": "2.88.2", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.3" + }, + "tough-cookie": { + "version": "2.5.0", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0" + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "require-directory": { + "version": "2.1.1" + }, + "require-from-string": { + "version": "2.0.2", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "dev": true + }, + "resolve": { + "version": "1.22.0", + "dev": true, + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "dev": true + }, + "resolve-url-loader": { + "version": "5.0.0", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "roarr": { + "version": "2.15.4", + "dev": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + } + }, + "run-async": { + "version": "2.4.1", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.6.7", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1" + } + } + }, + "safe-buffer": { + "version": "5.2.1" + }, + "safer-buffer": { + "version": "2.1.2" + }, + "sass": { + "version": "1.49.9", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "12.4.0", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "saucelabs": { + "version": "1.5.0", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, + "sax": { + "version": "1.2.4", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "tmp": { + "version": "0.0.30", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "2.1.1", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.3.5", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-compare": { + "version": "1.0.0", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "send": { + "version": "0.18.0", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "dev": true + }, + "ms": { + "version": "2.1.3", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "dev": true + } + } + }, + "serialize-error": { + "version": "7.0.1", + "dev": true, + "requires": { + "type-fest": "^0.13.1" + }, + "dependencies": { + "type-fest": { + "version": "0.13.1", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "dev": true + } + } + }, + "serve-static": { + "version": "1.15.0", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "dev": true + }, + "slash": { + "version": "4.0.0", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "dev": true + }, + "socket.io": { + "version": "4.5.3", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "dev": true + }, + "socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "sockjs": { + "version": "0.3.24", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "socks": { + "version": "2.7.1", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "6.2.1", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.7.3", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "dev": true + }, + "source-map-loader": { + "version": "3.0.1", + "dev": true, + "requires": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-resolve": { + "version": "0.6.0", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8" + }, + "spdy": { + "version": "4.0.2", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "sprintf-js": { + "version": "1.1.2", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "8.0.1", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1" + }, + "streamroller": { + "version": "3.1.3", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "dev": true + }, + "stylus": { + "version": "0.56.0", + "dev": true, + "requires": { + "css": "^3.0.0", + "debug": "^4.3.2", + "glob": "^7.1.6", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "source-map": "^0.7.3" + } + }, + "stylus-loader": { + "version": "6.2.0", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "klona": "^2.0.4", + "normalize-path": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true + }, + "symbol-observable": { + "version": "4.0.0", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4" + }, + "tapable": { + "version": "2.2.1", + "dev": true + }, + "tar": { + "version": "6.1.11", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.14.2", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.8.1", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.6", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "dev": true + }, + "through": { + "version": "2.3.8", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0" + }, + "to-regex-range": { + "version": "5.0.1", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "dev": true + }, + "ts-node": { + "version": "7.0.1", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "tslib": { + "version": "2.0.3" + }, + "tslint": { + "version": "6.1.3", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "dev": true + } + } + }, + "tunnel": { + "version": "0.0.6", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5" + }, + "type-check": { + "version": "0.3.2", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.21.3", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-assert": { + "version": "1.0.9", + "dev": true + }, + "typescript": { + "version": "4.6.4" + }, + "ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "dev": true + }, + "validate-npm-package-name": { + "version": "3.0.0", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vanilla-picker": { + "version": "2.12.3", + "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", + "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", + "requires": { + "@sphinxxxx/color-conversion": "^2.2.2" + } + }, + "vary": { + "version": "1.1.2", + "dev": true + }, + "verror": { + "version": "1.10.0", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "void-elements": { + "version": "2.0.1", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "watchpack": { + "version": "2.4.0", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webdriver-manager": { + "version": "12.1.9", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.9.tgz", + "integrity": "sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ==", + "dev": true, + "requires": { + "adm-zip": "^0.5.2", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "ini": { + "version": "1.3.8", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "dev": true + } + } + }, + "webidl-conversions": { + "version": "4.0.2" + }, + "webpack": { + "version": "5.70.0", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "acorn": { + "version": "8.8.1", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.0", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "4.0.0", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.7.3", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.0", + "ws": "^8.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "dev": true + }, + "del": { + "version": "6.1.1", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + } + }, + "globby": { + "version": "11.1.0", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "is-path-cwd": { + "version": "2.2.0", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "slash": { + "version": "3.0.0", + "dev": true + }, + "strip-ansi": { + "version": "7.0.1", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "ws": { + "version": "8.10.0", + "dev": true, + "requires": {} + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "dev": true + }, + "webpack-subresource-integrity": { + "version": "5.1.0", + "dev": true, + "requires": { + "typed-assert": "^1.0.8" + } + }, + "websocket-driver": { + "version": "0.7.4", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0" + }, + "whatwg-url": { + "version": "7.1.0", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "dev": true + }, + "wide-align": { + "version": "1.1.5", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wildcard": { + "version": "2.0.0", + "dev": true + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" + }, + "wrap-ansi": { + "version": "7.0.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + } + } + }, + "wrappy": { + "version": "1.0.2" + }, + "ws": { + "version": "7.5.9", + "requires": {} + }, + "xml-name-validator": { + "version": "3.0.0" + }, + "xml2js": { + "version": "0.4.23", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "dev": true + }, + "xmlchars": { + "version": "2.2.0" + }, + "y18n": { + "version": "5.0.8" + }, + "yallist": { + "version": "4.0.0" + }, + "yaml": { + "version": "1.10.2", + "dev": true + }, + "yargs": { + "version": "17.6.0", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1" + }, + "yn": { + "version": "2.0.0", + "dev": true + }, + "zone.js": { + "version": "0.11.8", + "requires": { + "tslib": "^2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.1" + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000000000000000000000000000000000..cdbc5e26fcd28b2be242aba5d77da395927f7ecb --- /dev/null +++ b/package.json @@ -0,0 +1,72 @@ +{ + "name": "org.etsi.osl.tmf.web", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "~13.3.11", + "@angular/cdk": "~13.3.9", + "@angular/common": "~13.3.11", + "@angular/compiler": "~13.3.11", + "@angular/core": "~13.3.11", + "@angular/forms": "~13.3.11", + "@angular/localize": "^13.3.11", + "@angular/material": "~13.3.9", + "@angular/platform-browser": "~13.3.11", + "@angular/platform-browser-dynamic": "~13.3.11", + "@angular/router": "~13.3.11", + "@danielmoncada/angular-datetime-picker": "~13.1.1", + "@danielmoncada/angular-datetime-picker-moment-adapter": "~1.1.0", + "@fortawesome/fontawesome-free": "~5.15.4", + "@fullcalendar/angular": "~5.11.2", + "@fullcalendar/core": "~5.11.2", + "@fullcalendar/daygrid": "~5.11.2", + "@fullcalendar/interaction": "~5.11.2", + "@fullcalendar/list": "~5.11.2", + "@fullcalendar/resource-timeline": "~5.11.2", + "@fullcalendar/timegrid": "~5.11.2", + "@iplab/ngx-file-upload": "~13.0.0", + "@ng-bootstrap/ng-bootstrap": "~11.0.1", + "ang-jsoneditor": "^1.10.5", + "angular-oauth2-oidc": "~13.0.1", + "blockly": "git://github.com/google/blockly.git#6.20210701.0", + "bootstrap": "~4.6.0", + "jsoneditor": "^9.10.0", + "jwt-decode": "~2.2.0", + "ngx-markdown": "~13.1.0", + "ngx-progressbar": "~8.0.0", + "ngx-toastr": "~14.3.0", + "rxjs": "~6.6.7", + "tslib": "~2.0.0", + "zone.js": "~0.11.8" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~13.3.9", + "@angular/cli": "~13.3.9", + "@angular/compiler-cli": "~13.3.11", + "@angular/language-service": "~13.3.11", + "@types/jasmine": "~3.3.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~12.11.1", + "codelyzer": "~6.0.2", + "jasmine-core": "~3.5.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~6.4.1", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage-istanbul-reporter": "~3.0.2", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "~1.5.0", + "ng-swagger-gen": "^2.2.0", + "protractor": "~7.0.0", + "ts-node": "~7.0.0", + "tslint": "~6.1.0", + "typescript": "~4.6.4" + } +} diff --git a/src/app/app-products-routing.module.ts b/src/app/app-products-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c87cc63d6228111455ed353af85d270a8261651 --- /dev/null +++ b/src/app/app-products-routing.module.ts @@ -0,0 +1,55 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { BootstrapComponent } from './bootstrap/bootstrap.component'; +import { AuthGuardService } from './shared/services/auth-guard.service'; +import { ProductMarketplaceComponent } from './p_product/marketplace/product-marketplace.component'; +import { ListProductCatalogsComponent } from './p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component'; +import { EditProductCategoriesComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component'; +import { ListProductCategoriesComponent } from './p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component'; +import { ListProductSpecsComponent } from './p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component'; +import { EditProductSpecsComponent } from './p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component'; +import { ListOrganizationsComponent } from './shared/components/partyManagement/list-organizations/list-organizations.component'; +import { EditOrganizationsComponent } from './shared/components/partyManagement/edit-organizations/edit-organizations.component'; +import { ListIndividualsComponent } from './shared/components/partyManagement/list-individuals/list-individuals.component'; +import { EditIndividualsComponent } from './shared/components/partyManagement/edit-individuals/edit-individuals.component'; +import { ListProductOfferingsComponent } from './p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component'; +import { EditProductCatalogsComponent } from './p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component'; +import { EditProductOfferingsComponent } from './p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component'; + +const routes: Routes = [ + + // { path: '', component: PortalsComponent}, + { path: 'marketplace', component: ProductMarketplaceComponent }, + { path: '', component: BootstrapComponent, canActivate: [AuthGuardService], runGuardsAndResolvers: 'always', children: [ + { path: 'product_catalogs', component: ListProductCatalogsComponent }, + { path: 'product_catalog_update/:id', component: EditProductCatalogsComponent }, + { path: 'product_catalog_update', component: EditProductCatalogsComponent }, + + { path: 'product_categories', component: ListProductCategoriesComponent }, + { path: 'product_category_update/:id', component: EditProductCategoriesComponent }, + { path: 'product_category_update', component: EditProductCategoriesComponent }, + + { path: 'product_offerings', component: ListProductOfferingsComponent }, + { path: 'product_offering_update/:id', component: EditProductOfferingsComponent }, + { path: 'product_offering_update', component: EditProductOfferingsComponent }, + + { path: 'product_specs', component: ListProductSpecsComponent }, + { path: 'product_spec_update/:id', component: EditProductSpecsComponent }, + { path: 'product_spec_update', component: EditProductSpecsComponent }, + + { path: 'organizations', component: ListOrganizationsComponent }, + { path: 'organization_update/:id', component: EditOrganizationsComponent }, + { path: 'organization_update', component: EditOrganizationsComponent }, + + { path: 'individuals', component: ListIndividualsComponent }, + { path: 'individual_update/:id', component: EditIndividualsComponent }, + { path: 'individual_update', component: EditIndividualsComponent }, + + ]} +]; +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) + +export class AppProductsRoutingModule { } diff --git a/src/app/app-products.module.ts b/src/app/app-products.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..11a32498751fc95b29c93e5036d1fe2afaae38aa --- /dev/null +++ b/src/app/app-products.module.ts @@ -0,0 +1,63 @@ +import { NgModule} from '@angular/core'; + +import { CommonModule } from '@angular/common'; +import { SharedModule } from './shared.module'; +import { AppProductsRoutingModule } from './app-products-routing.module'; +import { ProductMarketplaceComponent } from './p_product/marketplace/product-marketplace.component'; +import { ListProductCatalogsComponent } from './p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component'; +import { ListProductCategoriesComponent } from './p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component'; +import { ListProductSpecsComponent } from './p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component'; +import { EditProductCatalogsComponent } from './p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component'; +import { EditProductCategoriesComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component'; +import { EditProductSpecsComponent } from './p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component'; +import { DeleteProductCatalogsComponent } from './p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component'; +import { DeleteProductCategoriesComponent } from './p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component'; +import { DeleteProductSpecsComponent } from './p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component'; +import { TreeSidenavComponent } from './p_product/marketplace/tree-sidenav/tree-sidenav.component'; +import { AssignServiceSpecificationComponent } from './p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component'; +import { ListProductOfferingsComponent } from './p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component'; +import { DeleteProductOfferingComponent } from './p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component'; +import { EditProductOfferingsComponent } from './p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component'; +import { PreviewMarketPlaceItemComponent } from './p_product/marketplace/preview-market-place-item/preview-market-place-item.component'; +import { AssignProductOfferingsComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component'; +import { AssignSubcategoriesComponent } from './p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component'; + + + +@NgModule({ + declarations: [ + ProductMarketplaceComponent, + TreeSidenavComponent, + ListProductCatalogsComponent, + ListProductCategoriesComponent, + ListProductSpecsComponent, + EditProductCatalogsComponent, + EditProductCategoriesComponent, + EditProductSpecsComponent, + DeleteProductCatalogsComponent, + DeleteProductCategoriesComponent, + DeleteProductSpecsComponent, + AssignServiceSpecificationComponent, + ListProductOfferingsComponent, + DeleteProductOfferingComponent, + EditProductOfferingsComponent, + PreviewMarketPlaceItemComponent, + AssignProductOfferingsComponent, + AssignSubcategoriesComponent + ], + imports: [ + CommonModule, + SharedModule, + AppProductsRoutingModule, + ], + entryComponents: [ + DeleteProductCatalogsComponent, + DeleteProductSpecsComponent, + DeleteProductCategoriesComponent, + DeleteProductOfferingComponent, + AssignServiceSpecificationComponent, + PreviewMarketPlaceItemComponent + ], +}) + +export class AppProductsModule { } diff --git a/src/app/app-resources-routing.module.ts b/src/app/app-resources-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..99e0d194bc967cd73a8e2dfa79d7c1d2b1a56ba5 --- /dev/null +++ b/src/app/app-resources-routing.module.ts @@ -0,0 +1,51 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { BootstrapComponent } from './bootstrap/bootstrap.component'; +import { CommonModule } from '@angular/common'; +import { AuthGuardService } from './shared/services/auth-guard.service'; +import { ListResourceCatalogsComponent } from './p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component'; +import { ListResourceCategoriesComponent } from './p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component'; +import { EditResourceCategoriesComponent } from './p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component'; +import { ListResourceSpecsComponent } from './p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component'; +import { EditResourceSpecsComponent } from './p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component'; +import { PreviewResourceComponent } from './p_resources/admin/inventoryManagement/preview-resource/preview-resource.component'; +import { ListResourceInventoryComponent } from './p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component'; +import { ListResourcePoolsComponent } from './p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component'; +import { ResourceReservationCalendarComponent } from './p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component'; +import { EditResourceReservationComponent } from './p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component'; +import { EditResourcePoolComponent } from './p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component'; +import { ListResourceReservationsComponent } from './p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component'; + +const routes: Routes = [ + // { path: 'resources_marketplace', component: ResourcesMarketplaceComponent }, + { path: '', component: BootstrapComponent, canActivate: [AuthGuardService], runGuardsAndResolvers: 'always', children: [ + { path: 'resource_catalogs', component: ListResourceCatalogsComponent }, + { path: 'resource_categories', component: ListResourceCategoriesComponent }, + { path: 'resource_categories_update/:id', component: EditResourceCategoriesComponent }, + { path: 'resource_categories_update', component: EditResourceCategoriesComponent }, + { path: 'resource_specs', component: ListResourceSpecsComponent }, + { path: 'resource_spec_update/:id', component: EditResourceSpecsComponent }, + { path: 'resource_spec_update', component: EditResourceSpecsComponent }, + { path: 'resource_inventory', component: ListResourceInventoryComponent }, + { path: 'resource/:id', component: PreviewResourceComponent }, + + { path: 'resource_pools', component: ListResourcePoolsComponent }, + { path: 'resource_pool/:id', component: EditResourcePoolComponent }, + { path: 'resource_pool', component: EditResourcePoolComponent }, + + { path: 'resource_reservations', component: ListResourceReservationsComponent }, + { path: 'resource_reservations_calendar', component: ResourceReservationCalendarComponent }, + { path: 'resource_reservation_update/:id', component: EditResourceReservationComponent}, + { path: 'resource_reservation_update', component: EditResourceReservationComponent }, + + ] + } + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class AppResourcesRoutingModule { } diff --git a/src/app/app-resources.module.ts b/src/app/app-resources.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..0938bcda0f77185d5a2238ec395706b562ba440b --- /dev/null +++ b/src/app/app-resources.module.ts @@ -0,0 +1,115 @@ +import { AssignPoolResourceRelationshipsComponent } from './p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component'; +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { ListResourceCatalogsComponent } from './p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component'; + +import { AppResourcesRoutingModule } from './app-resources-routing.module'; + +import { SharedModule } from './shared.module'; +import { EditResourceCatalogsComponent } from './p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component'; +import { DeleteResourceCatalogsComponent } from './p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component'; +import { ListResourceCategoriesComponent } from './p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component'; +import { EditResourceCategoriesComponent } from './p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component'; +import { DeleteResourceCategoriesComponent } from './p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component'; +import { CreateResourceCategoryChildrenComponent } from './p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component'; +import { AssignResourceCandidatesComponent } from './p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component'; +import { EditResourceSpecsComponent, DiscardChangesComponent } from './p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component'; +import { ListResourceSpecsComponent } from './p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component'; +import { EditResourceSpecCharacteristicsComponent } from './p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component'; +import { DeleteResourceSpecCharacteristicsComponent } from './p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component'; +import { DeleteResourceSpecComponent } from './p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component'; +import { ListResourceInventoryComponent } from './p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component'; +import { DeleteResourceSpecAttachmentComponent } from './p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component'; +import { AssignResourceSpecRelationshipsComponent } from './p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component'; +import { DeleteResourceComponent } from './p_resources/admin/catalogManagement/delete-resource/delete-resource.component'; +import { PreviewResourceComponent } from './p_resources/admin/inventoryManagement/preview-resource/preview-resource.component'; + +import { ListResourcePoolsComponent } from './p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component'; +import { EditResourcePoolComponent } from './p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component'; +import { DeleteResourcePoolComponent } from './p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component'; +import { EditResourceReservationComponent } from './p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component'; + +import { FullCalendarModule } from '@fullcalendar/angular'; +import dayGridPlugin from '@fullcalendar/daygrid'; +import timeGridPlugin from '@fullcalendar/timegrid'; +import listPlugin from '@fullcalendar/list'; +import interactionPlugin from '@fullcalendar/interaction'; +import resourceTimelinePlugin from '@fullcalendar/resource-timeline'; + + +import { ResourceReservationCalendarComponent } from './p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component'; +import { ListResourceReservationsComponent } from './p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component'; +import { ResourceReservationsCalendarComponent } from './p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component'; + + +FullCalendarModule.registerPlugins([ // register FullCalendar plugins + dayGridPlugin, + timeGridPlugin, + listPlugin, + interactionPlugin, + resourceTimelinePlugin +]); + +@NgModule({ + declarations: [ + ListResourceCatalogsComponent, + EditResourceCatalogsComponent, + DeleteResourceCatalogsComponent, + ListResourceCategoriesComponent, + EditResourceCategoriesComponent, + DeleteResourceCategoriesComponent, + CreateResourceCategoryChildrenComponent, + DeleteResourceSpecCharacteristicsComponent, + DeleteResourceSpecAttachmentComponent, + AssignResourceCandidatesComponent, + EditResourceSpecsComponent, + EditResourceSpecCharacteristicsComponent, + DiscardChangesComponent, + ListResourceSpecsComponent, + DeleteResourceSpecComponent, + ListResourceInventoryComponent, + AssignResourceSpecRelationshipsComponent, + DeleteResourceComponent, + PreviewResourceComponent, + ListResourcePoolsComponent, + EditResourcePoolComponent, + DeleteResourcePoolComponent, + EditResourceReservationComponent, + ResourceReservationCalendarComponent, + AssignPoolResourceRelationshipsComponent, + ListResourceReservationsComponent, + ResourceReservationsCalendarComponent + ], + imports: [ + CommonModule, + SharedModule, + AppResourcesRoutingModule, + FullCalendarModule + ], + entryComponents: [ + EditResourceCatalogsComponent, + DeleteResourceSpecCharacteristicsComponent, + EditResourceCategoriesComponent, + DeleteResourceSpecAttachmentComponent, + DiscardChangesComponent, + EditResourceSpecsComponent, + DeleteResourceCategoriesComponent, + CreateResourceCategoryChildrenComponent, + AssignResourceCandidatesComponent, + EditResourceSpecCharacteristicsComponent, + DeleteResourceCatalogsComponent, + DeleteResourceSpecComponent, + AssignResourceSpecRelationshipsComponent, + EditResourcePoolComponent, + DeleteResourcePoolComponent, + EditResourceReservationComponent, + AssignPoolResourceRelationshipsComponent + ], + exports: [ + + ], + schemas: [NO_ERRORS_SCHEMA] + +}) +export class AppResourcesModule { } diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..0620c61da3e01d7932c7798228bec44b77c929f8 --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,37 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { LandingComponent } from './landing/landing.component'; +import { PortalsComponent } from './landing/portals/portals.component'; +import { PageNotFoundComponent } from './shared/components/page-not-found/page-not-found.component'; +import { RedirectComponent } from './shared/components/redirect/redirect.component'; + + +const routes: Routes = [ + + { path: '', component: LandingComponent}, + + { path: 'redirect', component: RedirectComponent}, + + { path: 'services', component: PortalsComponent}, + { path: 'services', loadChildren: () => import('./app-services.module').then(m => m.AppServicesModule)}, + + { path: 'resources', component: PortalsComponent}, + { path: 'resources', loadChildren: () => import('./app-resources.module').then(m => m.AppResourcesModule)}, + + { path: 'testing', component: PortalsComponent}, + { path: 'testing', loadChildren: () => import('./app-testing.module').then(m => m.AppTestingModule)}, + + { path: 'products', component: PortalsComponent}, + { path: 'products', loadChildren: () => import('./app-products.module').then(m => m.AppProductsModule)}, + + { path: '**', redirectTo: '404'}, + { path: '404', component: PageNotFoundComponent} + +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes, {scrollPositionRestoration: 'enabled', onSameUrlNavigation: 'reload'})], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/src/app/app-services-routing.module.ts b/src/app/app-services-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..c33709b1e52bde9337f8864fa044380b1d6945a4 --- /dev/null +++ b/src/app/app-services-routing.module.ts @@ -0,0 +1,94 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { BootstrapComponent } from './bootstrap/bootstrap.component'; +import { PortalsComponent } from './landing/portals/portals.component'; + +import { ServicesMarketplaceComponent } from './p_services/marketplace/services-marketplace.component'; +import { ListServiceCatalogsComponent } from './p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component'; +import { ListServiceCategoriesComponent } from './p_services/admin/catalogManagement/list-service-categories/list-service-categories.component'; +import { ListServiceSpecsComponent } from './p_services/admin/catalogManagement/list-service-specs/list-service-specs.component'; +import { EditServiceSpecsComponent } from './p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component'; +import { EditServiceCategoriesComponent } from './p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component'; +import { AuthGuardService } from './shared/services/auth-guard.service'; +import { ServiceOrderCheckoutComponent } from './p_services/orderCheckout/service-order-checkout/service-order-checkout.component'; +import { ListServiceOrdersComponent } from './p_services/admin/orderManagement/list-service-orders/list-service-orders.component'; +import { PreviewServiceOrderComponent } from './p_services/admin/orderManagement/preview-service-order/preview-service-order.component'; +import { ListNsdComponent } from './p_services/admin/serviceDescriptorsImport/list-nsd.component'; +import { ListOrganizationsComponent } from './shared/components/partyManagement/list-organizations/list-organizations.component'; +import { EditOrganizationsComponent } from './shared/components/partyManagement/edit-organizations/edit-organizations.component'; +import { ListIndividualsComponent } from './shared/components/partyManagement/list-individuals/list-individuals.component'; +import { EditIndividualsComponent } from './shared/components/partyManagement/edit-individuals/edit-individuals.component'; +import { PreviewServiceComponent } from './p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component'; +import { ListServiceInventoryComponent } from './p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component'; +import { ListAlarmsComponent } from './p_services/admin/alarmManagement/list-alarms/list-alarms.component'; +import { EditAlarmComponent } from './p_services/admin/alarmManagement/edit-alarm/edit-alarm.component'; +import { ListActionsSpecsComponent } from './p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component'; +import { EditActionSpecsComponent } from './p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component'; +import { ListActionRulesComponent } from './p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component'; +import { EditActionRulesComponent } from './p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component'; +import { ServiceRuleDesignComponent } from './p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component'; +import { ListTestsComponent } from './p_services/admin/testSpecificationImport/list-tests.component'; +import { ServiceOrdersCalendarComponent } from './p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component'; + +const routes: Routes = [ + + // { path: '', component: PortalsComponent}, + { path: 'services_marketplace', component: ServicesMarketplaceComponent }, + { path: '', component: BootstrapComponent, canActivate: [AuthGuardService], runGuardsAndResolvers: 'always', children: [ + { path: 'service_catalogs', component: ListServiceCatalogsComponent }, + { path: 'service_categories', component: ListServiceCategoriesComponent }, + { path: 'service_categories_update/:id', component: EditServiceCategoriesComponent }, + { path: 'service_categories_update', component: EditServiceCategoriesComponent }, + { path: 'service_specs', component: ListServiceSpecsComponent }, + { path: 'service_spec_update/:id', component: EditServiceSpecsComponent }, + { path: 'service_spec_update', component: EditServiceSpecsComponent }, + { path: 'list_nsds', component: ListNsdComponent }, + { path: 'list_tests', component: ListTestsComponent }, + + { path: 'service_orders', component: ListServiceOrdersComponent }, + { path: 'service_order/:id', component: PreviewServiceOrderComponent }, + + { path: 'service_order_checkout', component: ServiceOrderCheckoutComponent }, + { path: 'my_service_orders', component: ListServiceOrdersComponent }, + + + { path: 'service_orders_calendar', component: ServiceOrdersCalendarComponent }, + + { path: 'organizations', component: ListOrganizationsComponent }, + { path: 'organization_update/:id', component: EditOrganizationsComponent }, + { path: 'organization_update', component: EditOrganizationsComponent }, + + { path: 'individuals', component: ListIndividualsComponent }, + { path: 'individual_update/:id', component: EditIndividualsComponent }, + { path: 'individual_update', component: EditIndividualsComponent }, + + { path: 'service/:id', component: PreviewServiceComponent }, + + { path: 'service_inventory', component: ListServiceInventoryComponent }, + + { path: 'alarms', component: ListAlarmsComponent }, + { path: 'alarm/:id', component: EditAlarmComponent }, + + { path: 'action_specs', component: ListActionsSpecsComponent }, + { path: 'action_specs/:id', component: EditActionSpecsComponent }, + { path: 'action_specs', component: EditActionSpecsComponent }, + + { path: 'action_rules', component: ListActionRulesComponent }, + { path: 'action_rule/:id', component: EditActionRulesComponent }, + { path: 'action_rule', component: EditActionRulesComponent }, + + + { path: 'service_rule_design/:id', component: ServiceRuleDesignComponent }, + { path: 'service_rule_design', component: ServiceRuleDesignComponent }, + + ] + } + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class AppServicesRoutingModule { } diff --git a/src/app/app-services.module.ts b/src/app/app-services.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..d8fc418d86b64c597bcc1bbc0b14c6d364324957 --- /dev/null +++ b/src/app/app-services.module.ts @@ -0,0 +1,192 @@ + +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { AppServicesRoutingModule } from './app-services-routing.module'; + +import { BootstrapComponent } from './bootstrap/bootstrap.component'; +import { PortalsComponent } from './landing/portals/portals.component'; + +import { ServicesMarketplaceComponent } from './p_services/marketplace/services-marketplace.component'; +import { ListServiceCatalogsComponent } from './p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component'; +import { ListServiceCategoriesComponent } from './p_services/admin/catalogManagement/list-service-categories/list-service-categories.component'; +import { ListServiceSpecsComponent } from './p_services/admin/catalogManagement/list-service-specs/list-service-specs.component'; +import { EditServiceCatalogsComponent } from './p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component'; +import { EditServiceCategoriesComponent } from './p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component'; +import { EditServiceSpecsComponent, DiscardChangesComponent } from './p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component'; +import { EditServiceSpecCharacteristicsComponent } from './p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component'; +import { DeleteServiceSpecCharacteristicsComponent } from './p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component'; +import { DeleteServiceCatalogComponent } from './p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component'; +import { DeleteServiceCategoryComponent } from './p_services/admin/catalogManagement/delete-service-category/delete-service-category.component'; +import { DeleteServiceSpecComponent } from './p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component'; +import { CreateServiceCategoryChildrenComponent } from './p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component'; +import { TreeSidenavComponent } from './p_services/marketplace/tree-sidenav/tree-sidenav.component'; +import { AssignServiceCandidatesComponent } from './p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component'; +import { PreviewMarketplaceItemComponent } from './p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component'; +import { AssignServiceRelationshipsComponent } from './p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component'; +import { ServiceOrderCheckoutComponent } from './p_services/orderCheckout/service-order-checkout/service-order-checkout.component'; +import { ListServiceOrdersComponent } from './p_services/admin/orderManagement/list-service-orders/list-service-orders.component'; +import { PreviewServiceOrderComponent } from './p_services/admin/orderManagement/preview-service-order/preview-service-order.component'; +import { ListNsdComponent } from './p_services/admin/serviceDescriptorsImport/list-nsd.component'; +import { ImportNsdDialogComponent } from './p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component'; +import { DeleteServiceOrderComponent } from './p_services/admin/orderManagement/delete-service-order/delete-service-order.component'; +import { DeleteAttachmentComponent } from './p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component'; +import { EditOrdersServiceSpecCharacteristicsComponent } from './p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component'; +import { EditServiceOrderItemsComponent } from './p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component'; +import { TerminateServiceOrderItemsComponent } from './p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component'; + +import { PreviewServiceComponent } from './p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component'; +import { EditServiceCharacteristicsComponent } from './p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component'; +import { ListServiceInventoryComponent } from './p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component'; +import { ListAlarmsComponent } from './p_services/admin/alarmManagement/list-alarms/list-alarms.component'; +import { EditAlarmComponent } from './p_services/admin/alarmManagement/edit-alarm/edit-alarm.component'; +import { DeleteAlarmComponent } from './p_services/admin/alarmManagement/delete-alarm/delete-alarm.component'; +import { ListActionsSpecsComponent } from './p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component'; +import { DeleteActionSpecComponent } from './p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component'; +import { EditActionSpecsComponent } from './p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component'; +import { ListActionRulesComponent } from './p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component'; +import { EditActionRulesComponent } from './p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component'; +import { DeleteActionRulesComponent } from './p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component'; +import { ServiceRuleDesignComponent } from './p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component'; +import { DeleteLcmruleComponent } from './p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component'; + +import { ListOrganizationsComponent } from './shared/components/partyManagement/list-organizations/list-organizations.component'; +import { EditOrganizationsComponent } from './shared/components/partyManagement/edit-organizations/edit-organizations.component'; +import { EditPartyCharacteristicsComponent } from './shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component'; +import { DeletePartyCharacteristicComponent } from './shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component'; +import { DeleteOrganizationComponent } from './shared/components/partyManagement/delete-organization/delete-organization.component'; +import { ListIndividualsComponent } from './shared/components/partyManagement/list-individuals/list-individuals.component'; +import { EditIndividualsComponent } from './shared/components/partyManagement/edit-individuals/edit-individuals.component'; +import { DeleteIndividualComponent } from './shared/components/partyManagement/delete-individual/delete-individual.component'; +import { AppModule } from './app.module'; +import { SharedModule } from './shared.module'; +import { ListTestsComponent } from './p_services/admin/testSpecificationImport/list-tests.component'; +import { ImportTestDialogComponent } from './p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component'; +import { ImportLcmruleComponent } from './p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component'; + +import { FullCalendarModule } from '@fullcalendar/angular'; +import dayGridPlugin from '@fullcalendar/daygrid'; +import timeGridPlugin from '@fullcalendar/timegrid'; +import listPlugin from '@fullcalendar/list'; +import interactionPlugin from '@fullcalendar/interaction'; +import resourceTimelinePlugin from '@fullcalendar/resource-timeline'; + +import { ServiceOrdersCalendarComponent } from './p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component'; +import { AssignResourceRelationshipsComponent } from './p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component'; +import { ExecuteManoServicePrimitiveComponent } from './p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component'; + +FullCalendarModule.registerPlugins([ // register FullCalendar plugins + dayGridPlugin, + timeGridPlugin, + listPlugin, + interactionPlugin, + resourceTimelinePlugin + +]); + +@NgModule({ + declarations: [ + // BootstrapComponent, + // PortalsComponent, + ServicesMarketplaceComponent, + ListServiceCatalogsComponent, + ListServiceCategoriesComponent, + ListServiceSpecsComponent, + EditServiceCatalogsComponent, + EditServiceCategoriesComponent, + EditServiceSpecsComponent, + EditServiceSpecCharacteristicsComponent, + DeleteServiceSpecCharacteristicsComponent, + DeleteServiceCatalogComponent, + DeleteServiceCategoryComponent, + DeleteServiceSpecComponent, + CreateServiceCategoryChildrenComponent, + TreeSidenavComponent, + AssignServiceCandidatesComponent, + PreviewMarketplaceItemComponent, + AssignServiceRelationshipsComponent, + ServiceOrderCheckoutComponent, + ListServiceOrdersComponent, + PreviewServiceOrderComponent, + EditOrdersServiceSpecCharacteristicsComponent, + ListNsdComponent, + ImportNsdDialogComponent, + DeleteServiceOrderComponent, + DeleteAttachmentComponent, + DiscardChangesComponent, + EditServiceOrderItemsComponent, + TerminateServiceOrderItemsComponent, + PreviewServiceComponent, + EditServiceCharacteristicsComponent, + ListServiceInventoryComponent, + ListAlarmsComponent, + EditAlarmComponent, + DeleteAlarmComponent, + ListActionsSpecsComponent, + DeleteActionSpecComponent, + EditActionSpecsComponent, + ListActionRulesComponent, + EditActionRulesComponent, + DeleteActionRulesComponent, + ServiceRuleDesignComponent, + DeleteLcmruleComponent, + ListTestsComponent, + ImportTestDialogComponent, + ImportLcmruleComponent, + ServiceOrdersCalendarComponent, + AssignResourceRelationshipsComponent, + ExecuteManoServicePrimitiveComponent + // ListOrganizationsComponent, + // EditOrganizationsComponent, + // EditPartyCharacteristicsComponent, + // DeletePartyCharacteristicComponent, + // DeleteOrganizationComponent, + // ListIndividualsComponent, + // EditIndividualsComponent, + // DeleteIndividualComponent + ], + imports: [ + CommonModule, + SharedModule, + AppServicesRoutingModule, + FullCalendarModule + ], + entryComponents: [ + EditServiceCatalogsComponent, + EditServiceCategoriesComponent, + CreateServiceCategoryChildrenComponent, + AssignServiceCandidatesComponent, + EditServiceSpecCharacteristicsComponent, + DeleteServiceCatalogComponent, + DeleteServiceCategoryComponent, + DeleteServiceSpecComponent, + DeleteServiceSpecCharacteristicsComponent, + AssignServiceRelationshipsComponent, + PreviewMarketplaceItemComponent, + EditOrdersServiceSpecCharacteristicsComponent, + ImportNsdDialogComponent, + DeleteServiceOrderComponent, + DeleteAttachmentComponent, + DiscardChangesComponent, + EditServiceOrderItemsComponent, + TerminateServiceOrderItemsComponent, + EditServiceCharacteristicsComponent, + DeleteAlarmComponent, + DeleteActionSpecComponent, + DeleteActionRulesComponent, + EditActionSpecsComponent, + DeleteLcmruleComponent, + ImportTestDialogComponent, + ImportLcmruleComponent, + ExecuteManoServicePrimitiveComponent + // EditPartyCharacteristicsComponent, + // DeletePartyCharacteristicComponent, + // DeleteOrganizationComponent, + // DeleteIndividualComponent + ], + exports: [ + + ], + schemas: [NO_ERRORS_SCHEMA] +}) +export class AppServicesModule { } diff --git a/src/app/app-testing-routing.module.ts b/src/app/app-testing-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..876b912260d07873b1ee4468f8781ea850d8a5be --- /dev/null +++ b/src/app/app-testing-routing.module.ts @@ -0,0 +1,39 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { BootstrapComponent } from './bootstrap/bootstrap.component'; +import { EditServiceTestComponent } from './p_testing/admin/testManagement/edit-service-test/edit-service-test.component'; +import { ListServiceTestsComponent } from './p_testing/admin/testManagement/list-service-tests/list-service-tests.component'; +import { EditServiceTestSpecComponent } from './p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component'; +import { ListServiceTestSpecsComponent } from './p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component'; +import { EditIndividualsComponent } from './shared/components/partyManagement/edit-individuals/edit-individuals.component'; +import { EditOrganizationsComponent } from './shared/components/partyManagement/edit-organizations/edit-organizations.component'; +import { ListIndividualsComponent } from './shared/components/partyManagement/list-individuals/list-individuals.component'; +import { ListOrganizationsComponent } from './shared/components/partyManagement/list-organizations/list-organizations.component'; +import { AuthGuardService } from './shared/services/auth-guard.service'; + +const routes: Routes = [ + + // { path: '', component: PortalsComponent}, + { path: '', component: BootstrapComponent, canActivate: [AuthGuardService], runGuardsAndResolvers: 'always', children: [ + { path: 'service_test_specs', component: ListServiceTestSpecsComponent}, + { path: 'service_test_spec/:id', component: EditServiceTestSpecComponent}, + { path: 'service_test_spec', component: EditServiceTestSpecComponent}, + + { path: 'service_tests', component: ListServiceTestsComponent}, + { path: 'service_test/:id', component: EditServiceTestComponent}, + + { path: 'organizations', component: ListOrganizationsComponent }, + { path: 'organization_update/:id', component: EditOrganizationsComponent }, + { path: 'organization_update', component: EditOrganizationsComponent }, + + { path: 'individuals', component: ListIndividualsComponent }, + { path: 'individual_update/:id', component: EditIndividualsComponent }, + { path: 'individual_update', component: EditIndividualsComponent } + ]} +]; +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) + +export class AppTestingRoutingModule { } diff --git a/src/app/app-testing.module.ts b/src/app/app-testing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f262a0d92dd211b2bc3493083798e1c0ab8fe24 --- /dev/null +++ b/src/app/app-testing.module.ts @@ -0,0 +1,76 @@ +import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; +import { AppTestingRoutingModule } from './app-testing-routing.module'; + +import { CommonModule } from '@angular/common'; +import { ListOrganizationsComponent } from './shared/components/partyManagement/list-organizations/list-organizations.component'; +import { EditOrganizationsComponent } from './shared/components/partyManagement/edit-organizations/edit-organizations.component'; +import { ListIndividualsComponent } from './shared/components/partyManagement/list-individuals/list-individuals.component'; +import { EditIndividualsComponent } from './shared/components/partyManagement/edit-individuals/edit-individuals.component'; +import { EditPartyCharacteristicsComponent } from './shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component'; +import { DeletePartyCharacteristicComponent } from './shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component'; +import { DeleteOrganizationComponent } from './shared/components/partyManagement/delete-organization/delete-organization.component'; +import { DeleteIndividualComponent } from './shared/components/partyManagement/delete-individual/delete-individual.component'; +import { ListServiceTestSpecsComponent } from './p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component'; +import { ListServiceTestsComponent } from './p_testing/admin/testManagement/list-service-tests/list-service-tests.component'; +import { DiscardChangesComponent, EditServiceTestSpecComponent } from './p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component'; +import { DeleteServiceTestSpecComponent } from './p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component'; +import { AppModule } from './app.module'; +import { SharedModule } from './shared.module'; +import { BootstrapComponent } from './bootstrap/bootstrap.component'; +import { EditTestSpecCharacteristicComponent } from './p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component'; +import { DeleteTestSpecCharacteristicComponent } from './p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component'; +import { DeleteTestSpecAttachmentComponent } from './p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component'; +import { ImportCharacteristicsFromYamlComponent } from './p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component'; +import { EditServiceTestComponent } from './p_testing/admin/testManagement/edit-service-test/edit-service-test.component'; +import { DeleteServiceRelationshipComponent } from './p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component'; +import { DeleteServiceTestComponent } from './p_testing/admin/testManagement/delete-service-test/delete-service-test.component'; + + + +@NgModule({ + declarations: [ + // BootstrapComponent, + // ListOrganizationsComponent, + // EditOrganizationsComponent, + // EditPartyCharacteristicsComponent, + // DeletePartyCharacteristicComponent, + // DeleteOrganizationComponent, + // ListIndividualsComponent, + // EditIndividualsComponent, + // DeleteIndividualComponent, + ListServiceTestSpecsComponent, + ListServiceTestsComponent, + EditServiceTestSpecComponent, + DeleteServiceTestSpecComponent, + EditTestSpecCharacteristicComponent, + DeleteTestSpecCharacteristicComponent, + DeleteTestSpecAttachmentComponent, + ImportCharacteristicsFromYamlComponent, + DiscardChangesComponent, + EditServiceTestComponent, + DeleteServiceRelationshipComponent, + DeleteServiceTestComponent + ], + imports: [ + CommonModule, + SharedModule, + AppTestingRoutingModule, + ], + entryComponents: [ + // EditPartyCharacteristicsComponent, + // DeletePartyCharacteristicComponent, + // DeleteOrganizationComponent, + // DeleteIndividualComponent, + // DeleteServiceTestSpecComponent + EditTestSpecCharacteristicComponent, + DeleteServiceTestSpecComponent, + DeleteTestSpecCharacteristicComponent, + DeleteTestSpecAttachmentComponent, + ImportCharacteristicsFromYamlComponent, + DiscardChangesComponent, + DeleteServiceRelationshipComponent, + DeleteServiceTestComponent + ], +}) + +export class AppTestingModule { } diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b5f6937e41a745b79fe9237e353fa44db439048f --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1,8 @@ + + + +
+ +
+ + \ No newline at end of file diff --git a/src/app/app.component.scss b/src/app/app.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..b2f64fafb5893de186531d1c4c23bc02378d1530 --- /dev/null +++ b/src/app/app.component.scss @@ -0,0 +1,5 @@ +.main_container { + padding-top: 56px; + background-color: #eee; + min-height: 400px; +} \ No newline at end of file diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..2891e41b46113cee9de034b71835dccef39bf627 --- /dev/null +++ b/src/app/app.component.spec.ts @@ -0,0 +1,35 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'org.etsi.osl.tmf.web'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('org.etsi.osl.tmf.web'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain('org.etsi.osl.tmf.web app is running!'); + }); +}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..36a2fc8715a76dd5974324b42322b384b31afdd5 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,56 @@ +import { Component } from '@angular/core'; + +import { OAuthService, JwksValidationHandler } from 'angular-oauth2-oidc'; +import { AuthService } from './shared/services/auth.service'; +import { BootstrapService } from './bootstrap/bootstrap.service'; +import { ThemingService } from './theming/theming.service'; +import { Title } from '@angular/platform-browser'; +import { AppService } from './shared/services/app.service'; +import { IAppConfig } from './shared/models/app-config.model'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'], + providers: [] +}) + +export class AppComponent { + title = 'org.etsi.osl.tmf.web'; + + themeID = 'default' + + favIcon: HTMLLinkElement = document.querySelector('#appIcon'); + + config: IAppConfig + + // private jwtHelper: JwtHelperService = new JwtHelperService(); + + // private _decodedAccessToken: any; + // private _decodedIDToken: any; + // get decodedAccessToken() { return this._decodedAccessToken; } + // get decodedIDToken() { return this._decodedIDToken; } + + constructor( + private authService: AuthService, + private themingService: ThemingService, + private titleService: Title, + private appService: AppService + ) { + this.config = this.appService.config + this.authService.runInitialLoginSequence() + + this.themeID = this.themingService.getConfig().THEME_ID + this.favIcon.href = this.themingService.getConfig().FAVICON_PATH + this.titleService.setTitle(`${this.config.TITLE} portal`) + } + + + + // private handleNewToken() { + // this._decodedAccessToken = this.jwtHelper.decodeToken(this.oauthService.getAccessToken()); + // this._decodedIDToken = this.jwtHelper.decodeToken(this.oauthService.getIdToken()); + // } + + +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..dcd87a961bade50b311292af0ef65bc29e66801f --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,145 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule, LOCALE_ID, NO_ERRORS_SCHEMA } from '@angular/core'; + +import { APP_INITIALIZER } from '@angular/core' +import { BootstrapService } from './bootstrap/bootstrap.service'; +import { ThemingService } from './theming/theming.service'; + + +import enGB from '@angular/common/locales/en-GB'; +import { registerLocaleData } from '@angular/common'; + + +import { + NgbCollapseModule, + NgbDropdownModule +} from '@ng-bootstrap/ng-bootstrap' + +import { NgProgressModule } from 'ngx-progressbar'; +import { NgProgressHttpModule } from 'ngx-progressbar/http'; + +import { OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from '@danielmoncada/angular-datetime-picker'; + +import { ToastrModule } from 'ngx-toastr'; + +import { OAuthModule } from 'angular-oauth2-oidc'; + +import { FileUploadModule } from '@iplab/ngx-file-upload' + +import { MarkdownModule } from 'ngx-markdown' + + +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatButtonModule } from '@angular/material/button'; +import { MatButtonToggleModule } from '@angular/material/button-toggle'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatNativeDateModule } from '@angular/material/core'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatExpansionModule } from '@angular/material/expansion'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatListModule } from '@angular/material/list'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatSelectModule } from '@angular/material/select'; +import { MatSortModule } from '@angular/material/sort'; +import { MatTableModule } from '@angular/material/table'; +import { MatTabsModule } from '@angular/material/tabs'; +import { MatToolbarModule } from '@angular/material/toolbar'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatTreeModule } from '@angular/material/tree'; + +import {DragDropModule} from '@angular/cdk/drag-drop'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { NavbarComponent } from './shared/navbar/navbar.component'; +import { FooterComponent } from './shared/components/footer/footer.component'; +import { ContactComponent } from './shared/components/contact/contact.component'; +import { LandingComponent } from './landing/landing.component'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { TokenInterceptor } from './shared/interceptors/token-interceptor'; +import { AuthService } from './shared/services/auth.service'; + +import { CacheSearchParametersService } from './p_services/admin/shared/cache-search-parameters.service'; +import { PortalsComponent } from './landing/portals/portals.component'; +import { AppService } from './shared/services/app.service'; +import { CloneGstTemplateComponent } from './p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component'; +import { PageNotFoundComponent } from './shared/components/page-not-found/page-not-found.component'; + +import { ListOrganizationsComponent } from './shared/components/partyManagement/list-organizations/list-organizations.component'; +import { EditOrganizationsComponent } from './shared/components/partyManagement/edit-organizations/edit-organizations.component'; +import { EditPartyCharacteristicsComponent } from './shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component'; +import { DeletePartyCharacteristicComponent } from './shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component'; +import { DeleteOrganizationComponent } from './shared/components/partyManagement/delete-organization/delete-organization.component'; +import { ListIndividualsComponent } from './shared/components/partyManagement/list-individuals/list-individuals.component'; +import { EditIndividualsComponent } from './shared/components/partyManagement/edit-individuals/edit-individuals.component'; +import { DeleteIndividualComponent } from './shared/components/partyManagement/delete-individual/delete-individual.component'; +import { jsonParsePipe } from './shared/pipes/jsonParsePipe'; +import { SharedModule } from './shared.module'; +import { RedirectComponent } from './shared/components/redirect/redirect.component'; + + + +registerLocaleData(enGB); +export function initializeApp(bootstrap: BootstrapService) { + return () => bootstrap.loadConfig() +} + +export function initializeAppTheme(bootstrap: BootstrapService) { + return () => bootstrap.loadConfig() +} + +@NgModule({ + declarations: [ + AppComponent, + NavbarComponent, + FooterComponent, + ContactComponent, + LandingComponent, + PortalsComponent, + CloneGstTemplateComponent, + PageNotFoundComponent, + RedirectComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + HttpClientModule, + BrowserAnimationsModule, + NgbCollapseModule, + NgbDropdownModule, + FormsModule, + ReactiveFormsModule, + NgProgressModule, + NgProgressHttpModule, + MatInputModule, + MatDialogModule, + MatCheckboxModule, + OAuthModule.forRoot(), + ToastrModule.forRoot({progressBar: true, preventDuplicates: true}) + ], + providers: [ + AppService, + AuthService, + BootstrapService, + ThemingService, + CacheSearchParametersService, + { provide: LOCALE_ID, useValue: 'en-GB' }, + { provide: APP_INITIALIZER, useFactory: initializeApp, deps: [BootstrapService], multi: true }, + { provide: APP_INITIALIZER, useFactory: initializeAppTheme, deps: [ThemingService], multi: true }, + { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true }, + { provide: OWL_DATE_TIME_LOCALE, useValue: 'en-GB'} + ], + entryComponents: [ + CloneGstTemplateComponent + ], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/src/app/bootstrap/bootstrap.component.spec.ts b/src/app/bootstrap/bootstrap.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e1aecd606bc6f64af167ce3bf49e1ae22752e6a --- /dev/null +++ b/src/app/bootstrap/bootstrap.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BootstrapComponent } from './bootstrap.component'; + +describe('BootstrapComponent', () => { + let component: BootstrapComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BootstrapComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BootstrapComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/bootstrap/bootstrap.component.ts b/src/app/bootstrap/bootstrap.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..641056e9f71036cab10bf11e2edfa319efa92664 --- /dev/null +++ b/src/app/bootstrap/bootstrap.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-bootstrap', + template: '' +}) +export class BootstrapComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/bootstrap/bootstrap.service.spec.ts b/src/app/bootstrap/bootstrap.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..1de9bfc9111104271983c4123cea0547f8fb7d14 --- /dev/null +++ b/src/app/bootstrap/bootstrap.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { BootstrapService } from './bootstrap.service'; + +describe('BootstrapService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: BootstrapService = TestBed.get(BootstrapService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/bootstrap/bootstrap.service.ts b/src/app/bootstrap/bootstrap.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..57e2085a37f794e9336bd92732419c0ad69a067f --- /dev/null +++ b/src/app/bootstrap/bootstrap.service.ts @@ -0,0 +1,55 @@ +import { Injectable, Injector } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { environment } from 'src/environments/environment'; +import { IAppConfig } from 'src/app/shared/models/app-config.model' + +@Injectable({ + providedIn: 'root' +}) +export class BootstrapService { + + constructor(private http: HttpClient) { } + + private config: IAppConfig + + public getConfig(): IAppConfig { + return this.config + } + + loadConfig() { + const jsonFile = `assets/config/config.${environment.name}.json`; + + return new Promise( (resolve, reject) => { + this.http.get(jsonFile).subscribe( + response => { + this.config = response + + let baseUrl:string + baseUrl = window.location.origin + + depth2ObjectStrReplace(this.config, "{BASEURL}", baseUrl) + resolve(true) + + function depth2ObjectStrReplace(object, strSearchValue, strReplaceValue) { + Object.entries(object).forEach( (depth1Entries) => { + + if (depth1Entries[1] instanceof Object) { + Object.entries(depth1Entries[1]).forEach ( (depth2Entries) => { + if (typeof depth2Entries[1] === 'string') + object[depth1Entries[0]][depth2Entries[0]] = depth2Entries[1].replace(strSearchValue, strReplaceValue) + }) + } else { + if (typeof depth1Entries[1] === 'string') + object[depth1Entries[0]] = depth1Entries[1].replace(strSearchValue, strReplaceValue) + } + }); + } + + }, + error => { + reject(`Could not load file '${jsonFile}': ${(error)}`) + } + ) + }) + } +} diff --git a/src/app/landing/landing.component.html b/src/app/landing/landing.component.html new file mode 100644 index 0000000000000000000000000000000000000000..f1fbe7786f31d72dad28a34eab57e0d4fb3e4431 --- /dev/null +++ b/src/app/landing/landing.component.html @@ -0,0 +1,102 @@ +
+
+
+
+ +

+ Welcome to the {{config.TITLE}} portal +

+
{{config.TITLE}} portal is powered by OpenSlice, a prototype open source, Operations Support System. It supports VNF/NSD onboarding to OpenSourceMANO (OSM) and NSD deployment management. It also supports TM Forum OpenAPIs regarding Service Catalog Management, Ordering, Resource, etc.
+ +
Check our wiki for further documentation.
+ +
+
+
+
+ + + + + + + + + + diff --git a/src/app/landing/landing.component.scss b/src/app/landing/landing.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e9d49f41ad77da04207aaeaf9f329cab28a96132 --- /dev/null +++ b/src/app/landing/landing.component.scss @@ -0,0 +1,14 @@ +.section_welcome { + color: #FFFFFF; + background: url('~src/assets/images/landing/background.png') no-repeat center center #aeaeae; + // margin-top: 10px; + padding: 80px 0 ; + // min-height: 380px; + display: flex; + align-items: center; +} + +.section_info { + // padding: 20px 0; + background-color: #FFFFFF; +} \ No newline at end of file diff --git a/src/app/landing/landing.component.spec.ts b/src/app/landing/landing.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..fc4cff873e016126d8377866adbfa405b5ee62e4 --- /dev/null +++ b/src/app/landing/landing.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LandingComponent } from './landing.component'; + +describe('LandingComponent', () => { + let component: LandingComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LandingComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LandingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/landing/landing.component.ts b/src/app/landing/landing.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..daa0b11f5bbeb3322c1f248333320f0d1512ecf2 --- /dev/null +++ b/src/app/landing/landing.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit } from '@angular/core'; +import { AppService } from 'src/app/shared/services/app.service'; +import { IAppConfig } from 'src/app/shared/models/app-config.model'; +import { OAuthService } from 'angular-oauth2-oidc'; +import { AuthService } from 'src/app/shared/services/auth.service'; + +@Component({ + selector: 'app-landing', + templateUrl: './landing.component.html', + styleUrls: ['./landing.component.scss'] +}) +export class LandingComponent implements OnInit { + + constructor( + private appService: AppService, + public authService: AuthService + ) { } + + config: IAppConfig + loggedIn: boolean + + ngOnInit() { + this.config = this.appService.config + this.authService.isAuthenticated$.subscribe( + isAuthenticated => this.loggedIn = isAuthenticated + ) + } + + login() { + this.authService.login() + } +} diff --git a/src/app/landing/portals/portals.component.html b/src/app/landing/portals/portals.component.html new file mode 100644 index 0000000000000000000000000000000000000000..60b069b6730d8e49c3b95bf2cbfc3c7f65130fb9 --- /dev/null +++ b/src/app/landing/portals/portals.component.html @@ -0,0 +1,98 @@ + + + diff --git a/src/app/landing/portals/portals.component.scss b/src/app/landing/portals/portals.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..765c8fef9288a7dc24a16c42e8fd30156735fd7e --- /dev/null +++ b/src/app/landing/portals/portals.component.scss @@ -0,0 +1,14 @@ +.section_signup { + color: #FFFFFF; + background: url('~src/assets/images/loginlayer_background.PNG') no-repeat center center #aeaeae; + // margin-top: 10px; + padding: 30px 0 150px 0; + // min-height: 380px; + display: flex; + align-items: center; +} + +.section_info { + padding: 80px 0; + +} \ No newline at end of file diff --git a/src/app/landing/portals/portals.component.spec.ts b/src/app/landing/portals/portals.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9c59515299a9944320af6781bb2837539e265c50 --- /dev/null +++ b/src/app/landing/portals/portals.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PortalsComponent } from './portals.component'; + +describe('PortalsComponent', () => { + let component: PortalsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PortalsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PortalsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/landing/portals/portals.component.ts b/src/app/landing/portals/portals.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..24a88b9c0eee733f7c5dff046e2e69c84bb6ce34 --- /dev/null +++ b/src/app/landing/portals/portals.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { IAppConfig } from 'src/app/shared/models/app-config.model'; +import { AppService } from 'src/app/shared/services/app.service'; +import { AuthService } from 'src/app/shared/services/auth.service'; + +@Component({ + selector: 'app-portals', + templateUrl: './portals.component.html', + styleUrls: ['./portals.component.scss'] +}) +export class PortalsComponent implements OnInit { + + constructor( + public appService: AppService, + public authService: AuthService + ) { } + + config: IAppConfig + loggedIn: boolean + + ngOnInit() { + this.config = this.appService.config + this.authService.isAuthenticated$.subscribe( + isAuthenticated => this.loggedIn = isAuthenticated + ) + } + + login() { + this.authService.login() + } + +} diff --git a/src/app/openApis/alarmManagement/api-configuration.ts b/src/app/openApis/alarmManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/alarmManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/alarmManagement/api.module.ts b/src/app/openApis/alarmManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..4495305a2f5cdfe8961790a348a46654ac96e001 --- /dev/null +++ b/src/app/openApis/alarmManagement/api.module.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { AckAlarmsService } from './services/ack-alarms.service'; +import { AlarmService } from './services/alarm.service'; +import { ClearAlarmsService } from './services/clear-alarms.service'; +import { CommentAlarmsService } from './services/comment-alarms.service'; +import { GroupAlarmsService } from './services/group-alarms.service'; +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { UnAckAlarmsService } from './services/un-ack-alarms.service'; +import { UnGroupAlarmsService } from './services/un-group-alarms.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + AckAlarmsService, + AlarmService, + ClearAlarmsService, + CommentAlarmsService, + GroupAlarmsService, + EventsSubscriptionService, + UnAckAlarmsService, + UnGroupAlarmsService, + NotificationListenersClientSideService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/alarmManagement/base-service.ts b/src/app/openApis/alarmManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/alarmManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/alarmManagement/models.ts b/src/app/openApis/alarmManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..22d025c9e8d9d129f96738c456e0342b16ac9e84 --- /dev/null +++ b/src/app/openApis/alarmManagement/models.ts @@ -0,0 +1,58 @@ +export { AckAlarms } from './models/ack-alarms'; +export { AckAlarmsCreate } from './models/ack-alarms-create'; +export { AckAlarmsCreateEvent } from './models/ack-alarms-create-event'; +export { AckAlarmsCreateEventPayload } from './models/ack-alarms-create-event-payload'; +export { AckAlarmsStateChangeEvent } from './models/ack-alarms-state-change-event'; +export { AckAlarmsStateChangeEventPayload } from './models/ack-alarms-state-change-event-payload'; +export { AffectedService } from './models/affected-service'; +export { Alarm } from './models/alarm'; +export { AlarmAttributeValueChangeEvent } from './models/alarm-attribute-value-change-event'; +export { AlarmAttributeValueChangeEventPayload } from './models/alarm-attribute-value-change-event-payload'; +export { AlarmCreate } from './models/alarm-create'; +export { AlarmCreateEvent } from './models/alarm-create-event'; +export { AlarmCreateEventPayload } from './models/alarm-create-event-payload'; +export { AlarmDeleteEvent } from './models/alarm-delete-event'; +export { AlarmDeleteEventPayload } from './models/alarm-delete-event-payload'; +export { AlarmRef } from './models/alarm-ref'; +export { AlarmRefOrValue } from './models/alarm-ref-or-value'; +export { AlarmStateChangeEvent } from './models/alarm-state-change-event'; +export { AlarmStateChangeEventPayload } from './models/alarm-state-change-event-payload'; +export { AlarmUpdate } from './models/alarm-update'; +export { AlarmedObject } from './models/alarmed-object'; +export { ClearAlarms } from './models/clear-alarms'; +export { ClearAlarmsCreate } from './models/clear-alarms-create'; +export { ClearAlarmsCreateEvent } from './models/clear-alarms-create-event'; +export { ClearAlarmsCreateEventPayload } from './models/clear-alarms-create-event-payload'; +export { ClearAlarmsStateChangeEvent } from './models/clear-alarms-state-change-event'; +export { ClearAlarmsStateChangeEventPayload } from './models/clear-alarms-state-change-event-payload'; +export { Comment } from './models/comment'; +export { CommentAlarms } from './models/comment-alarms'; +export { CommentAlarmsCreate } from './models/comment-alarms-create'; +export { CommentAlarmsCreateEvent } from './models/comment-alarms-create-event'; +export { CommentAlarmsCreateEventPayload } from './models/comment-alarms-create-event-payload'; +export { CommentAlarmsStateChangeEvent } from './models/comment-alarms-state-change-event'; +export { CommentAlarmsStateChangeEventPayload } from './models/comment-alarms-state-change-event-payload'; +export { CrossedThresholdInformation } from './models/crossed-threshold-information'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { GroupAlarms } from './models/group-alarms'; +export { GroupAlarmsCreate } from './models/group-alarms-create'; +export { GroupAlarmsCreateEvent } from './models/group-alarms-create-event'; +export { GroupAlarmsCreateEventPayload } from './models/group-alarms-create-event-payload'; +export { GroupAlarmsStateChangeEvent } from './models/group-alarms-state-change-event'; +export { GroupAlarmsStateChangeEventPayload } from './models/group-alarms-state-change-event-payload'; +export { RelatedPlaceRefOrValue } from './models/related-place-ref-or-value'; +export { ThresholdRef } from './models/threshold-ref'; +export { UnAckAlarms } from './models/un-ack-alarms'; +export { UnAckAlarmsCreate } from './models/un-ack-alarms-create'; +export { UnAckAlarmsCreateEvent } from './models/un-ack-alarms-create-event'; +export { UnAckAlarmsCreateEventPayload } from './models/un-ack-alarms-create-event-payload'; +export { UnAckAlarmsStateChangeEvent } from './models/un-ack-alarms-state-change-event'; +export { UnAckAlarmsStateChangeEventPayload } from './models/un-ack-alarms-state-change-event-payload'; +export { UnGroupAlarms } from './models/un-group-alarms'; +export { UnGroupAlarmsCreate } from './models/un-group-alarms-create'; +export { UnGroupAlarmsCreateEvent } from './models/un-group-alarms-create-event'; +export { UnGroupAlarmsCreateEventPayload } from './models/un-group-alarms-create-event-payload'; +export { UnGroupAlarmsStateChangeEvent } from './models/un-group-alarms-state-change-event'; +export { UnGroupAlarmsStateChangeEventPayload } from './models/un-group-alarms-state-change-event-payload'; diff --git a/src/app/openApis/alarmManagement/models/ack-alarms-create-event-payload.ts b/src/app/openApis/alarmManagement/models/ack-alarms-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..87812ca84c01485056de8b3c17b2dc14a295189a --- /dev/null +++ b/src/app/openApis/alarmManagement/models/ack-alarms-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { AckAlarms } from './ack-alarms'; + +/** + * The event data structure + */ +export interface AckAlarmsCreateEventPayload { + ackAlarms?: AckAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/ack-alarms-create-event.ts b/src/app/openApis/alarmManagement/models/ack-alarms-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e087d92d1f528d2da64957e7cfb7b1cb6b99e40 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/ack-alarms-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { AckAlarmsCreateEventPayload } from './ack-alarms-create-event-payload'; + +/** + * The notification data structure + */ +export interface AckAlarmsCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: AckAlarmsCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/ack-alarms-create.ts b/src/app/openApis/alarmManagement/models/ack-alarms-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..a59f0efece4c61ca1a16391dd458851ad0aa911e --- /dev/null +++ b/src/app/openApis/alarmManagement/models/ack-alarms-create.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +import { AlarmRefOrValue } from './alarm-ref-or-value'; +import { Alarm } from './alarm'; + +/** + * Task resource for the acknowledge alarms operation Skipped properties: id,href + */ +export interface AckAlarmsCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Name of the acknowledging system + */ + ackSystemId: string; + + /** + * Time of the acknowledgement + */ + ackTime?: string; + + /** + * Name of the acknowledging user + */ + ackUserId: string; + + /** + * The successfully acknowledged alarms + */ + ackedAlarm?: Array; + + /** + * Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm. + */ + alarmPattern: Array; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Current state of the operation task + */ + state?: string; +} diff --git a/src/app/openApis/alarmManagement/models/ack-alarms-state-change-event-payload.ts b/src/app/openApis/alarmManagement/models/ack-alarms-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..3a3ae64396d9fc9fe26016228061a6b11f4bd575 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/ack-alarms-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { AckAlarms } from './ack-alarms'; + +/** + * The event data structure + */ +export interface AckAlarmsStateChangeEventPayload { + ackAlarms?: AckAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/ack-alarms-state-change-event.ts b/src/app/openApis/alarmManagement/models/ack-alarms-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..59d172cefcf406c41b1c5298cd11497ab2d9d3f8 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/ack-alarms-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { AckAlarmsStateChangeEventPayload } from './ack-alarms-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface AckAlarmsStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: AckAlarmsStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/ack-alarms.ts b/src/app/openApis/alarmManagement/models/ack-alarms.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3641aaa2a00b7ee09c2e63ade30485986644dfb --- /dev/null +++ b/src/app/openApis/alarmManagement/models/ack-alarms.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +import { AlarmRefOrValue } from './alarm-ref-or-value'; +import { Alarm } from './alarm'; + +/** + * Task resource for the acknowledge alarms operation + */ +export interface AckAlarms { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Name of the acknowledging system + */ + ackSystemId?: string; + + /** + * Time of the acknowledgement + */ + ackTime?: string; + + /** + * Name of the acknowledging user + */ + ackUserId?: string; + + /** + * The successfully acknowledged alarms + */ + ackedAlarm?: Array; + + /** + * Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm. + */ + alarmPattern?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Current state of the operation task + */ + state?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/affected-service.ts b/src/app/openApis/alarmManagement/models/affected-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..80c86ba94999f2a1e7a1c3d9f23b4eb79bf9b75e --- /dev/null +++ b/src/app/openApis/alarmManagement/models/affected-service.ts @@ -0,0 +1,21 @@ +/* tslint:disable */ +export interface AffectedService { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-attribute-value-change-event-payload.ts b/src/app/openApis/alarmManagement/models/alarm-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..ca6f07c529f26a19739907c3b1cd4cc72cc07c4d --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-attribute-value-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; + +/** + * The event data structure + */ +export interface AlarmAttributeValueChangeEventPayload { + alarm?: Alarm; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-attribute-value-change-event.ts b/src/app/openApis/alarmManagement/models/alarm-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..1014251e230277c6aeea7f378693b99392979078 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-attribute-value-change-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +import { AlarmAttributeValueChangeEventPayload } from './alarm-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface AlarmAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: AlarmAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-create-event-payload.ts b/src/app/openApis/alarmManagement/models/alarm-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..d67f77bf195393db975406b1a3862b787fa985f8 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; + +/** + * The event data structure + */ +export interface AlarmCreateEventPayload { + alarm?: Alarm; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-create-event.ts b/src/app/openApis/alarmManagement/models/alarm-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..81da3054769265e2d0c67ec4002c1901ebadf598 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { AlarmCreateEventPayload } from './alarm-create-event-payload'; + +/** + * The notification data structure + */ +export interface AlarmCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: AlarmCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-create.ts b/src/app/openApis/alarmManagement/models/alarm-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..4139ed039f11b95593c011e10527bb643467e8d7 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-create.ts @@ -0,0 +1,158 @@ +/* tslint:disable */ +import { AffectedService } from './affected-service'; +import { AlarmedObject } from './alarmed-object'; +import { Comment } from './comment'; +import { AlarmRef } from './alarm-ref'; +import { CrossedThresholdInformation } from './crossed-threshold-information'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; + +/** + * This resource represents an alarm supporting the information model defined in ITU-T X.733. Skipped properties: id,href + */ +export interface AlarmCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Provides the Acknowledgement State of the alarm + */ + ackState?: string; + + /** + * Provides the name of the system that last changed the ackState of an alarm, i.e. acknowledged or unacknowledged the alarm. + */ + ackSystemId?: string; + + /** + * Provides the id of the user who has last changed the ack state of the alarm, i.e. acknowledged or unacknowledged the alarm. + */ + ackUserId?: string; + affectedService?: Array; + + /** + * Indicates the last date and time when the alarm is changed on the alarm-owning system. Any change to the alarm whether coming from the alarmed resource, or triggered by a change from the client is changing this time. + */ + alarmChangedTime?: string; + + /** + * Indicates the time (as a date + time) at which the alarm is cleared at the source. + */ + alarmClearedTime?: string; + + /** + * Contains further information on the alarm. + */ + alarmDetails?: string; + + /** + * Indicates if this alarm has been escalated or not. + */ + alarmEscalation?: boolean; + + /** + * Indicates the time (as a date + time) at which the alarm occurred at its source. + */ + alarmRaisedTime: string; + + /** + * Indicates the time (as a date + time) at which the alarm was reported by the owning OSS. It might be different from the alarmRaisedTime. For instance, if the alarm list is maintained by an EMS, the alarmRaisedtime would be the time the alarm was detected by the NE, while the alarmReportingTime would be the time this alarm was stored in the alarm list of the EMS. + */ + alarmReportingTime?: string; + + /** + * Categorize the alarm. Should be one of the values defined in X.733 8.1.1 or 3GPP TS 32.111-2 Annex A: Communications Alarm Processing Error Alarm Environmental Alarm Quality of Service Alarm Equipment Alarm Integrity Violation Operational Violation Physical Violation Security Service or Mechanism Violation Time Domain Violation + */ + alarmType?: string; + alarmedObject?: AlarmedObject; + + /** + * The type (class) of the managed object associated with the event. + */ + alarmedObjectType?: string; + + /** + * The base type of this alarm. + */ + atBaseType?: string; + + /** + * A reference to the schema describing this alarm. + */ + atSchemaLocation?: string; + + /** + * The type for this alarm. + */ + atType?: string; + + /** + * Provides the id of the system where the user who invoked the alarmCleared operation is located. + */ + clearSystemId?: string; + + /** + * Provides the id of the user who invoked the alarmCleared operation + */ + clearUserId?: string; + comment?: Array; + correlatedAlarm?: Array; + crossedThresholdInformation?: CrossedThresholdInformation; + + /** + * An identifier of the alarm in the source system. + */ + externalAlarmId?: string; + + /** + * Indicates whether the alarm is a root cause alarm.. + */ + isRootCause?: boolean; + parentAlarm?: Array; + + /** + * Lists the possible severities that can be allocated to an Alarm. The values are consistent with ITU-T Recommendation X.733. Once an alarm has been cleared, its perceived severity is set to 'cleared' and can no longer be set. + */ + perceivedSeverity?: string; + place?: Array; + + /** + * Indicates that the Managed Object (related to this alarm) is in planned outage (in planned maintenance, or out-of-service). + */ + plannedOutageIndicator?: string; + + /** + * Provides the probable cause of the alarm. The values are consistent with ITU-T Recommendation X.733 or 3GPP TS 32.111-2 Annex B. + */ + probableCause?: string; + + /** + * Indicates proposed repair actions, if known to the system emitting the alarm. + */ + proposedRepairedActions?: string; + + /** + * Reporting system identity. + */ + reportingSystemId?: string; + + /** + * Indicates whether the alarm affects service or not. + */ + serviceAffecting?: boolean; + + /** + * Source system identity. + */ + sourceSystemId: string; + + /** + * Provides more specific information about the alarm. + */ + specificProblem?: string; + + /** + * Defines the alarm state during its life cycle + */ + state?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-delete-event-payload.ts b/src/app/openApis/alarmManagement/models/alarm-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..d1169a0d3929277c0d49a15b93a7cb59f5d63c56 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; + +/** + * The event data structure + */ +export interface AlarmDeleteEventPayload { + alarm?: Alarm; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-delete-event.ts b/src/app/openApis/alarmManagement/models/alarm-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..7edf2f7503f684e4d337f3752b8ad5eb6f710887 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-delete-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { AlarmDeleteEventPayload } from './alarm-delete-event-payload'; + +/** + * The notification data structure + */ +export interface AlarmDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: AlarmDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-ref-or-value.ts b/src/app/openApis/alarmManagement/models/alarm-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..e258016433256dce36132566690ca77e41489b74 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-ref-or-value.ts @@ -0,0 +1,173 @@ +/* tslint:disable */ +import { AffectedService } from './affected-service'; +import { AlarmedObject } from './alarmed-object'; +import { Comment } from './comment'; +import { AlarmRef } from './alarm-ref'; +import { CrossedThresholdInformation } from './crossed-threshold-information'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; + +/** + * An alarm defined by reference or value. The polymorphic attributes '@type', '@schemaLocation' & '@referredType' are related to the alarm entity and not the RelatedAlarmRefOrValue class itself + */ +export interface AlarmRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Provides the Acknowledgement State of the alarm + */ + ackState?: string; + + /** + * Provides the name of the system that last changed the ackState of an alarm, i.e. acknowledged or unacknowledged the alarm. + */ + ackSystemId?: string; + + /** + * Provides the id of the user who has last changed the ack state of the alarm, i.e. acknowledged or unacknowledged the alarm. + */ + ackUserId?: string; + affectedService?: Array; + + /** + * Indicates the last date and time when the alarm is changed on the alarm-owning system. Any change to the alarm whether coming from the alarmed resource, or triggered by a change from the client is changing this time. + */ + alarmChangedTime?: string; + + /** + * Indicates the time (as a date + time) at which the alarm is cleared at the source. + */ + alarmClearedTime?: string; + + /** + * Contains further information on the alarm. + */ + alarmDetails?: string; + + /** + * Indicates if this alarm has been escalated or not. + */ + alarmEscalation?: boolean; + + /** + * Indicates the time (as a date + time) at which the alarm occurred at its source. + */ + alarmRaisedTime?: string; + + /** + * Indicates the time (as a date + time) at which the alarm was reported by the owning OSS. It might be different from the alarmRaisedTime. For instance, if the alarm list is maintained by an EMS, the alarmRaisedtime would be the time the alarm was detected by the NE, while the alarmReportingTime would be the time this alarm was stored in the alarm list of the EMS. + */ + alarmReportingTime?: string; + + /** + * Categorize the alarm. Should be one of the values defined in X.733 8.1.1 or 3GPP TS 32.111-2 Annex A: Communications Alarm Processing Error Alarm Environmental Alarm Quality of Service Alarm Equipment Alarm Integrity Violation Operational Violation Physical Violation Security Service or Mechanism Violation Time Domain Violation + */ + alarmType?: string; + alarmedObject?: AlarmedObject; + + /** + * The type (class) of the managed object associated with the event. + */ + alarmedObjectType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Provides the id of the system where the user who invoked the alarmCleared operation is located. + */ + clearSystemId?: string; + + /** + * Provides the id of the user who invoked the alarmCleared operation + */ + clearUserId?: string; + comment?: Array; + correlatedAlarm?: Array; + crossedThresholdInformation?: CrossedThresholdInformation; + + /** + * An identifier of the alarm in the source system. + */ + externalAlarmId?: string; + + /** + * A reference to the alarm. + */ + href?: string; + + /** + * Identifier of the alarm, determined by the alarm owning system + */ + id?: number; + + /** + * Indicates whether the alarm is a root cause alarm.. + */ + isRootCause?: boolean; + + /** + * Name of the entity + */ + name?: string; + parentAlarm?: Array; + + /** + * Lists the possible severities that can be allocated to an Alarm. The values are consistent with ITU-T Recommendation X.733. Once an alarm has been cleared, its perceived severity is set to 'cleared' and can no longer be set. + */ + perceivedSeverity?: string; + place?: Array; + + /** + * Indicates that the Managed Object (related to this alarm) is in planned outage (in planned maintenance, or out-of-service). + */ + plannedOutageIndicator?: string; + + /** + * Provides the probable cause of the alarm. The values are consistent with ITU-T Recommendation X.733 or 3GPP TS 32.111-2 Annex B. + */ + probableCause?: string; + + /** + * Indicates proposed repair actions, if known to the system emitting the alarm. + */ + proposedRepairedActions?: string; + + /** + * Reporting system identity. + */ + reportingSystemId?: string; + + /** + * Indicates whether the alarm affects service or not. + */ + serviceAffecting?: boolean; + + /** + * Source system identity. + */ + sourceSystemId?: string; + + /** + * Provides more specific information about the alarm. + */ + specificProblem?: string; + + /** + * Defines the alarm state during its life cycle + */ + state?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-ref.ts b/src/app/openApis/alarmManagement/models/alarm-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..1c69e999579c4280907cd1b6ba3e60255ab4e909 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-ref.ts @@ -0,0 +1,32 @@ +/* tslint:disable */ +export interface AlarmRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-state-change-event-payload.ts b/src/app/openApis/alarmManagement/models/alarm-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c26928c229a5bb116c6f956aeb49cfb9e69bcfe --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; + +/** + * The event data structure + */ +export interface AlarmStateChangeEventPayload { + alarm?: Alarm; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-state-change-event.ts b/src/app/openApis/alarmManagement/models/alarm-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..55f523470d6f22ff8323edad8d668395eab47bb4 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { AlarmStateChangeEventPayload } from './alarm-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface AlarmStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: AlarmStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm-update.ts b/src/app/openApis/alarmManagement/models/alarm-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..187be31bd10c6816e33ec3c3999da57e42481c76 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm-update.ts @@ -0,0 +1,148 @@ +/* tslint:disable */ +import { AffectedService } from './affected-service'; +import { AlarmedObject } from './alarmed-object'; +import { Comment } from './comment'; +import { AlarmRef } from './alarm-ref'; +import { CrossedThresholdInformation } from './crossed-threshold-information'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; + +/** + * This resource represents an alarm supporting the information model defined in ITU-T X.733. Skipped properties: id,href,alarmRaisedTime,sourceSystemId + */ +export interface AlarmUpdate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Provides the Acknowledgement State of the alarm + */ + ackState?: string; + + /** + * Provides the name of the system that last changed the ackState of an alarm, i.e. acknowledged or unacknowledged the alarm. + */ + ackSystemId?: string; + + /** + * Provides the id of the user who has last changed the ack state of the alarm, i.e. acknowledged or unacknowledged the alarm. + */ + ackUserId?: string; + affectedService?: Array; + + /** + * Indicates the last date and time when the alarm is changed on the alarm-owning system. Any change to the alarm whether coming from the alarmed resource, or triggered by a change from the client is changing this time. + */ + alarmChangedTime?: string; + + /** + * Indicates the time (as a date + time) at which the alarm is cleared at the source. + */ + alarmClearedTime?: string; + + /** + * Contains further information on the alarm. + */ + alarmDetails?: string; + + /** + * Indicates if this alarm has been escalated or not. + */ + alarmEscalation?: boolean; + + /** + * Indicates the time (as a date + time) at which the alarm was reported by the owning OSS. It might be different from the alarmRaisedTime. For instance, if the alarm list is maintained by an EMS, the alarmRaisedtime would be the time the alarm was detected by the NE, while the alarmReportingTime would be the time this alarm was stored in the alarm list of the EMS. + */ + alarmReportingTime?: string; + + /** + * Categorize the alarm. Should be one of the values defined in X.733 8.1.1 or 3GPP TS 32.111-2 Annex A: Communications Alarm Processing Error Alarm Environmental Alarm Quality of Service Alarm Equipment Alarm Integrity Violation Operational Violation Physical Violation Security Service or Mechanism Violation Time Domain Violation + */ + alarmType?: string; + alarmedObject?: AlarmedObject; + + /** + * The type (class) of the managed object associated with the event. + */ + alarmedObjectType?: string; + + /** + * The base type of this alarm. + */ + atBaseType?: string; + + /** + * A reference to the schema describing this alarm. + */ + atSchemaLocation?: string; + + /** + * The type for this alarm. + */ + atType?: string; + + /** + * Provides the id of the system where the user who invoked the alarmCleared operation is located. + */ + clearSystemId?: string; + + /** + * Provides the id of the user who invoked the alarmCleared operation + */ + clearUserId?: string; + comment?: Array; + correlatedAlarm?: Array; + crossedThresholdInformation?: CrossedThresholdInformation; + + /** + * An identifier of the alarm in the source system. + */ + externalAlarmId?: string; + + /** + * Indicates whether the alarm is a root cause alarm.. + */ + isRootCause?: boolean; + parentAlarm?: Array; + + /** + * Lists the possible severities that can be allocated to an Alarm. The values are consistent with ITU-T Recommendation X.733. Once an alarm has been cleared, its perceived severity is set to 'cleared' and can no longer be set. + */ + perceivedSeverity?: string; + place?: Array; + + /** + * Indicates that the Managed Object (related to this alarm) is in planned outage (in planned maintenance, or out-of-service). + */ + plannedOutageIndicator?: string; + + /** + * Provides the probable cause of the alarm. The values are consistent with ITU-T Recommendation X.733 or 3GPP TS 32.111-2 Annex B. + */ + probableCause?: string; + + /** + * Indicates proposed repair actions, if known to the system emitting the alarm. + */ + proposedRepairedActions?: string; + + /** + * Reporting system identity. + */ + reportingSystemId?: string; + + /** + * Indicates whether the alarm affects service or not. + */ + serviceAffecting?: boolean; + + /** + * Provides more specific information about the alarm. + */ + specificProblem?: string; + + /** + * Defines the alarm state during its life cycle + */ + state?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarm.ts b/src/app/openApis/alarmManagement/models/alarm.ts new file mode 100644 index 0000000000000000000000000000000000000000..2eca2db687dca92e659a5bbbc9eb271cb473eb3a --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarm.ts @@ -0,0 +1,158 @@ +/* tslint:disable */ +import { AffectedService } from './affected-service'; +import { AlarmedObject } from './alarmed-object'; +import { Comment } from './comment'; +import { AlarmRef } from './alarm-ref'; +import { CrossedThresholdInformation } from './crossed-threshold-information'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; + +/** + * This resource represents an alarm supporting the information model defined in ITU-T X.733. + */ +export interface Alarm { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Provides the Acknowledgement State of the alarm + */ + ackState?: string; + + /** + * Provides the name of the system that last changed the ackState of an alarm, i.e. acknowledged or unacknowledged the alarm. + */ + ackSystemId?: string; + + /** + * Provides the id of the user who has last changed the ack state of the alarm, i.e. acknowledged or unacknowledged the alarm. + */ + ackUserId?: string; + affectedService?: Array; + + /** + * Indicates the last date and time when the alarm is changed on the alarm-owning system. Any change to the alarm whether coming from the alarmed resource, or triggered by a change from the client is changing this time. + */ + alarmChangedTime?: string; + + /** + * Indicates the time (as a date + time) at which the alarm is cleared at the source. + */ + alarmClearedTime?: string; + + /** + * Contains further information on the alarm. + */ + alarmDetails?: string; + + /** + * Indicates if this alarm has been escalated or not. + */ + alarmEscalation?: boolean; + + /** + * Indicates the time (as a date + time) at which the alarm occurred at its source. + */ + alarmRaisedTime?: string; + + /** + * Indicates the time (as a date + time) at which the alarm was reported by the owning OSS. It might be different from the alarmRaisedTime. For instance, if the alarm list is maintained by an EMS, the alarmRaisedtime would be the time the alarm was detected by the NE, while the alarmReportingTime would be the time this alarm was stored in the alarm list of the EMS. + */ + alarmReportingTime?: string; + + /** + * Categorize the alarm. Should be one of the values defined in X.733 8.1.1 or 3GPP TS 32.111-2 Annex A: Communications Alarm Processing Error Alarm Environmental Alarm Quality of Service Alarm Equipment Alarm Integrity Violation Operational Violation Physical Violation Security Service or Mechanism Violation Time Domain Violation + */ + alarmType?: string; + alarmedObject?: AlarmedObject; + + /** + * The type (class) of the managed object associated with the event. + */ + alarmedObjectType?: string; + + /** + * Provides the id of the system where the user who invoked the alarmCleared operation is located. + */ + clearSystemId?: string; + + /** + * Provides the id of the user who invoked the alarmCleared operation + */ + clearUserId?: string; + comment?: Array; + correlatedAlarm?: Array; + crossedThresholdInformation?: CrossedThresholdInformation; + + /** + * An identifier of the alarm in the source system. + */ + externalAlarmId?: string; + + /** + * A reference to the alarm. + */ + href?: string; + id?: string; + + /** + * Indicates whether the alarm is a root cause alarm.. + */ + isRootCause?: boolean; + parentAlarm?: Array; + + /** + * Lists the possible severities that can be allocated to an Alarm. The values are consistent with ITU-T Recommendation X.733. Once an alarm has been cleared, its perceived severity is set to 'cleared' and can no longer be set. + */ + perceivedSeverity?: string; + place?: Array; + + /** + * Indicates that the Managed Object (related to this alarm) is in planned outage (in planned maintenance, or out-of-service). + */ + plannedOutageIndicator?: string; + + /** + * Provides the probable cause of the alarm. The values are consistent with ITU-T Recommendation X.733 or 3GPP TS 32.111-2 Annex B. + */ + probableCause?: string; + + /** + * Indicates proposed repair actions, if known to the system emitting the alarm. + */ + proposedRepairedActions?: string; + + /** + * Reporting system identity. + */ + reportingSystemId?: string; + + /** + * Indicates whether the alarm affects service or not. + */ + serviceAffecting?: boolean; + + /** + * Source system identity. + */ + sourceSystemId?: string; + + /** + * Provides more specific information about the alarm. + */ + specificProblem?: string; + + /** + * Defines the alarm state during its life cycle + */ + state?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/alarmed-object.ts b/src/app/openApis/alarmManagement/models/alarmed-object.ts new file mode 100644 index 0000000000000000000000000000000000000000..c195cb5158f12a440de9efb32c606c350d5a6d03 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/alarmed-object.ts @@ -0,0 +1,25 @@ +/* tslint:disable */ + +/** + * Identifies the managed object instance associated with the alarm. + */ +export interface AlarmedObject { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/clear-alarms-create-event-payload.ts b/src/app/openApis/alarmManagement/models/clear-alarms-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..d7dc861c57fd4a423de980ca8b939974a363c068 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/clear-alarms-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ClearAlarms } from './clear-alarms'; + +/** + * The event data structure + */ +export interface ClearAlarmsCreateEventPayload { + clearAlarms?: ClearAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/clear-alarms-create-event.ts b/src/app/openApis/alarmManagement/models/clear-alarms-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..0da71519db66aff183905595c1c89d45f8fd3b88 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/clear-alarms-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ClearAlarmsCreateEventPayload } from './clear-alarms-create-event-payload'; + +/** + * The notification data structure + */ +export interface ClearAlarmsCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ClearAlarmsCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/clear-alarms-create.ts b/src/app/openApis/alarmManagement/models/clear-alarms-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f7ea343f6ac494dfa689891d721a011c8c3f15f --- /dev/null +++ b/src/app/openApis/alarmManagement/models/clear-alarms-create.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for clear alarms operation Skipped properties: id,href + */ +export interface ClearAlarmsCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Time of the alarm clearing + */ + alarmClearedTime: string; + + /** + * Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm. + */ + alarmPattern: Array; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Name of the clearing system + */ + clearSystemId: string; + + /** + * Name of the clearing user + */ + clearUserId: string; + + /** + * The successfully cleared alarms + */ + clearedAlarm?: Array; + + /** + * Current state of the operation task + */ + state?: string; +} diff --git a/src/app/openApis/alarmManagement/models/clear-alarms-state-change-event-payload.ts b/src/app/openApis/alarmManagement/models/clear-alarms-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..7b7e8d48e7a6f73089d08d5d65f1bfae71aa9533 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/clear-alarms-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ClearAlarms } from './clear-alarms'; + +/** + * The event data structure + */ +export interface ClearAlarmsStateChangeEventPayload { + clearAlarms?: ClearAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/clear-alarms-state-change-event.ts b/src/app/openApis/alarmManagement/models/clear-alarms-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..2138c6d518145b77fbe0761121431d9f2272798e --- /dev/null +++ b/src/app/openApis/alarmManagement/models/clear-alarms-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ClearAlarmsStateChangeEventPayload } from './clear-alarms-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface ClearAlarmsStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ClearAlarmsStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/clear-alarms.ts b/src/app/openApis/alarmManagement/models/clear-alarms.ts new file mode 100644 index 0000000000000000000000000000000000000000..436313c360d88c5a8c8f0a950836c528de885501 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/clear-alarms.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for clear alarms operation + */ +export interface ClearAlarms { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Time of the alarm clearing + */ + alarmClearedTime?: string; + + /** + * Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm. + */ + alarmPattern?: Array; + + /** + * Name of the clearing system + */ + clearSystemId?: string; + + /** + * Name of the clearing user + */ + clearUserId?: string; + + /** + * The successfully cleared alarms + */ + clearedAlarm?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Current state of the operation task + */ + state?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/comment-alarms-create-event-payload.ts b/src/app/openApis/alarmManagement/models/comment-alarms-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..d641bb6e5aa41d41fa94c4568eb85aa6dc3b7d11 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/comment-alarms-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { CommentAlarms } from './comment-alarms'; + +/** + * The event data structure + */ +export interface CommentAlarmsCreateEventPayload { + commentAlarms?: CommentAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/comment-alarms-create-event.ts b/src/app/openApis/alarmManagement/models/comment-alarms-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..76efddcc6713bb28fe82e971c1b5f40cdabf1385 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/comment-alarms-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { CommentAlarmsCreateEventPayload } from './comment-alarms-create-event-payload'; + +/** + * The notification data structure + */ +export interface CommentAlarmsCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: CommentAlarmsCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/comment-alarms-create.ts b/src/app/openApis/alarmManagement/models/comment-alarms-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..65e86d1049fd30b3f515c94413aecc069f8b956d --- /dev/null +++ b/src/app/openApis/alarmManagement/models/comment-alarms-create.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; +import { Comment } from './comment'; +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for comment alarms operation Skipped properties: id,href + */ +export interface CommentAlarmsCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm. + */ + alarmPattern: Array; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + comment: Comment; + + /** + * The successfully commented alarms + */ + commentedAlarm?: Array; + + /** + * Current state of the operation task + */ + state?: string; +} diff --git a/src/app/openApis/alarmManagement/models/comment-alarms-state-change-event-payload.ts b/src/app/openApis/alarmManagement/models/comment-alarms-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..3258e564a2cd6f45e439193e39be5fc503804fad --- /dev/null +++ b/src/app/openApis/alarmManagement/models/comment-alarms-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { CommentAlarms } from './comment-alarms'; + +/** + * The event data structure + */ +export interface CommentAlarmsStateChangeEventPayload { + commentAlarms?: CommentAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/comment-alarms-state-change-event.ts b/src/app/openApis/alarmManagement/models/comment-alarms-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..440975d2b504bd6e4a1bd131b9980608c39f3edc --- /dev/null +++ b/src/app/openApis/alarmManagement/models/comment-alarms-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { CommentAlarmsStateChangeEventPayload } from './comment-alarms-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface CommentAlarmsStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: CommentAlarmsStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/comment-alarms.ts b/src/app/openApis/alarmManagement/models/comment-alarms.ts new file mode 100644 index 0000000000000000000000000000000000000000..a6ae8d423881d4e05b1d8a4600ef56f2f0e80970 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/comment-alarms.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; +import { Comment } from './comment'; +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for comment alarms operation + */ +export interface CommentAlarms { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm. + */ + alarmPattern?: Array; + comment?: Comment; + + /** + * The successfully commented alarms + */ + commentedAlarm?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Current state of the operation task + */ + state?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/comment.ts b/src/app/openApis/alarmManagement/models/comment.ts new file mode 100644 index 0000000000000000000000000000000000000000..475719feb400a3d07ad9ed206fb40e8672a36394 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/comment.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * Indicates the comments entered on the alarm. + */ +export interface Comment { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Indicates the text of the comment. + */ + comment?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Indicates the system identifier on which the client set the comment. + */ + systemId?: string; + + /** + * Indicates the time commenting the alarm + */ + time?: string; + + /** + * Indicates the user commenting the alarm. + */ + userId?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/crossed-threshold-information.ts b/src/app/openApis/alarmManagement/models/crossed-threshold-information.ts new file mode 100644 index 0000000000000000000000000000000000000000..8b1a453696408e292bcee0a3fe8c398e4e087869 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/crossed-threshold-information.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +import { ThresholdRef } from './threshold-ref'; + +/** + * Identifies the details of the threshold that has been crossed. + */ +export interface CrossedThresholdInformation { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Indicates the threshold crossing direction: up or down. + */ + direction?: string; + + /** + * Indicates the granularity at which the indicator is evaluated for threshold crossing + */ + granularity?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Indicates the name of indicator which crossed the threshold. + */ + indicatorName?: string; + + /** + * Indicates the unit of the measurement of the indicator corresponding to the threshold that has been crossed. + */ + indicatorUnit?: string; + + /** + * Indicates the value of the indicator which crossed the threshold. + */ + observedValue?: string; + threshold?: ThresholdRef; + + /** + * Indicates further information on the threshold crossing alarm. + */ + thresholdCrossingDescription?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/error.ts b/src/app/openApis/alarmManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..f6d298516145874b7e3c138343a292ff8c308018 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/error.ts @@ -0,0 +1,50 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class. + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + atType?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: string; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: string; +} diff --git a/src/app/openApis/alarmManagement/models/event-subscription-input.ts b/src/app/openApis/alarmManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/alarmManagement/models/event-subscription.ts b/src/app/openApis/alarmManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/alarmManagement/models/group-alarms-create-event-payload.ts b/src/app/openApis/alarmManagement/models/group-alarms-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..f78d84095c07179a0c66a5b3b1cff10780ad0f7a --- /dev/null +++ b/src/app/openApis/alarmManagement/models/group-alarms-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { GroupAlarms } from './group-alarms'; + +/** + * The event data structure + */ +export interface GroupAlarmsCreateEventPayload { + groupAlarms?: GroupAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/group-alarms-create-event.ts b/src/app/openApis/alarmManagement/models/group-alarms-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..be2ab5d325f16f153793510e6ca19d02079efefc --- /dev/null +++ b/src/app/openApis/alarmManagement/models/group-alarms-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { GroupAlarmsCreateEventPayload } from './group-alarms-create-event-payload'; + +/** + * The notification data structure + */ +export interface GroupAlarmsCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: GroupAlarmsCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/group-alarms-create.ts b/src/app/openApis/alarmManagement/models/group-alarms-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..e70d1f19ab4bc985950dafbc489b6687fa7f6fa9 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/group-alarms-create.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for group alarms operation Skipped properties: id,href + */ +export interface GroupAlarmsCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Time of the correlation + */ + alarmChangedTime: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Correlated alarms + */ + correlatedAlarm: Array; + + /** + * The successfully correlated alarms + */ + groupedAlarm?: Array; + parentAlarm: AlarmRefOrValue; + + /** + * Source system identifier + */ + sourceSystemId: string; + + /** + * Current state of the operation task + */ + state?: string; +} diff --git a/src/app/openApis/alarmManagement/models/group-alarms-state-change-event-payload.ts b/src/app/openApis/alarmManagement/models/group-alarms-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..472eba5f981d506cf2022edd09fec1ceb4ce5bee --- /dev/null +++ b/src/app/openApis/alarmManagement/models/group-alarms-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { GroupAlarms } from './group-alarms'; + +/** + * The event data structure + */ +export interface GroupAlarmsStateChangeEventPayload { + groupAlarms?: GroupAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/group-alarms-state-change-event.ts b/src/app/openApis/alarmManagement/models/group-alarms-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..2e86453a5f73021f8edba6ca265215bfe0dda195 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/group-alarms-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { GroupAlarmsStateChangeEventPayload } from './group-alarms-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface GroupAlarmsStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: GroupAlarmsStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/group-alarms.ts b/src/app/openApis/alarmManagement/models/group-alarms.ts new file mode 100644 index 0000000000000000000000000000000000000000..5fefee3e1c0e50cc1cf8b058c4dc34729ad7a11d --- /dev/null +++ b/src/app/openApis/alarmManagement/models/group-alarms.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for group alarms operation + */ +export interface GroupAlarms { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Time of the correlation + */ + alarmChangedTime?: string; + + /** + * Correlated alarms + */ + correlatedAlarm?: Array; + + /** + * The successfully correlated alarms + */ + groupedAlarm?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + parentAlarm?: AlarmRefOrValue; + + /** + * Source system identifier + */ + sourceSystemId?: string; + + /** + * Current state of the operation task + */ + state?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/related-place-ref-or-value.ts b/src/app/openApis/alarmManagement/models/related-place-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c948bc9d285d107efabf181924635daefdc604d --- /dev/null +++ b/src/app/openApis/alarmManagement/models/related-place-ref-or-value.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ + +/** + * Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes '@type', '@schemaLocation' & '@referredType' are related to the place entity and not the RelatedPlaceRefOrValue class itself + */ +export interface RelatedPlaceRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + role: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/threshold-ref.ts b/src/app/openApis/alarmManagement/models/threshold-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..829f70ec25d7ab8f40468e35f25fa9a22a91ce8d --- /dev/null +++ b/src/app/openApis/alarmManagement/models/threshold-ref.ts @@ -0,0 +1,32 @@ +/* tslint:disable */ +export interface ThresholdRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/un-ack-alarms-create-event-payload.ts b/src/app/openApis/alarmManagement/models/un-ack-alarms-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..5d4bc532c8bbfa4c8fe5b74c42a499a1eae3401d --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-ack-alarms-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { UnAckAlarms } from './un-ack-alarms'; + +/** + * The event data structure + */ +export interface UnAckAlarmsCreateEventPayload { + unAckAlarms?: UnAckAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/un-ack-alarms-create-event.ts b/src/app/openApis/alarmManagement/models/un-ack-alarms-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..556361937bf4632646e754dad7cfc7ceae248c2d --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-ack-alarms-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { UnAckAlarmsCreateEventPayload } from './un-ack-alarms-create-event-payload'; + +/** + * The notification data structure + */ +export interface UnAckAlarmsCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: UnAckAlarmsCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/un-ack-alarms-create.ts b/src/app/openApis/alarmManagement/models/un-ack-alarms-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..794dbada3dafa17088724a7e3d4cb93f0dcaa95f --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-ack-alarms-create.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for unacknowledge alarms operation Skipped properties: id,href + */ +export interface UnAckAlarmsCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Name of the unacknowledging system + */ + ackSystemId: string; + + /** + * Time of the unacknowledgement + */ + ackTime?: string; + + /** + * Name of the unacknowledging user + */ + ackUserId: string; + + /** + * Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm. + */ + alarmPattern: Array; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Current state of the operation task + */ + state?: string; + + /** + * The successfully unacknowledged alarms + */ + unAckedAlarm?: Array; +} diff --git a/src/app/openApis/alarmManagement/models/un-ack-alarms-state-change-event-payload.ts b/src/app/openApis/alarmManagement/models/un-ack-alarms-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..2cff7f2f76cae4c260f32d9a9f42bc54f5830911 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-ack-alarms-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { UnAckAlarms } from './un-ack-alarms'; + +/** + * The event data structure + */ +export interface UnAckAlarmsStateChangeEventPayload { + unAckAlarms?: UnAckAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/un-ack-alarms-state-change-event.ts b/src/app/openApis/alarmManagement/models/un-ack-alarms-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..080ac75164bd2b688c57fd088b8eb7f6ab7a7120 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-ack-alarms-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { UnAckAlarmsStateChangeEventPayload } from './un-ack-alarms-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface UnAckAlarmsStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: UnAckAlarmsStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/un-ack-alarms.ts b/src/app/openApis/alarmManagement/models/un-ack-alarms.ts new file mode 100644 index 0000000000000000000000000000000000000000..1962edf379e9d15de0e3d33f49c34224e9830d69 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-ack-alarms.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +import { Alarm } from './alarm'; +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for unacknowledge alarms operation + */ +export interface UnAckAlarms { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Name of the unacknowledging system + */ + ackSystemId?: string; + + /** + * Time of the unacknowledgement + */ + ackTime?: string; + + /** + * Name of the unacknowledging user + */ + ackUserId?: string; + + /** + * Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm. + */ + alarmPattern?: Array; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * A reference to the task + */ + href?: string; + id?: string; + + /** + * Current state of the operation task + */ + state?: string; + + /** + * The successfully unacknowledged alarms + */ + unAckedAlarm?: Array; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/models/un-group-alarms-create-event-payload.ts b/src/app/openApis/alarmManagement/models/un-group-alarms-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..1692b746a2e95928a0c486085de965ec49542a94 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-group-alarms-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { UnGroupAlarms } from './un-group-alarms'; + +/** + * The event data structure + */ +export interface UnGroupAlarmsCreateEventPayload { + unGroupAlarms?: UnGroupAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/un-group-alarms-create-event.ts b/src/app/openApis/alarmManagement/models/un-group-alarms-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..0bd5f574ddfd9f883b7cd29d3032a12295beaa9c --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-group-alarms-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { UnGroupAlarmsCreateEventPayload } from './un-group-alarms-create-event-payload'; + +/** + * The notification data structure + */ +export interface UnGroupAlarmsCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: UnGroupAlarmsCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/un-group-alarms-create.ts b/src/app/openApis/alarmManagement/models/un-group-alarms-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..6a72cc7fb64b7c4a212113d5349bbce6d3685526 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-group-alarms-create.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for ungroup alarms operation Skipped properties: id,href + */ +export interface UnGroupAlarmsCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Time of the uncorrelation + */ + alarmChangedTime: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Correlated alarms + */ + correlatedAlarm: Array; + parentAlarm: AlarmRefOrValue; + + /** + * Source system identifier + */ + sourceSystemId: string; + + /** + * Current state of the operation task + */ + state?: string; + + /** + * The successfully uncorrelated alarms + */ + unGroupedAlarm?: Array; +} diff --git a/src/app/openApis/alarmManagement/models/un-group-alarms-state-change-event-payload.ts b/src/app/openApis/alarmManagement/models/un-group-alarms-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..ed12ca43b0c45d3518cd48003b96583320de2204 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-group-alarms-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { UnGroupAlarms } from './un-group-alarms'; + +/** + * The event data structure + */ +export interface UnGroupAlarmsStateChangeEventPayload { + unGroupAlarms?: UnGroupAlarms; +} diff --git a/src/app/openApis/alarmManagement/models/un-group-alarms-state-change-event.ts b/src/app/openApis/alarmManagement/models/un-group-alarms-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..7ac2df2b3651a5033b1ab47790df17d6c85b5f48 --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-group-alarms-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { UnGroupAlarmsStateChangeEventPayload } from './un-group-alarms-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface UnGroupAlarmsStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: UnGroupAlarmsStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/alarmManagement/models/un-group-alarms.ts b/src/app/openApis/alarmManagement/models/un-group-alarms.ts new file mode 100644 index 0000000000000000000000000000000000000000..2dd88b9248c409107ea2e04f2c8965cd7d8854fe --- /dev/null +++ b/src/app/openApis/alarmManagement/models/un-group-alarms.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +import { AlarmRefOrValue } from './alarm-ref-or-value'; + +/** + * Task resource for ungroup alarms operation + */ +export interface UnGroupAlarms { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Time of the uncorrelation + */ + alarmChangedTime?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Correlated alarms + */ + correlatedAlarm?: Array; + + /** + * A reference to the task + */ + href?: string; + id?: string; + parentAlarm?: AlarmRefOrValue; + + /** + * Source system identifier + */ + sourceSystemId?: string; + + /** + * Current state of the operation task + */ + state?: string; + + /** + * The successfully uncorrelated alarms + */ + unGroupedAlarm?: Array; + uuid?: string; +} diff --git a/src/app/openApis/alarmManagement/services.ts b/src/app/openApis/alarmManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..9e9d39886908ec00a306aae927b86a773507ddef --- /dev/null +++ b/src/app/openApis/alarmManagement/services.ts @@ -0,0 +1,9 @@ +export { AckAlarmsService } from './services/ack-alarms.service'; +export { AlarmService } from './services/alarm.service'; +export { ClearAlarmsService } from './services/clear-alarms.service'; +export { CommentAlarmsService } from './services/comment-alarms.service'; +export { GroupAlarmsService } from './services/group-alarms.service'; +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { UnAckAlarmsService } from './services/un-ack-alarms.service'; +export { UnGroupAlarmsService } from './services/un-group-alarms.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; diff --git a/src/app/openApis/alarmManagement/services/ack-alarms.service.ts b/src/app/openApis/alarmManagement/services/ack-alarms.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..fd668e4dc626048e5847309f9059e292f391482f --- /dev/null +++ b/src/app/openApis/alarmManagement/services/ack-alarms.service.ts @@ -0,0 +1,231 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { AckAlarms } from '../models/ack-alarms'; +import { AckAlarmsCreate } from '../models/ack-alarms-create'; +@Injectable({ + providedIn: 'root', +}) +class AckAlarmsService extends __BaseService { + static readonly listAckAlarmsPath = '/alarmManagement/v4/ackAlarms'; + static readonly createAckAlarmsPath = '/alarmManagement/v4/ackAlarms'; + static readonly retrieveAckAlarmsPath = '/alarmManagement/v4/ackAlarms/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find AckAlarms objects + * + * This operation list or find AckAlarms entities + * @param params The `AckAlarmsService.ListAckAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listAckAlarmsResponse(params: AckAlarmsService.ListAckAlarmsParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.allParams != null) __params = __params.set('allParams', params.allParams.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/ackAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find AckAlarms objects + * + * This operation list or find AckAlarms entities + * @param params The `AckAlarmsService.ListAckAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listAckAlarms(params: AckAlarmsService.ListAckAlarmsParams): __Observable> { + return this.listAckAlarmsResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a AckAlarms + * + * This operation creates a AckAlarms entity. + * @param body The AckAlarms to be created + * @return OK or Created + */ + createAckAlarmsResponse(body: AckAlarmsCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/alarmManagement/v4/ackAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a AckAlarms + * + * This operation creates a AckAlarms entity. + * @param body The AckAlarms to be created + * @return OK or Created + */ + createAckAlarms(body: AckAlarmsCreate): __Observable { + return this.createAckAlarmsResponse(body).pipe( + __map(_r => _r.body as AckAlarms | AckAlarms) + ); + } + + /** + * Retrieves a AckAlarms by ID + * + * This operation retrieves a AckAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `AckAlarmsService.RetrieveAckAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the AckAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveAckAlarmsResponse(params: AckAlarmsService.RetrieveAckAlarmsParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/ackAlarms/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a AckAlarms by ID + * + * This operation retrieves a AckAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `AckAlarmsService.RetrieveAckAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the AckAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveAckAlarms(params: AckAlarmsService.RetrieveAckAlarmsParams): __Observable { + return this.retrieveAckAlarmsResponse(params).pipe( + __map(_r => _r.body as AckAlarms) + ); + } +} + +module AckAlarmsService { + + /** + * Parameters for listAckAlarms + */ + export interface ListAckAlarmsParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + + /** + * allParams + */ + allParams?: any; + } + + /** + * Parameters for retrieveAckAlarms + */ + export interface RetrieveAckAlarmsParams { + + /** + * Identifier of the AckAlarms + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { AckAlarmsService } diff --git a/src/app/openApis/alarmManagement/services/alarm.service.ts b/src/app/openApis/alarmManagement/services/alarm.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..4cf47ce292b7c1771f9dd63dbc97a328f345aa52 --- /dev/null +++ b/src/app/openApis/alarmManagement/services/alarm.service.ts @@ -0,0 +1,333 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Alarm } from '../models/alarm'; +import { AlarmCreate } from '../models/alarm-create'; +import { AlarmUpdate } from '../models/alarm-update'; +@Injectable({ + providedIn: 'root', +}) +class AlarmService extends __BaseService { + static readonly listAlarmPath = '/alarmManagement/v4/alarm'; + static readonly createAlarmPath = '/alarmManagement/v4/alarm'; + static readonly retrieveAlarmPath = '/alarmManagement/v4/alarm/{id}'; + static readonly deleteAlarmPath = '/alarmManagement/v4/alarm/{id}'; + static readonly patchAlarmPath = '/alarmManagement/v4/alarm/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find Alarm objects + * + * This operation list or find Alarm entities + * @param params The `AlarmService.ListAlarmParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listAlarmResponse(params: AlarmService.ListAlarmParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/alarm`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find Alarm objects + * + * This operation list or find Alarm entities + * @param params The `AlarmService.ListAlarmParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listAlarm(params: AlarmService.ListAlarmParams): __Observable> { + return this.listAlarmResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a Alarm + * + * This operation creates a Alarm entity. + * @param body The Alarm to be created + * @return OK or Created + */ + createAlarmResponse(body: AlarmCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/alarmManagement/v4/alarm`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a Alarm + * + * This operation creates a Alarm entity. + * @param body The Alarm to be created + * @return OK or Created + */ + createAlarm(body: AlarmCreate): __Observable { + return this.createAlarmResponse(body).pipe( + __map(_r => _r.body as Alarm | Alarm) + ); + } + + /** + * Retrieves a Alarm by ID + * + * This operation retrieves a Alarm entity. Attribute selection is enabled for all first level attributes. + * @param params The `AlarmService.RetrieveAlarmParams` containing the following parameters: + * + * - `id`: Identifier of the Alarm + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveAlarmResponse(params: AlarmService.RetrieveAlarmParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/alarm/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a Alarm by ID + * + * This operation retrieves a Alarm entity. Attribute selection is enabled for all first level attributes. + * @param params The `AlarmService.RetrieveAlarmParams` containing the following parameters: + * + * - `id`: Identifier of the Alarm + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveAlarm(params: AlarmService.RetrieveAlarmParams): __Observable { + return this.retrieveAlarmResponse(params).pipe( + __map(_r => _r.body as Alarm) + ); + } + + /** + * Deletes a Alarm + * + * This operation deletes a Alarm entity. + * @param id Identifier of the Alarm + */ + deleteAlarmResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/alarmManagement/v4/alarm/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a Alarm + * + * This operation deletes a Alarm entity. + * @param id Identifier of the Alarm + */ + deleteAlarm(id: string): __Observable { + return this.deleteAlarmResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially a Alarm + * + * This operation updates partially a Alarm entity. + * @param params The `AlarmService.PatchAlarmParams` containing the following parameters: + * + * - `id`: Identifier of the Alarm + * + * - `body`: The Alarm to be updated + * + * @return Updated + */ + patchAlarmResponse(params: AlarmService.PatchAlarmParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/alarmManagement/v4/alarm/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a Alarm + * + * This operation updates partially a Alarm entity. + * @param params The `AlarmService.PatchAlarmParams` containing the following parameters: + * + * - `id`: Identifier of the Alarm + * + * - `body`: The Alarm to be updated + * + * @return Updated + */ + patchAlarm(params: AlarmService.PatchAlarmParams): __Observable { + return this.patchAlarmResponse(params).pipe( + __map(_r => _r.body as Alarm) + ); + } +} + +module AlarmService { + + /** + * Parameters for listAlarm + */ + export interface ListAlarmParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveAlarm + */ + export interface RetrieveAlarmParams { + + /** + * Identifier of the Alarm + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchAlarm + */ + export interface PatchAlarmParams { + + /** + * Identifier of the Alarm + */ + id: string; + + /** + * The Alarm to be updated + */ + body: AlarmUpdate; + } +} + +export { AlarmService } diff --git a/src/app/openApis/alarmManagement/services/clear-alarms.service.ts b/src/app/openApis/alarmManagement/services/clear-alarms.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..016576bb3e871415eef507e5924313f9344c4943 --- /dev/null +++ b/src/app/openApis/alarmManagement/services/clear-alarms.service.ts @@ -0,0 +1,231 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ClearAlarms } from '../models/clear-alarms'; +import { ClearAlarmsCreate } from '../models/clear-alarms-create'; +@Injectable({ + providedIn: 'root', +}) +class ClearAlarmsService extends __BaseService { + static readonly listClearAlarmsPath = '/alarmManagement/v4/clearAlarms'; + static readonly createClearAlarmsPath = '/alarmManagement/v4/clearAlarms'; + static readonly retrieveClearAlarmsPath = '/alarmManagement/v4/clearAlarms/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ClearAlarms objects + * + * This operation list or find ClearAlarms entities + * @param params The `ClearAlarmsService.ListClearAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listClearAlarmsResponse(params: ClearAlarmsService.ListClearAlarmsParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.allParams != null) __params = __params.set('allParams', params.allParams.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/clearAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ClearAlarms objects + * + * This operation list or find ClearAlarms entities + * @param params The `ClearAlarmsService.ListClearAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listClearAlarms(params: ClearAlarmsService.ListClearAlarmsParams): __Observable> { + return this.listClearAlarmsResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ClearAlarms + * + * This operation creates a ClearAlarms entity. + * @param body The ClearAlarms to be created + * @return OK or Created + */ + createClearAlarmsResponse(body: ClearAlarmsCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/alarmManagement/v4/clearAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ClearAlarms + * + * This operation creates a ClearAlarms entity. + * @param body The ClearAlarms to be created + * @return OK or Created + */ + createClearAlarms(body: ClearAlarmsCreate): __Observable { + return this.createClearAlarmsResponse(body).pipe( + __map(_r => _r.body as ClearAlarms | ClearAlarms) + ); + } + + /** + * Retrieves a ClearAlarms by ID + * + * This operation retrieves a ClearAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `ClearAlarmsService.RetrieveClearAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the ClearAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveClearAlarmsResponse(params: ClearAlarmsService.RetrieveClearAlarmsParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/clearAlarms/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ClearAlarms by ID + * + * This operation retrieves a ClearAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `ClearAlarmsService.RetrieveClearAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the ClearAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveClearAlarms(params: ClearAlarmsService.RetrieveClearAlarmsParams): __Observable { + return this.retrieveClearAlarmsResponse(params).pipe( + __map(_r => _r.body as ClearAlarms) + ); + } +} + +module ClearAlarmsService { + + /** + * Parameters for listClearAlarms + */ + export interface ListClearAlarmsParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + + /** + * allParams + */ + allParams?: any; + } + + /** + * Parameters for retrieveClearAlarms + */ + export interface RetrieveClearAlarmsParams { + + /** + * Identifier of the ClearAlarms + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { ClearAlarmsService } diff --git a/src/app/openApis/alarmManagement/services/comment-alarms.service.ts b/src/app/openApis/alarmManagement/services/comment-alarms.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..c23bd59c4acb7029a664c01048b340fb9661c3af --- /dev/null +++ b/src/app/openApis/alarmManagement/services/comment-alarms.service.ts @@ -0,0 +1,231 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { CommentAlarms } from '../models/comment-alarms'; +import { CommentAlarmsCreate } from '../models/comment-alarms-create'; +@Injectable({ + providedIn: 'root', +}) +class CommentAlarmsService extends __BaseService { + static readonly listCommentAlarmsPath = '/alarmManagement/v4/commentAlarms'; + static readonly createCommentAlarmsPath = '/alarmManagement/v4/commentAlarms'; + static readonly retrieveCommentAlarmsPath = '/alarmManagement/v4/commentAlarms/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find CommentAlarms objects + * + * This operation list or find CommentAlarms entities + * @param params The `CommentAlarmsService.ListCommentAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listCommentAlarmsResponse(params: CommentAlarmsService.ListCommentAlarmsParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.allParams != null) __params = __params.set('allParams', params.allParams.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/commentAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find CommentAlarms objects + * + * This operation list or find CommentAlarms entities + * @param params The `CommentAlarmsService.ListCommentAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listCommentAlarms(params: CommentAlarmsService.ListCommentAlarmsParams): __Observable> { + return this.listCommentAlarmsResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a CommentAlarms + * + * This operation creates a CommentAlarms entity. + * @param body The CommentAlarms to be created + * @return OK or Created + */ + createCommentAlarmsResponse(body: CommentAlarmsCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/alarmManagement/v4/commentAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a CommentAlarms + * + * This operation creates a CommentAlarms entity. + * @param body The CommentAlarms to be created + * @return OK or Created + */ + createCommentAlarms(body: CommentAlarmsCreate): __Observable { + return this.createCommentAlarmsResponse(body).pipe( + __map(_r => _r.body as CommentAlarms | CommentAlarms) + ); + } + + /** + * Retrieves a CommentAlarms by ID + * + * This operation retrieves a CommentAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `CommentAlarmsService.RetrieveCommentAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the CommentAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveCommentAlarmsResponse(params: CommentAlarmsService.RetrieveCommentAlarmsParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/commentAlarms/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a CommentAlarms by ID + * + * This operation retrieves a CommentAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `CommentAlarmsService.RetrieveCommentAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the CommentAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveCommentAlarms(params: CommentAlarmsService.RetrieveCommentAlarmsParams): __Observable { + return this.retrieveCommentAlarmsResponse(params).pipe( + __map(_r => _r.body as CommentAlarms) + ); + } +} + +module CommentAlarmsService { + + /** + * Parameters for listCommentAlarms + */ + export interface ListCommentAlarmsParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + + /** + * allParams + */ + allParams?: any; + } + + /** + * Parameters for retrieveCommentAlarms + */ + export interface RetrieveCommentAlarmsParams { + + /** + * Identifier of the CommentAlarms + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { CommentAlarmsService } diff --git a/src/app/openApis/alarmManagement/services/events-subscription.service.ts b/src/app/openApis/alarmManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..a8e00dfcb6cb34315a44c44f2a81a57736e8bad5 --- /dev/null +++ b/src/app/openApis/alarmManagement/services/events-subscription.service.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener642Path = '/alarmManagement/v4/hub'; + static readonly unregisterListener642Path = '/alarmManagement/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener642Response(body: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/alarmManagement/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener642(body: EventSubscriptionInput): __Observable { + return this.registerListener642Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener642Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/alarmManagement/v4/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener642(id: string): __Observable { + return this.unregisterListener642Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/alarmManagement/services/group-alarms.service.ts b/src/app/openApis/alarmManagement/services/group-alarms.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..b411f707c808bb70e234728b1af7d4821b7ab94d --- /dev/null +++ b/src/app/openApis/alarmManagement/services/group-alarms.service.ts @@ -0,0 +1,231 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { GroupAlarms } from '../models/group-alarms'; +import { GroupAlarmsCreate } from '../models/group-alarms-create'; +@Injectable({ + providedIn: 'root', +}) +class GroupAlarmsService extends __BaseService { + static readonly listGroupAlarmsPath = '/alarmManagement/v4/groupAlarms'; + static readonly createGroupAlarmsPath = '/alarmManagement/v4/groupAlarms'; + static readonly retrieveGroupAlarmsPath = '/alarmManagement/v4/groupAlarms/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find GroupAlarms objects + * + * This operation list or find GroupAlarms entities + * @param params The `GroupAlarmsService.ListGroupAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listGroupAlarmsResponse(params: GroupAlarmsService.ListGroupAlarmsParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.allParams != null) __params = __params.set('allParams', params.allParams.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/groupAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find GroupAlarms objects + * + * This operation list or find GroupAlarms entities + * @param params The `GroupAlarmsService.ListGroupAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listGroupAlarms(params: GroupAlarmsService.ListGroupAlarmsParams): __Observable> { + return this.listGroupAlarmsResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a GroupAlarms + * + * This operation creates a GroupAlarms entity. + * @param body The GroupAlarms to be created + * @return OK or Created + */ + createGroupAlarmsResponse(body: GroupAlarmsCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/alarmManagement/v4/groupAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a GroupAlarms + * + * This operation creates a GroupAlarms entity. + * @param body The GroupAlarms to be created + * @return OK or Created + */ + createGroupAlarms(body: GroupAlarmsCreate): __Observable { + return this.createGroupAlarmsResponse(body).pipe( + __map(_r => _r.body as GroupAlarms | GroupAlarms) + ); + } + + /** + * Retrieves a GroupAlarms by ID + * + * This operation retrieves a GroupAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `GroupAlarmsService.RetrieveGroupAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the GroupAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveGroupAlarmsResponse(params: GroupAlarmsService.RetrieveGroupAlarmsParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/groupAlarms/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a GroupAlarms by ID + * + * This operation retrieves a GroupAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `GroupAlarmsService.RetrieveGroupAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the GroupAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveGroupAlarms(params: GroupAlarmsService.RetrieveGroupAlarmsParams): __Observable { + return this.retrieveGroupAlarmsResponse(params).pipe( + __map(_r => _r.body as GroupAlarms) + ); + } +} + +module GroupAlarmsService { + + /** + * Parameters for listGroupAlarms + */ + export interface ListGroupAlarmsParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + + /** + * allParams + */ + allParams?: any; + } + + /** + * Parameters for retrieveGroupAlarms + */ + export interface RetrieveGroupAlarmsParams { + + /** + * Identifier of the GroupAlarms + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { GroupAlarmsService } diff --git a/src/app/openApis/alarmManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/alarmManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..5ade817fcb0234424d663308d420ab7876dc6ea3 --- /dev/null +++ b/src/app/openApis/alarmManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,731 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { AckAlarmsCreateEvent } from '../models/ack-alarms-create-event'; +import { AckAlarmsStateChangeEvent } from '../models/ack-alarms-state-change-event'; +import { AlarmAttributeValueChangeEvent } from '../models/alarm-attribute-value-change-event'; +import { AlarmCreateEvent } from '../models/alarm-create-event'; +import { AlarmDeleteEvent } from '../models/alarm-delete-event'; +import { AlarmStateChangeEvent } from '../models/alarm-state-change-event'; +import { ClearAlarmsCreateEvent } from '../models/clear-alarms-create-event'; +import { ClearAlarmsStateChangeEvent } from '../models/clear-alarms-state-change-event'; +import { CommentAlarmsCreateEvent } from '../models/comment-alarms-create-event'; +import { CommentAlarmsStateChangeEvent } from '../models/comment-alarms-state-change-event'; +import { GroupAlarmsCreateEvent } from '../models/group-alarms-create-event'; +import { GroupAlarmsStateChangeEvent } from '../models/group-alarms-state-change-event'; +import { UnAckAlarmsCreateEvent } from '../models/un-ack-alarms-create-event'; +import { UnAckAlarmsStateChangeEvent } from '../models/un-ack-alarms-state-change-event'; +import { UnGroupAlarmsCreateEvent } from '../models/un-group-alarms-create-event'; +import { UnGroupAlarmsStateChangeEvent } from '../models/un-group-alarms-state-change-event'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToAckAlarmsCreateEventPath = '/listener/ackAlarmsCreateEvent'; + static readonly listenToAckAlarmsStateChangeEventPath = '/listener/ackAlarmsStateChangeEvent'; + static readonly listenToAlarmAttributeValueChangeEventPath = '/listener/alarmAttributeValueChangeEvent'; + static readonly listenToAlarmCreateEventPath = '/listener/alarmCreateEvent'; + static readonly listenToAlarmDeleteEventPath = '/listener/alarmDeleteEvent'; + static readonly listenToAlarmStateChangeEventPath = '/listener/alarmStateChangeEvent'; + static readonly listenToClearAlarmsCreateEventPath = '/listener/clearAlarmsCreateEvent'; + static readonly listenToClearAlarmsStateChangeEventPath = '/listener/clearAlarmsStateChangeEvent'; + static readonly listenToCommentAlarmsCreateEventPath = '/listener/commentAlarmsCreateEvent'; + static readonly listenToCommentAlarmsStateChangeEventPath = '/listener/commentAlarmsStateChangeEvent'; + static readonly listenToGroupAlarmsCreateEventPath = '/listener/groupAlarmsCreateEvent'; + static readonly listenToGroupAlarmsStateChangeEventPath = '/listener/groupAlarmsStateChangeEvent'; + static readonly listenToUnAckAlarmsCreateEventPath = '/listener/unAckAlarmsCreateEvent'; + static readonly listenToUnAckAlarmsStateChangeEventPath = '/listener/unAckAlarmsStateChangeEvent'; + static readonly listenToUnGroupAlarmsCreateEventPath = '/listener/unGroupAlarmsCreateEvent'; + static readonly listenToUnGroupAlarmsStateChangeEventPath = '/listener/unGroupAlarmsStateChangeEvent'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity AckAlarmsCreateEvent + * + * Example of a client listener for receiving the notification AckAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToAckAlarmsCreateEventResponse(body: AckAlarmsCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/ackAlarmsCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity AckAlarmsCreateEvent + * + * Example of a client listener for receiving the notification AckAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToAckAlarmsCreateEvent(body: AckAlarmsCreateEvent): __Observable { + return this.listenToAckAlarmsCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity AckAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification AckAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToAckAlarmsStateChangeEventResponse(body: AckAlarmsStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/ackAlarmsStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity AckAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification AckAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToAckAlarmsStateChangeEvent(body: AckAlarmsStateChangeEvent): __Observable { + return this.listenToAckAlarmsStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity AlarmAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification AlarmAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToAlarmAttributeValueChangeEventResponse(body: AlarmAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/alarmAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity AlarmAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification AlarmAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToAlarmAttributeValueChangeEvent(body: AlarmAttributeValueChangeEvent): __Observable { + return this.listenToAlarmAttributeValueChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity AlarmCreateEvent + * + * Example of a client listener for receiving the notification AlarmCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToAlarmCreateEventResponse(body: AlarmCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/alarmCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity AlarmCreateEvent + * + * Example of a client listener for receiving the notification AlarmCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToAlarmCreateEvent(body: AlarmCreateEvent): __Observable { + return this.listenToAlarmCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity AlarmDeleteEvent + * + * Example of a client listener for receiving the notification AlarmDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToAlarmDeleteEventResponse(body: AlarmDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/alarmDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity AlarmDeleteEvent + * + * Example of a client listener for receiving the notification AlarmDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToAlarmDeleteEvent(body: AlarmDeleteEvent): __Observable { + return this.listenToAlarmDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity AlarmStateChangeEvent + * + * Example of a client listener for receiving the notification AlarmStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToAlarmStateChangeEventResponse(body: AlarmStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/alarmStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity AlarmStateChangeEvent + * + * Example of a client listener for receiving the notification AlarmStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToAlarmStateChangeEvent(body: AlarmStateChangeEvent): __Observable { + return this.listenToAlarmStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ClearAlarmsCreateEvent + * + * Example of a client listener for receiving the notification ClearAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToClearAlarmsCreateEventResponse(body: ClearAlarmsCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/clearAlarmsCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ClearAlarmsCreateEvent + * + * Example of a client listener for receiving the notification ClearAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToClearAlarmsCreateEvent(body: ClearAlarmsCreateEvent): __Observable { + return this.listenToClearAlarmsCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ClearAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification ClearAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToClearAlarmsStateChangeEventResponse(body: ClearAlarmsStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/clearAlarmsStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ClearAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification ClearAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToClearAlarmsStateChangeEvent(body: ClearAlarmsStateChangeEvent): __Observable { + return this.listenToClearAlarmsStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity CommentAlarmsCreateEvent + * + * Example of a client listener for receiving the notification CommentAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToCommentAlarmsCreateEventResponse(body: CommentAlarmsCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/commentAlarmsCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CommentAlarmsCreateEvent + * + * Example of a client listener for receiving the notification CommentAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToCommentAlarmsCreateEvent(body: CommentAlarmsCreateEvent): __Observable { + return this.listenToCommentAlarmsCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity CommentAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification CommentAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToCommentAlarmsStateChangeEventResponse(body: CommentAlarmsStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/commentAlarmsStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CommentAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification CommentAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToCommentAlarmsStateChangeEvent(body: CommentAlarmsStateChangeEvent): __Observable { + return this.listenToCommentAlarmsStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity GroupAlarmsCreateEvent + * + * Example of a client listener for receiving the notification GroupAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToGroupAlarmsCreateEventResponse(body: GroupAlarmsCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/groupAlarmsCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity GroupAlarmsCreateEvent + * + * Example of a client listener for receiving the notification GroupAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToGroupAlarmsCreateEvent(body: GroupAlarmsCreateEvent): __Observable { + return this.listenToGroupAlarmsCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity GroupAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification GroupAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToGroupAlarmsStateChangeEventResponse(body: GroupAlarmsStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/groupAlarmsStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity GroupAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification GroupAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToGroupAlarmsStateChangeEvent(body: GroupAlarmsStateChangeEvent): __Observable { + return this.listenToGroupAlarmsStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity UnAckAlarmsCreateEvent + * + * Example of a client listener for receiving the notification UnAckAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToUnAckAlarmsCreateEventResponse(body: UnAckAlarmsCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/unAckAlarmsCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity UnAckAlarmsCreateEvent + * + * Example of a client listener for receiving the notification UnAckAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToUnAckAlarmsCreateEvent(body: UnAckAlarmsCreateEvent): __Observable { + return this.listenToUnAckAlarmsCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity UnAckAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification UnAckAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToUnAckAlarmsStateChangeEventResponse(body: UnAckAlarmsStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/unAckAlarmsStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity UnAckAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification UnAckAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToUnAckAlarmsStateChangeEvent(body: UnAckAlarmsStateChangeEvent): __Observable { + return this.listenToUnAckAlarmsStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity UnGroupAlarmsCreateEvent + * + * Example of a client listener for receiving the notification UnGroupAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToUnGroupAlarmsCreateEventResponse(body: UnGroupAlarmsCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/unGroupAlarmsCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity UnGroupAlarmsCreateEvent + * + * Example of a client listener for receiving the notification UnGroupAlarmsCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToUnGroupAlarmsCreateEvent(body: UnGroupAlarmsCreateEvent): __Observable { + return this.listenToUnGroupAlarmsCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity UnGroupAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification UnGroupAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToUnGroupAlarmsStateChangeEventResponse(body: UnGroupAlarmsStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/unGroupAlarmsStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity UnGroupAlarmsStateChangeEvent + * + * Example of a client listener for receiving the notification UnGroupAlarmsStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToUnGroupAlarmsStateChangeEvent(body: UnGroupAlarmsStateChangeEvent): __Observable { + return this.listenToUnGroupAlarmsStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/alarmManagement/services/un-ack-alarms.service.ts b/src/app/openApis/alarmManagement/services/un-ack-alarms.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..e6db01fc4c1ede97675c80e2279405a611fe2a15 --- /dev/null +++ b/src/app/openApis/alarmManagement/services/un-ack-alarms.service.ts @@ -0,0 +1,231 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { UnAckAlarms } from '../models/un-ack-alarms'; +import { UnAckAlarmsCreate } from '../models/un-ack-alarms-create'; +@Injectable({ + providedIn: 'root', +}) +class UnAckAlarmsService extends __BaseService { + static readonly listUnAckAlarmsPath = '/alarmManagement/v4/unAckAlarms'; + static readonly createUnAckAlarmsPath = '/alarmManagement/v4/unAckAlarms'; + static readonly retrieveUnAckAlarmsPath = '/alarmManagement/v4/unAckAlarms/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find UnAckAlarms objects + * + * This operation list or find UnAckAlarms entities + * @param params The `UnAckAlarmsService.ListUnAckAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listUnAckAlarmsResponse(params: UnAckAlarmsService.ListUnAckAlarmsParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.allParams != null) __params = __params.set('allParams', params.allParams.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/unAckAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find UnAckAlarms objects + * + * This operation list or find UnAckAlarms entities + * @param params The `UnAckAlarmsService.ListUnAckAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listUnAckAlarms(params: UnAckAlarmsService.ListUnAckAlarmsParams): __Observable> { + return this.listUnAckAlarmsResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a UnAckAlarms + * + * This operation creates a UnAckAlarms entity. + * @param body The UnAckAlarms to be created + * @return OK or Created + */ + createUnAckAlarmsResponse(body: UnAckAlarmsCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/alarmManagement/v4/unAckAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a UnAckAlarms + * + * This operation creates a UnAckAlarms entity. + * @param body The UnAckAlarms to be created + * @return OK or Created + */ + createUnAckAlarms(body: UnAckAlarmsCreate): __Observable { + return this.createUnAckAlarmsResponse(body).pipe( + __map(_r => _r.body as UnAckAlarms | UnAckAlarms) + ); + } + + /** + * Retrieves a UnAckAlarms by ID + * + * This operation retrieves a UnAckAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `UnAckAlarmsService.RetrieveUnAckAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the UnAckAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveUnAckAlarmsResponse(params: UnAckAlarmsService.RetrieveUnAckAlarmsParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/unAckAlarms/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a UnAckAlarms by ID + * + * This operation retrieves a UnAckAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `UnAckAlarmsService.RetrieveUnAckAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the UnAckAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveUnAckAlarms(params: UnAckAlarmsService.RetrieveUnAckAlarmsParams): __Observable { + return this.retrieveUnAckAlarmsResponse(params).pipe( + __map(_r => _r.body as UnAckAlarms) + ); + } +} + +module UnAckAlarmsService { + + /** + * Parameters for listUnAckAlarms + */ + export interface ListUnAckAlarmsParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + + /** + * allParams + */ + allParams?: any; + } + + /** + * Parameters for retrieveUnAckAlarms + */ + export interface RetrieveUnAckAlarmsParams { + + /** + * Identifier of the UnAckAlarms + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { UnAckAlarmsService } diff --git a/src/app/openApis/alarmManagement/services/un-group-alarms.service.ts b/src/app/openApis/alarmManagement/services/un-group-alarms.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..3ff048024d4a94bc0c8991cbae8cd978c7ae0680 --- /dev/null +++ b/src/app/openApis/alarmManagement/services/un-group-alarms.service.ts @@ -0,0 +1,231 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { UnGroupAlarms } from '../models/un-group-alarms'; +import { UnGroupAlarmsCreate } from '../models/un-group-alarms-create'; +@Injectable({ + providedIn: 'root', +}) +class UnGroupAlarmsService extends __BaseService { + static readonly listUnGroupAlarmsPath = '/alarmManagement/v4/unGroupAlarms'; + static readonly createUnGroupAlarmsPath = '/alarmManagement/v4/unGroupAlarms'; + static readonly retrieveUnGroupAlarmsPath = '/alarmManagement/v4/unGroupAlarms/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find UnGroupAlarms objects + * + * This operation list or find UnGroupAlarms entities + * @param params The `UnGroupAlarmsService.ListUnGroupAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listUnGroupAlarmsResponse(params: UnGroupAlarmsService.ListUnGroupAlarmsParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.allParams != null) __params = __params.set('allParams', params.allParams.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/unGroupAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find UnGroupAlarms objects + * + * This operation list or find UnGroupAlarms entities + * @param params The `UnGroupAlarmsService.ListUnGroupAlarmsParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listUnGroupAlarms(params: UnGroupAlarmsService.ListUnGroupAlarmsParams): __Observable> { + return this.listUnGroupAlarmsResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a UnGroupAlarms + * + * This operation creates a UnGroupAlarms entity. + * @param body The UnGroupAlarms to be created + * @return OK or Created + */ + createUnGroupAlarmsResponse(body: UnGroupAlarmsCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/alarmManagement/v4/unGroupAlarms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a UnGroupAlarms + * + * This operation creates a UnGroupAlarms entity. + * @param body The UnGroupAlarms to be created + * @return OK or Created + */ + createUnGroupAlarms(body: UnGroupAlarmsCreate): __Observable { + return this.createUnGroupAlarmsResponse(body).pipe( + __map(_r => _r.body as UnGroupAlarms | UnGroupAlarms) + ); + } + + /** + * Retrieves a UnGroupAlarms by ID + * + * This operation retrieves a UnGroupAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `UnGroupAlarmsService.RetrieveUnGroupAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the UnGroupAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveUnGroupAlarmsResponse(params: UnGroupAlarmsService.RetrieveUnGroupAlarmsParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/alarmManagement/v4/unGroupAlarms/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a UnGroupAlarms by ID + * + * This operation retrieves a UnGroupAlarms entity. Attribute selection is enabled for all first level attributes. + * @param params The `UnGroupAlarmsService.RetrieveUnGroupAlarmsParams` containing the following parameters: + * + * - `id`: Identifier of the UnGroupAlarms + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveUnGroupAlarms(params: UnGroupAlarmsService.RetrieveUnGroupAlarmsParams): __Observable { + return this.retrieveUnGroupAlarmsResponse(params).pipe( + __map(_r => _r.body as UnGroupAlarms) + ); + } +} + +module UnGroupAlarmsService { + + /** + * Parameters for listUnGroupAlarms + */ + export interface ListUnGroupAlarmsParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + + /** + * allParams + */ + allParams?: any; + } + + /** + * Parameters for retrieveUnGroupAlarms + */ + export interface RetrieveUnGroupAlarmsParams { + + /** + * Identifier of the UnGroupAlarms + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { UnGroupAlarmsService } diff --git a/src/app/openApis/alarmManagement/strict-http-response.ts b/src/app/openApis/alarmManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/alarmManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/api-configuration.ts b/src/app/openApis/assuranceServicesManagementAPI/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..21fe4527f3b6976cab0ad5344d9e59d5c5f5c62c --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/oas-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/api.module.ts b/src/app/openApis/assuranceServicesManagementAPI/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..c339d7c93379d7b94733bf49d51ac20450120afd --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/api.module.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { ActionSpecificationService } from './services/action-specification.service'; +import { RuleSpecificationService } from './services/rule-specification.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + ActionSpecificationService, + RuleSpecificationService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/base-service.ts b/src/app/openApis/assuranceServicesManagementAPI/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models.ts b/src/app/openApis/assuranceServicesManagementAPI/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..06ab8629a7fee01bd24caa2604fe937817ee0ecd --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models.ts @@ -0,0 +1,13 @@ +export { Action } from './models/action'; +export { ActionCharacteristic } from './models/action-characteristic'; +export { ActionParam } from './models/action-param'; +export { ActionSpecification } from './models/action-specification'; +export { ActionSpecificationCreate } from './models/action-specification-create'; +export { ActionSpecificationRef } from './models/action-specification-ref'; +export { ActionSpecificationUpdate } from './models/action-specification-update'; +export { Condition } from './models/condition'; +export { Error } from './models/error'; +export { RuleSpecification } from './models/rule-specification'; +export { RuleSpecificationCreate } from './models/rule-specification-create'; +export { RuleSpecificationUpdate } from './models/rule-specification-update'; +export { Scope } from './models/scope'; diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/action-characteristic.ts b/src/app/openApis/assuranceServicesManagementAPI/models/action-characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..f2ae800d6306257e573c35e2572d09658d0b1fe7 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/action-characteristic.ts @@ -0,0 +1,10 @@ +/* tslint:disable */ + +/** + * An ActionCharacteristic is an entity that describes the values of the characteristics of ana ction in a rule. + */ +export interface ActionCharacteristic { + name?: string; + uuid?: string; + value?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/action-param.ts b/src/app/openApis/assuranceServicesManagementAPI/models/action-param.ts new file mode 100644 index 0000000000000000000000000000000000000000..1b6b928e0cbfe9aba5b761398c64147dd0629b51 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/action-param.ts @@ -0,0 +1,10 @@ +/* tslint:disable */ + +/** + * An ActionParam is an entity that describes parameteres of an action. + */ +export interface ActionParam { + paramName?: string; + paramValue?: string; + uuid?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-create.ts b/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..e784e73bd365aef60394207473788728994daffd --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-create.ts @@ -0,0 +1,19 @@ +/* tslint:disable */ +import { ActionParam } from './action-param'; + +/** + * An ActionSpecification is an entity that describes an action to perform on certain entities. + */ +export interface ActionSpecificationCreate { + + /** + * Description of the entity + */ + description?: string; + + /** + * The name of the entity + */ + name?: string; + params?: Array; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-ref.ts b/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..8d22ae09767043f176aa8dbde701eb5183574b15 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-ref.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ + +/** + * Action reference + */ +export interface ActionSpecificationRef { + actionId?: string; + uuid?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-update.ts b/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..e91fdcac87b39e935ee8aa4536b746b15f1d691a --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/action-specification-update.ts @@ -0,0 +1,19 @@ +/* tslint:disable */ +import { ActionParam } from './action-param'; + +/** + * An ActionSpecification is an entity that describes an action to perform on certain entities. + */ +export interface ActionSpecificationUpdate { + + /** + * Description of the entity + */ + description?: string; + + /** + * The name of the entity + */ + name?: string; + params?: Array; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/action-specification.ts b/src/app/openApis/assuranceServicesManagementAPI/models/action-specification.ts new file mode 100644 index 0000000000000000000000000000000000000000..1f29411218ff6d771f941a2efd645346bac1cce7 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/action-specification.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +import { ActionParam } from './action-param'; + +/** + * An ActionSpecification is an entity that describes an action to perform on certain entities. + */ +export interface ActionSpecification { + description?: string; + name?: string; + params?: Array; + uuid?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/action.ts b/src/app/openApis/assuranceServicesManagementAPI/models/action.ts new file mode 100644 index 0000000000000000000000000000000000000000..f98fa5d90e7d2983f5a3dca1e4c0b6a7e2a34ebe --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/action.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ActionCharacteristic } from './action-characteristic'; +import { ActionSpecificationRef } from './action-specification-ref'; + +/** + * Action element + */ +export interface Action { + actionCharacteristics?: Array; + actionSpecificationRef?: ActionSpecificationRef; + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/condition.ts b/src/app/openApis/assuranceServicesManagementAPI/models/condition.ts new file mode 100644 index 0000000000000000000000000000000000000000..a0a99efeb2e4d2a961c082afc9ce26feb0af4995 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/condition.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ + +/** + * A Condition is an entity that describes the condition that must be tru in order to apply an action. + */ +export interface Condition { + booleanOperator?: string; + eventAttributeName?: string; + eventAttributeValue?: string; + operator?: string; + uuid?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/error.ts b/src/app/openApis/assuranceServicesManagementAPI/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..91eebd689c6d6b4faf2fd3eddb40264c6ca35bf2 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/error.ts @@ -0,0 +1,27 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: string; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * HTTP Error code extension + */ + status?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification-create.ts b/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..98d687808a39afe1633be0d41e5ac4d58a619266 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification-create.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Action } from './action'; +import { Condition } from './condition'; +import { Scope } from './scope'; + +/** + * A RuleSpecification is an entity that describes a rule to apply an action on certain conditions in the context of a service. + */ +export interface RuleSpecificationCreate { + actions?: Array; + condition?: Array; + description?: string; + eventType?: string; + name?: string; + scope?: Scope; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification-update.ts b/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..a263984267cd55236ba8db98a32979bbdb60a3ce --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification-update.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Action } from './action'; +import { Condition } from './condition'; +import { Scope } from './scope'; + +/** + * A RuleSpecification is an entity that describes a rule to apply an action on certain conditions in the context of a service. + */ +export interface RuleSpecificationUpdate { + actions?: Array; + condition?: Array; + description?: string; + eventType?: string; + name?: string; + scope?: Scope; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification.ts b/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification.ts new file mode 100644 index 0000000000000000000000000000000000000000..e8722279496411b6b29c3fa61dd38b3cc1371123 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/rule-specification.ts @@ -0,0 +1,25 @@ +/* tslint:disable */ +import { Action } from './action'; +import { Condition } from './condition'; +import { Scope } from './scope'; + +/** + * A RuleSpecification is an entity that describes a rule to apply an action on certain conditions in the context of a service. + */ +export interface RuleSpecification { + actions?: Array; + condition?: Array; + + /** + * Description of this entity + */ + description?: string; + eventType?: string; + + /** + * Name of the entity + */ + name?: string; + scope?: Scope; + uuid?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/models/scope.ts b/src/app/openApis/assuranceServicesManagementAPI/models/scope.ts new file mode 100644 index 0000000000000000000000000000000000000000..572cbf0c62f7cb7759daf2f5cdf4f28874d209e6 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/models/scope.ts @@ -0,0 +1,8 @@ +/* tslint:disable */ + +/** + * The scope that the Rule is related. + */ +export interface Scope { + entityUUID?: string; +} diff --git a/src/app/openApis/assuranceServicesManagementAPI/services.ts b/src/app/openApis/assuranceServicesManagementAPI/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..68757d90093d4dd31795a3a488ee61b04cb0d619 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/services.ts @@ -0,0 +1,2 @@ +export { ActionSpecificationService } from './services/action-specification.service'; +export { RuleSpecificationService } from './services/rule-specification.service'; diff --git a/src/app/openApis/assuranceServicesManagementAPI/services/action-specification.service.ts b/src/app/openApis/assuranceServicesManagementAPI/services/action-specification.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..85cf0385b5bdca38721050cb66670bb8aa5fdedf --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/services/action-specification.service.ts @@ -0,0 +1,343 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ActionSpecification } from '../models/action-specification'; +import { ActionSpecificationCreate } from '../models/action-specification-create'; +import { ActionSpecificationUpdate } from '../models/action-specification-update'; +@Injectable({ + providedIn: 'root', +}) +class ActionSpecificationService extends __BaseService { + static readonly listActionSpecificationPath = '/assuranceServicesManagement/v1/actionSpecification'; + static readonly createActionSpecificationPath = '/assuranceServicesManagement/v1/actionSpecification'; + static readonly retrieveActionSpecificationPath = '/assuranceServicesManagement/v1/actionSpecification/{id}'; + static readonly deleteActionSpecificationPath = '/assuranceServicesManagement/v1/actionSpecification/{id}'; + static readonly patchActionSpecificationPath = '/assuranceServicesManagement/v1/actionSpecification/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ActionSpecification objects + * + * This operation list or find ActionSpecification entities + * @param params The `ActionSpecificationService.ListActionSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listActionSpecificationResponse(params: ActionSpecificationService.ListActionSpecificationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/assuranceServicesManagement/v1/actionSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ActionSpecification objects + * + * This operation list or find ActionSpecification entities + * @param params The `ActionSpecificationService.ListActionSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listActionSpecification(params: ActionSpecificationService.ListActionSpecificationParams): __Observable> { + return this.listActionSpecificationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates an ActionSpecification + * + * This operation creates an ActionSpecification entity. + * @param body The ActionSpecification to be created + * @return OK or Created + */ + createActionSpecificationResponse(body: ActionSpecificationCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/assuranceServicesManagement/v1/actionSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates an ActionSpecification + * + * This operation creates an ActionSpecification entity. + * @param body The ActionSpecification to be created + * @return OK or Created + */ + createActionSpecification(body: ActionSpecificationCreate): __Observable { + return this.createActionSpecificationResponse(body).pipe( + __map(_r => _r.body as ActionSpecification | ActionSpecification) + ); + } + + /** + * Retrieves an ActionSpecification by ID + * + * This operation retrieves an ActionSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ActionSpecificationService.RetrieveActionSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ActionSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * - `allParams`: allParams + * + * @return Success + */ + retrieveActionSpecificationResponse(params: ActionSpecificationService.RetrieveActionSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.allParams != null) __params = __params.set('allParams', params.allParams.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/assuranceServicesManagement/v1/actionSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves an ActionSpecification by ID + * + * This operation retrieves an ActionSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ActionSpecificationService.RetrieveActionSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ActionSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * - `allParams`: allParams + * + * @return Success + */ + retrieveActionSpecification(params: ActionSpecificationService.RetrieveActionSpecificationParams): __Observable { + return this.retrieveActionSpecificationResponse(params).pipe( + __map(_r => _r.body as ActionSpecification) + ); + } + + /** + * Deletes an ActionSpecification + * + * This operation deletes a ActionSpecification entity. + * @param id Identifier of the ActionSpecification + */ + deleteActionSpecificationResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/assuranceServicesManagement/v1/actionSpecification/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes an ActionSpecification + * + * This operation deletes a ActionSpecification entity. + * @param id Identifier of the ActionSpecification + */ + deleteActionSpecification(id: string): __Observable { + return this.deleteActionSpecificationResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially an ActionSpecification + * + * This operation updates partially an ActionSpecification entity. + * @param params The `ActionSpecificationService.PatchActionSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ActionSpecification + * + * - `body`: The ActionSpecification to be updated + * + * @return Updated + */ + patchActionSpecificationResponse(params: ActionSpecificationService.PatchActionSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/assuranceServicesManagement/v1/actionSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially an ActionSpecification + * + * This operation updates partially an ActionSpecification entity. + * @param params The `ActionSpecificationService.PatchActionSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ActionSpecification + * + * - `body`: The ActionSpecification to be updated + * + * @return Updated + */ + patchActionSpecification(params: ActionSpecificationService.PatchActionSpecificationParams): __Observable { + return this.patchActionSpecificationResponse(params).pipe( + __map(_r => _r.body as ActionSpecification) + ); + } +} + +module ActionSpecificationService { + + /** + * Parameters for listActionSpecification + */ + export interface ListActionSpecificationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveActionSpecification + */ + export interface RetrieveActionSpecificationParams { + + /** + * Identifier of the ActionSpecification + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + + /** + * allParams + */ + allParams?: any; + } + + /** + * Parameters for patchActionSpecification + */ + export interface PatchActionSpecificationParams { + + /** + * Identifier of the ActionSpecification + */ + id: string; + + /** + * The ActionSpecification to be updated + */ + body: ActionSpecificationUpdate; + } +} + +export { ActionSpecificationService } diff --git a/src/app/openApis/assuranceServicesManagementAPI/services/rule-specification.service.ts b/src/app/openApis/assuranceServicesManagementAPI/services/rule-specification.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..771ea26d2c5c470cb2791cdc1b9de55ff34eca30 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/services/rule-specification.service.ts @@ -0,0 +1,333 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { RuleSpecification } from '../models/rule-specification'; +import { RuleSpecificationCreate } from '../models/rule-specification-create'; +import { RuleSpecificationUpdate } from '../models/rule-specification-update'; +@Injectable({ + providedIn: 'root', +}) +class RuleSpecificationService extends __BaseService { + static readonly listRuleSpecificationPath = '/assuranceServicesManagement/v1/ruleSpecification'; + static readonly createRuleSpecificationPath = '/assuranceServicesManagement/v1/ruleSpecification'; + static readonly retrieveRuleSpecificationPath = '/assuranceServicesManagement/v1/ruleSpecification/{id}'; + static readonly deleteRuleSpecificationPath = '/assuranceServicesManagement/v1/ruleSpecification/{id}'; + static readonly patchRuleSpecificationPath = '/assuranceServicesManagement/v1/ruleSpecification/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find RuleSpecification objects + * + * This operation list or find RuleSpecification entities + * @param params The `RuleSpecificationService.ListRuleSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listRuleSpecificationResponse(params: RuleSpecificationService.ListRuleSpecificationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/assuranceServicesManagement/v1/ruleSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find RuleSpecification objects + * + * This operation list or find RuleSpecification entities + * @param params The `RuleSpecificationService.ListRuleSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listRuleSpecification(params: RuleSpecificationService.ListRuleSpecificationParams): __Observable> { + return this.listRuleSpecificationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a RuleSpecification + * + * This operation creates a RuleSpecification entity. + * @param body The RuleSpecification to be created + * @return OK or Created + */ + createRuleSpecificationResponse(body: RuleSpecificationCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/assuranceServicesManagement/v1/ruleSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a RuleSpecification + * + * This operation creates a RuleSpecification entity. + * @param body The RuleSpecification to be created + * @return OK or Created + */ + createRuleSpecification(body: RuleSpecificationCreate): __Observable { + return this.createRuleSpecificationResponse(body).pipe( + __map(_r => _r.body as RuleSpecification | RuleSpecification) + ); + } + + /** + * Retrieves a RuleSpecification by ID + * + * This operation retrieves a RuleSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `RuleSpecificationService.RetrieveRuleSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the RuleSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveRuleSpecificationResponse(params: RuleSpecificationService.RetrieveRuleSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/assuranceServicesManagement/v1/ruleSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a RuleSpecification by ID + * + * This operation retrieves a RuleSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `RuleSpecificationService.RetrieveRuleSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the RuleSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveRuleSpecification(params: RuleSpecificationService.RetrieveRuleSpecificationParams): __Observable { + return this.retrieveRuleSpecificationResponse(params).pipe( + __map(_r => _r.body as RuleSpecification) + ); + } + + /** + * Deletes a RuleSpecification + * + * This operation deletes a RuleSpecification entity. + * @param id Identifier of the RuleSpecification + */ + deleteRuleSpecificationResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/assuranceServicesManagement/v1/ruleSpecification/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a RuleSpecification + * + * This operation deletes a RuleSpecification entity. + * @param id Identifier of the RuleSpecification + */ + deleteRuleSpecification(id: string): __Observable { + return this.deleteRuleSpecificationResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially a RuleSpecification + * + * This operation updates partially a RuleSpecification entity. + * @param params The `RuleSpecificationService.PatchRuleSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the RuleSpecification + * + * - `body`: The RuleSpecification to be updated + * + * @return Updated + */ + patchRuleSpecificationResponse(params: RuleSpecificationService.PatchRuleSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/assuranceServicesManagement/v1/ruleSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a RuleSpecification + * + * This operation updates partially a RuleSpecification entity. + * @param params The `RuleSpecificationService.PatchRuleSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the RuleSpecification + * + * - `body`: The RuleSpecification to be updated + * + * @return Updated + */ + patchRuleSpecification(params: RuleSpecificationService.PatchRuleSpecificationParams): __Observable { + return this.patchRuleSpecificationResponse(params).pipe( + __map(_r => _r.body as RuleSpecification) + ); + } +} + +module RuleSpecificationService { + + /** + * Parameters for listRuleSpecification + */ + export interface ListRuleSpecificationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveRuleSpecification + */ + export interface RetrieveRuleSpecificationParams { + + /** + * Identifier of the RuleSpecification + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchRuleSpecification + */ + export interface PatchRuleSpecificationParams { + + /** + * Identifier of the RuleSpecification + */ + id: string; + + /** + * The RuleSpecification to be updated + */ + body: RuleSpecificationUpdate; + } +} + +export { RuleSpecificationService } diff --git a/src/app/openApis/assuranceServicesManagementAPI/strict-http-response.ts b/src/app/openApis/assuranceServicesManagementAPI/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/assuranceServicesManagementAPI/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/api-configuration.ts b/src/app/openApis/lcmRuleSpecificationAPI/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..86f598fa642eb0ea0065944a037dc6e1939d80da --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//xxx'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/api.module.ts b/src/app/openApis/lcmRuleSpecificationAPI/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..cec71e300de0a80ee9ece160ad9f98f234bb6bc6 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/api.module.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { LcmRuleSpecificationService } from './services/lcm-rule-specification.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + LcmRuleSpecificationService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/base-service.ts b/src/app/openApis/lcmRuleSpecificationAPI/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models.ts b/src/app/openApis/lcmRuleSpecificationAPI/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..2fff3622e0d4889032e4e82bacd0c4c05cf1bb65 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models.ts @@ -0,0 +1,9 @@ +export { Error } from './models/error'; +export { LCMRuleSpecification } from './models/lcmrule-specification'; +export { LCMRuleSpecificationCreate } from './models/lcmrule-specification-create'; +export { LCMRuleSpecificationUpdate } from './models/lcmrule-specification-update'; +export { ServiceSpecificationRef } from './models/service-specification-ref'; +export { StackTraceElement } from './models/stack-trace-element'; +export { TargetServiceSchema } from './models/target-service-schema'; +export { Throwable } from './models/throwable'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/error.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..d6c6f98546b4cdbc1e760ede230465700045fe02 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/error.ts @@ -0,0 +1,10 @@ +/* tslint:disable */ +import { Throwable } from './throwable'; +import { StackTraceElement } from './stack-trace-element'; +export interface Error { + cause?: Throwable; + localizedMessage?: string; + message?: string; + stackTrace?: Array; + suppressed?: Array; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification-create.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..39d64b29a3738b6e95fa7185a5c4a939914311c2 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification-create.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * A LCM RuleSpecification is an entity that describes a LCM rule to apply during the LCM of a service. + */ +export interface LCMRuleSpecificationCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + code?: string; + content?: string; + description?: string; + lcmrulephase?: string; + lifecycleStatus?: string; + name?: string; + priority?: number; + serviceSpecs?: Array; + validFor?: TimePeriod; + version?: string; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification-update.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..6a0054c42bf43868218995ffdc087e953c4a028e --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification-update.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * A LCM RuleSpecification is an entity that describes a LCM rule to apply during the LCM of a service. + */ +export interface LCMRuleSpecificationUpdate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + code?: string; + content?: string; + description?: string; + lcmrulephase?: string; + lifecycleStatus?: string; + name?: string; + priority?: number; + serviceSpecs?: Array; + validFor?: TimePeriod; + version?: string; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification.ts new file mode 100644 index 0000000000000000000000000000000000000000..593b06a7eff064421c3e9b721fc47e25b6f22592 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * A LCM RuleSpecification is an entity that describes a LCM rule to apply during the LCM of a service. + */ +export interface LCMRuleSpecification { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + code?: string; + content?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + lcmrulephase?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * priority of the entity + */ + priority?: number; + + /** + * List of service specs associated with this rule + */ + serviceSpecs?: Array; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/service-specification-ref.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/service-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..549a3c1bfda53fea5ce38bdebc24e7aecf8facc2 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/service-specification-ref.ts @@ -0,0 +1,45 @@ +/* tslint:disable */ +import { TargetServiceSchema } from './target-service-schema'; + +/** + * Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification. + */ +export interface ServiceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/stack-trace-element.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/stack-trace-element.ts new file mode 100644 index 0000000000000000000000000000000000000000..4a746f15535f1ff10eea93e7ff435eeb6370e364 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/stack-trace-element.ts @@ -0,0 +1,11 @@ +/* tslint:disable */ +export interface StackTraceElement { + classLoaderName?: string; + className?: string; + fileName?: string; + lineNumber?: number; + methodName?: string; + moduleName?: string; + moduleVersion?: string; + nativeMethod?: boolean; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/target-service-schema.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/target-service-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4887bf9c9dd0e25c992a00348c805792cf20349 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/target-service-schema.ts @@ -0,0 +1,24 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target service which is described by service specification + */ +export interface TargetServiceSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/throwable.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/throwable.ts new file mode 100644 index 0000000000000000000000000000000000000000..74a9a16c1397fccef44931d8f1a98667c760b0ff --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/throwable.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { StackTraceElement } from './stack-trace-element'; +export interface Throwable { + cause?: Throwable; + localizedMessage?: string; + message?: string; + stackTrace?: Array; + suppressed?: Array; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/models/time-period.ts b/src/app/openApis/lcmRuleSpecificationAPI/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/lcmRuleSpecificationAPI/services.ts b/src/app/openApis/lcmRuleSpecificationAPI/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..1bbc4cfc70bf154903c07fda3d3a5fe3ecb76db7 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/services.ts @@ -0,0 +1 @@ +export { LcmRuleSpecificationService } from './services/lcm-rule-specification.service'; diff --git a/src/app/openApis/lcmRuleSpecificationAPI/services/lcm-rule-specification.service.ts b/src/app/openApis/lcmRuleSpecificationAPI/services/lcm-rule-specification.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..07ace9328f717f8476b31d2d327c011c78529753 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/services/lcm-rule-specification.service.ts @@ -0,0 +1,425 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { LCMRuleSpecification } from '../models/lcmrule-specification'; +import { LCMRuleSpecificationCreate } from '../models/lcmrule-specification-create'; +import { LCMRuleSpecificationUpdate } from '../models/lcmrule-specification-update'; +@Injectable({ + providedIn: 'root', +}) +class LcmRuleSpecificationService extends __BaseService { + static readonly listLCMRuleSpecificationPath = '/lcmrulesmanagement/v1/lcmRuleSpecification'; + static readonly listLCMRuleSpecificationByServiceSpecIdPath = '/lcmrulesmanagement/v1/lcmRuleSpecification/serviceSpec/{id}'; + static readonly createLCMRuleSpecificationPath = '/lcmrulesmanagement/v1/lcmRuleSpecification'; + static readonly retrieveLCMRuleSpecificationPath = '/lcmrulesmanagement/v1/lcmRuleSpecification/{id}'; + static readonly deleteLCMRuleSpecificationPath = '/lcmrulesmanagement/v1/lcmRuleSpecification/{id}'; + static readonly patchLCMRuleSpecificationPath = '/lcmrulesmanagement/v1/lcmRuleSpecification/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find LCM RuleSpecification objects + * + * This operation list or find LCM RuleSpecification entities + * @param params The `LcmRuleSpecificationService.ListLCMRuleSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listLCMRuleSpecificationResponse(params: LcmRuleSpecificationService.ListLCMRuleSpecificationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/lcmrulesmanagement/v1/lcmRuleSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find LCM RuleSpecification objects + * + * This operation list or find LCM RuleSpecification entities + * @param params The `LcmRuleSpecificationService.ListLCMRuleSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listLCMRuleSpecification(params: LcmRuleSpecificationService.ListLCMRuleSpecificationParams): __Observable> { + return this.listLCMRuleSpecificationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + + /** + * List or find LCM RuleSpecification objects + * + * This operation list or find LCM RuleSpecification entities + * @param params The `LcmRuleSpecificationService.ListLCMRuleSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listLCMRuleSpecificationByServiceSpecIdResponse(params: LcmRuleSpecificationService.ListLCMRuleSpecificationByServiceSpecIDParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/lcmrulesmanagement/v1/lcmRuleSpecification/serviceSpec/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find LCM RuleSpecification objects + * + * This operation list or find LCM RuleSpecification entities + * @param params The `LcmRuleSpecificationService.ListLCMRuleSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listLCMRuleSpecificationByServiceSpecId(params: LcmRuleSpecificationService.ListLCMRuleSpecificationByServiceSpecIDParams): __Observable> { + return this.listLCMRuleSpecificationByServiceSpecIdResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + + + /** + * Creates a LCM RuleSpecification + * + * This operation creates a LCM RuleSpecification entity. + * @param body The RuleSpecification to be created + * @return OK or Created + */ + createLCMRuleSpecificationResponse(body: LCMRuleSpecificationCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/lcmrulesmanagement/v1/lcmRuleSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a LCM RuleSpecification + * + * This operation creates a LCM RuleSpecification entity. + * @param body The RuleSpecification to be created + * @return OK or Created + */ + createLCMRuleSpecification(body: LCMRuleSpecificationCreate): __Observable { + return this.createLCMRuleSpecificationResponse(body).pipe( + __map(_r => _r.body as LCMRuleSpecification | LCMRuleSpecification) + ); + } + + /** + * Retrieves a LCM RuleSpecification by ID + * + * This operation retrieves a LCM RuleSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `LcmRuleSpecificationService.RetrieveLCMRuleSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the LCM RuleSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveLCMRuleSpecificationResponse(params: LcmRuleSpecificationService.RetrieveLCMRuleSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/lcmrulesmanagement/v1/lcmRuleSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a LCM RuleSpecification by ID + * + * This operation retrieves a LCM RuleSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `LcmRuleSpecificationService.RetrieveLCMRuleSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the LCM RuleSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveLCMRuleSpecification(params: LcmRuleSpecificationService.RetrieveLCMRuleSpecificationParams): __Observable { + return this.retrieveLCMRuleSpecificationResponse(params).pipe( + __map(_r => _r.body as LCMRuleSpecification) + ); + } + + /** + * Deletes a LCM RuleSpecification + * + * This operation deletes a LCM RuleSpecification entity. + * @param id Identifier of the RuleSpecification + * @return Deleted + */ + deleteLCMRuleSpecificationResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/lcmrulesmanagement/v1/lcmRuleSpecification/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a LCM RuleSpecification + * + * This operation deletes a LCM RuleSpecification entity. + * @param id Identifier of the RuleSpecification + * @return Deleted + */ + deleteLCMRuleSpecification(id: string): __Observable<{}> { + return this.deleteLCMRuleSpecificationResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a LCM RuleSpecification + * + * This operation updates partially a LCM RuleSpecification entity. + * @param params The `LcmRuleSpecificationService.PatchLCMRuleSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the LCM RuleSpecification + * + * - `body`: The LCM RuleSpecification to be updated + * + * @return Updated + */ + patchLCMRuleSpecificationResponse(params: LcmRuleSpecificationService.PatchLCMRuleSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/lcmrulesmanagement/v1/lcmRuleSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a LCM RuleSpecification + * + * This operation updates partially a LCM RuleSpecification entity. + * @param params The `LcmRuleSpecificationService.PatchLCMRuleSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the LCM RuleSpecification + * + * - `body`: The LCM RuleSpecification to be updated + * + * @return Updated + */ + patchLCMRuleSpecification(params: LcmRuleSpecificationService.PatchLCMRuleSpecificationParams): __Observable { + return this.patchLCMRuleSpecificationResponse(params).pipe( + __map(_r => _r.body as LCMRuleSpecification) + ); + } +} + +module LcmRuleSpecificationService { + + /** + * Parameters for listLCMRuleSpecification + */ + export interface ListLCMRuleSpecificationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + + + /** + * Parameters for listLCMRuleSpecificationByServiceSpecID + */ + export interface ListLCMRuleSpecificationByServiceSpecIDParams { + + /** + * Identifier of the ServiceSpecID + */ + id: string; + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveLCMRuleSpecification + */ + export interface RetrieveLCMRuleSpecificationParams { + + /** + * Identifier of the LCM RuleSpecification + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchLCMRuleSpecification + */ + export interface PatchLCMRuleSpecificationParams { + + /** + * Identifier of the LCM RuleSpecification + */ + id: string; + + /** + * The LCM RuleSpecification to be updated + */ + body: LCMRuleSpecificationUpdate; + } +} + +export { LcmRuleSpecificationService } diff --git a/src/app/openApis/lcmRuleSpecificationAPI/strict-http-response.ts b/src/app/openApis/lcmRuleSpecificationAPI/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/lcmRuleSpecificationAPI/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/partyManagement/api-configuration.ts b/src/app/openApis/partyManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/partyManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/partyManagement/api.module.ts b/src/app/openApis/partyManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..da8e3791bcddce4004bf7a42241859d7763fe5a0 --- /dev/null +++ b/src/app/openApis/partyManagement/api.module.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { IndividualService } from './services/individual.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { OrganizationService } from './services/organization.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + EventsSubscriptionService, + IndividualService, + NotificationListenersClientSideService, + OrganizationService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/partyManagement/base-service.ts b/src/app/openApis/partyManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/partyManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/partyManagement/models.ts b/src/app/openApis/partyManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..eb55626e42f070fc99a233156a56bf391d44630f --- /dev/null +++ b/src/app/openApis/partyManagement/models.ts @@ -0,0 +1,47 @@ +export { Any } from './models/any'; +export { AttachmentRefOrValue } from './models/attachment-ref-or-value'; +export { Characteristic } from './models/characteristic'; +export { ContactMedium } from './models/contact-medium'; +export { Disability } from './models/disability'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { ExternalReference } from './models/external-reference'; +export { Individual } from './models/individual'; +export { IndividualAttributeValueChangeEvent } from './models/individual-attribute-value-change-event'; +export { IndividualAttributeValueChangeEventPayload } from './models/individual-attribute-value-change-event-payload'; +export { IndividualCreate } from './models/individual-create'; +export { IndividualCreateEvent } from './models/individual-create-event'; +export { IndividualCreateEventPayload } from './models/individual-create-event-payload'; +export { IndividualDeleteEvent } from './models/individual-delete-event'; +export { IndividualDeleteEventPayload } from './models/individual-delete-event-payload'; +export { IndividualIdentification } from './models/individual-identification'; +export { IndividualStateChangeEvent } from './models/individual-state-change-event'; +export { IndividualStateChangeEventPayload } from './models/individual-state-change-event-payload'; +export { IndividualUpdate } from './models/individual-update'; +export { LanguageAbility } from './models/language-ability'; +export { MediumCharacteristic } from './models/medium-characteristic'; +export { Organization } from './models/organization'; +export { OrganizationAttributeValueChangeEvent } from './models/organization-attribute-value-change-event'; +export { OrganizationAttributeValueChangeEventPayload } from './models/organization-attribute-value-change-event-payload'; +export { OrganizationChildRelationship } from './models/organization-child-relationship'; +export { OrganizationCreate } from './models/organization-create'; +export { OrganizationCreateEvent } from './models/organization-create-event'; +export { OrganizationCreateEventPayload } from './models/organization-create-event-payload'; +export { OrganizationDeleteEvent } from './models/organization-delete-event'; +export { OrganizationDeleteEventPayload } from './models/organization-delete-event-payload'; +export { OrganizationIdentification } from './models/organization-identification'; +export { OrganizationParentRelationship } from './models/organization-parent-relationship'; +export { OrganizationRef } from './models/organization-ref'; +export { OrganizationStateChangeEvent } from './models/organization-state-change-event'; +export { OrganizationStateChangeEventPayload } from './models/organization-state-change-event-payload'; +export { OrganizationUpdate } from './models/organization-update'; +export { OtherNameIndividual } from './models/other-name-individual'; +export { OtherNameOrganization } from './models/other-name-organization'; +export { PartyCreditProfile } from './models/party-credit-profile'; +export { Quantity } from './models/quantity'; +export { RelatedParty } from './models/related-party'; +export { Skill } from './models/skill'; +export { TaxDefinition } from './models/tax-definition'; +export { TaxExemptionCertificate } from './models/tax-exemption-certificate'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/partyManagement/models/any.ts b/src/app/openApis/partyManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/partyManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/partyManagement/models/attachment-ref-or-value.ts b/src/app/openApis/partyManagement/models/attachment-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..c464085408c5e399eddb339ab37e59c41ecb3b93 --- /dev/null +++ b/src/app/openApis/partyManagement/models/attachment-ref-or-value.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture. + */ +export interface AttachmentRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Attachment type such as video, picture + */ + attachmentType?: string; + + /** + * The actual contents of the attachment object, if embedded, encoded as base64 + */ + content?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier for this particular attachment + */ + id?: string; + + /** + * Attachment mime type such as extension file for video, picture and document + */ + mimeType?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The size of the attachment. + */ + size?: Quantity; + + /** + * Uniform Resource Locator, is a web page address (a subset of URI) + */ + url?: string; + uuid?: string; + + /** + * The period of time for which the attachment is valid + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/characteristic.ts b/src/app/openApis/partyManagement/models/characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c66ffdc5e25b6b3ace4d40b1c4b12b966ac75f4 --- /dev/null +++ b/src/app/openApis/partyManagement/models/characteristic.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface Characteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The value of the characteristic + */ + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/partyManagement/models/contact-medium.ts b/src/app/openApis/partyManagement/models/contact-medium.ts new file mode 100644 index 0000000000000000000000000000000000000000..5a3ee662d122515d2551f381e2a61521b92c656c --- /dev/null +++ b/src/app/openApis/partyManagement/models/contact-medium.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { MediumCharacteristic } from './medium-characteristic'; +import { TimePeriod } from './time-period'; + +/** + * Indicates the contact medium that could be used to contact the party. + */ +export interface ContactMedium { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Any additional characteristic(s) of this contact medium + */ + characteristic: MediumCharacteristic; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Type of the contact medium, such as: email address, telephone number, postal address + */ + mediumType: string; + + /** + * If true, indicates that is the preferred contact medium + */ + preferred?: boolean; + uuid?: string; + + /** + * The time period that the contact medium is valid for + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/disability.ts b/src/app/openApis/partyManagement/models/disability.ts new file mode 100644 index 0000000000000000000000000000000000000000..b193c2ca4eabd4ba714b77728d56c542c43c7704 --- /dev/null +++ b/src/app/openApis/partyManagement/models/disability.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Lack or inadequate strength or ability. + */ +export interface Disability { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Code of the disability + */ + disabilityCode?: string; + + /** + * Name of the disability + */ + disabilityName?: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/error.ts b/src/app/openApis/partyManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..414df304d3655390c1dcb7bd86ba6b205a13717e --- /dev/null +++ b/src/app/openApis/partyManagement/models/error.ts @@ -0,0 +1,47 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + + /** + * When sub-classing, this defines the super-class. + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + '@type'?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: string; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: string; +} diff --git a/src/app/openApis/partyManagement/models/event-subscription-input.ts b/src/app/openApis/partyManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/partyManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/partyManagement/models/event-subscription.ts b/src/app/openApis/partyManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/partyManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/partyManagement/models/external-reference.ts b/src/app/openApis/partyManagement/models/external-reference.ts new file mode 100644 index 0000000000000000000000000000000000000000..31f2a3fbbc12f70ca1bb6fc687437cf5f2a2ffb8 --- /dev/null +++ b/src/app/openApis/partyManagement/models/external-reference.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ + +/** + * External reference of the individual or reference in other system + */ +export interface ExternalReference { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Type of the external reference + */ + externalReferenceType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/individual-attribute-value-change-event-payload.ts b/src/app/openApis/partyManagement/models/individual-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..c12d72bd9292fdcf5a00d5841f57fcc2f7c77e15 --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-attribute-value-change-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Individual } from './individual'; + +/** + * The event data structure + */ +export interface IndividualAttributeValueChangeEventPayload { + + /** + * The involved resource data for the event + */ + individual?: Individual; +} diff --git a/src/app/openApis/partyManagement/models/individual-attribute-value-change-event.ts b/src/app/openApis/partyManagement/models/individual-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..e431a4817847075330b6c1d58e13a0e8598fabcd --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-attribute-value-change-event.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { IndividualAttributeValueChangeEventPayload } from './individual-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface IndividualAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: IndividualAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/individual-create-event-payload.ts b/src/app/openApis/partyManagement/models/individual-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..4303e7d79f55b65ac8def6e31fdb0377d473b94e --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-create-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Individual } from './individual'; + +/** + * The event data structure + */ +export interface IndividualCreateEventPayload { + + /** + * The involved resource data for the event + */ + individual?: Individual; +} diff --git a/src/app/openApis/partyManagement/models/individual-create-event.ts b/src/app/openApis/partyManagement/models/individual-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c3e4340916cadb78becab0f8fc6646d84d64b18 --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-create-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { IndividualCreateEventPayload } from './individual-create-event-payload'; + +/** + * The notification data structure + */ +export interface IndividualCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: IndividualCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/individual-create.ts b/src/app/openApis/partyManagement/models/individual-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..3846528d86310e832264ca4a83a16f0392ed1010 --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-create.ts @@ -0,0 +1,144 @@ +/* tslint:disable */ +import { ContactMedium } from './contact-medium'; +import { PartyCreditProfile } from './party-credit-profile'; +import { Disability } from './disability'; +import { ExternalReference } from './external-reference'; +import { IndividualIdentification } from './individual-identification'; +import { LanguageAbility } from './language-ability'; +import { OtherNameIndividual } from './other-name-individual'; +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { Skill } from './skill'; +import { TaxExemptionCertificate } from './tax-exemption-certificate'; + +/** + * Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about. Skipped properties: id,href + */ +export interface IndividualCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * e.g. Baron, Graf, Earl,… + */ + aristocraticTitle?: string; + + /** + * Birth date + */ + birthDate?: string; + contactMedium?: Array; + + /** + * Country where the individual was born + */ + countryOfBirth?: string; + creditRating?: Array; + + /** + * Date of death + */ + deathDate?: string; + disability?: Array; + externalReference?: Array; + + /** + * Contains the non-chosen or inherited name. Also known as last name in the Western context + */ + familyName?: string; + + /** + * Family name prefix + */ + familyNamePrefix?: string; + + /** + * A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean,…) + */ + formattedName?: string; + + /** + * Full name flatten (first, middle, and last names) + */ + fullName?: string; + + /** + * Gender + */ + gender?: string; + + /** + * e.g.. Sr, Jr, III (the third),… + */ + generation?: string; + + /** + * First name of the individual + */ + givenName?: string; + individualIdentification?: Array; + languageAbility?: Array; + + /** + * Legal name or birth name (name one has for official purposes) + */ + legalName?: string; + + /** + * Temporary current location od the individual (may be used if the individual has approved its sharing) + */ + location?: string; + + /** + * Marital status (married, divorced, widow ...) + */ + maritalStatus?: string; + + /** + * Middles name or initial + */ + middleName?: string; + + /** + * Nationality + */ + nationality?: string; + otherName?: Array; + partyCharacteristic?: Array; + + /** + * Reference to the place where the individual was born + */ + placeOfBirth?: string; + + /** + * Contains the chosen name by which the individual prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname + */ + preferredGivenName?: string; + relatedParty?: Array; + skill?: Array; + + /** + * Status of the individual + */ + status?: 'initialized' | 'validated' | 'deceaded'; + taxExemptionCertificate?: Array; + + /** + * Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ... + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/individual-delete-event-payload.ts b/src/app/openApis/partyManagement/models/individual-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..181bdf63c98b3bc08a420248751e0b7cd74baf99 --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-delete-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Individual } from './individual'; + +/** + * The event data structure + */ +export interface IndividualDeleteEventPayload { + + /** + * The involved resource data for the event + */ + individual?: Individual; +} diff --git a/src/app/openApis/partyManagement/models/individual-delete-event.ts b/src/app/openApis/partyManagement/models/individual-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..02434be2a8c182b0e28672855ab613300d4b14d9 --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-delete-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { IndividualDeleteEventPayload } from './individual-delete-event-payload'; + +/** + * The notification data structure + */ +export interface IndividualDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: IndividualDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/individual-identification.ts b/src/app/openApis/partyManagement/models/individual-identification.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee6aa4ed4162843065922ffbc3482367855adf3b --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-identification.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { TimePeriod } from './time-period'; + +/** + * Represents our registration of information used as proof of identity by an individual (passport, national identity card, drivers license, social security number, birth certificate) + */ +export interface IndividualIdentification { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + attachment?: AttachmentRefOrValue; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Identifier + */ + identificationId?: string; + + /** + * Identification type (passport, national identity card, drivers license, social security number, birth certificate) + */ + identificationType?: string; + + /** + * Authority which has issued the identifier, such as: social security, town hall + */ + issuingAuthority?: string; + + /** + * Date at which the identifier was issued + */ + issuingDate?: string; + uuid?: string; + + /** + * The period for which the identification information is valid. + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/individual-state-change-event-payload.ts b/src/app/openApis/partyManagement/models/individual-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..999a80dfc6768eb4a39d827fec8dcd607bce180f --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-state-change-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Individual } from './individual'; + +/** + * The event data structure + */ +export interface IndividualStateChangeEventPayload { + + /** + * The involved resource data for the event + */ + individual?: Individual; +} diff --git a/src/app/openApis/partyManagement/models/individual-state-change-event.ts b/src/app/openApis/partyManagement/models/individual-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..9ed10febd87d2bd379e7de3dc38e546a8514e317 --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-state-change-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { IndividualStateChangeEventPayload } from './individual-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface IndividualStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: IndividualStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/individual-update.ts b/src/app/openApis/partyManagement/models/individual-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..cb7af763bc06f1cd711bbefdae04ecf41ca8f85e --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual-update.ts @@ -0,0 +1,144 @@ +/* tslint:disable */ +import { ContactMedium } from './contact-medium'; +import { PartyCreditProfile } from './party-credit-profile'; +import { Disability } from './disability'; +import { ExternalReference } from './external-reference'; +import { IndividualIdentification } from './individual-identification'; +import { LanguageAbility } from './language-ability'; +import { OtherNameIndividual } from './other-name-individual'; +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { Skill } from './skill'; +import { TaxExemptionCertificate } from './tax-exemption-certificate'; + +/** + * Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about. Skipped properties: id,href + */ +export interface IndividualUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * e.g. Baron, Graf, Earl,… + */ + aristocraticTitle?: string; + + /** + * Birth date + */ + birthDate?: string; + contactMedium?: Array; + + /** + * Country where the individual was born + */ + countryOfBirth?: string; + creditRating?: Array; + + /** + * Date of death + */ + deathDate?: string; + disability?: Array; + externalReference?: Array; + + /** + * Contains the non-chosen or inherited name. Also known as last name in the Western context + */ + familyName?: string; + + /** + * Family name prefix + */ + familyNamePrefix?: string; + + /** + * A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean,…) + */ + formattedName?: string; + + /** + * Full name flatten (first, middle, and last names) + */ + fullName?: string; + + /** + * Gender + */ + gender?: string; + + /** + * e.g.. Sr, Jr, III (the third),… + */ + generation?: string; + + /** + * First name of the individual + */ + givenName?: string; + individualIdentification?: Array; + languageAbility?: Array; + + /** + * Legal name or birth name (name one has for official purposes) + */ + legalName?: string; + + /** + * Temporary current location od the individual (may be used if the individual has approved its sharing) + */ + location?: string; + + /** + * Marital status (married, divorced, widow ...) + */ + maritalStatus?: string; + + /** + * Middles name or initial + */ + middleName?: string; + + /** + * Nationality + */ + nationality?: string; + otherName?: Array; + partyCharacteristic?: Array; + + /** + * Reference to the place where the individual was born + */ + placeOfBirth?: string; + + /** + * Contains the chosen name by which the individual prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname + */ + preferredGivenName?: string; + relatedParty?: Array; + skill?: Array; + + /** + * Status of the individual + */ + status?: 'initialized' | 'validated' | 'deceaded'; + taxExemptionCertificate?: Array; + + /** + * Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ... + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/individual.ts b/src/app/openApis/partyManagement/models/individual.ts new file mode 100644 index 0000000000000000000000000000000000000000..a14743086f0fb089d149927c701a11feb73b7cb0 --- /dev/null +++ b/src/app/openApis/partyManagement/models/individual.ts @@ -0,0 +1,151 @@ +/* tslint:disable */ +import { ContactMedium } from './contact-medium'; +import { PartyCreditProfile } from './party-credit-profile'; +import { Disability } from './disability'; +import { ExternalReference } from './external-reference'; +import { IndividualIdentification } from './individual-identification'; +import { LanguageAbility } from './language-ability'; +import { OtherNameIndividual } from './other-name-individual'; +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { Skill } from './skill'; +import { TaxExemptionCertificate } from './tax-exemption-certificate'; + +/** + * Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about. + */ +export interface Individual { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * e.g. Baron, Graf, Earl,… + */ + aristocraticTitle?: string; + + /** + * Birth date + */ + birthDate?: string; + contactMedium?: Array; + + /** + * Country where the individual was born + */ + countryOfBirth?: string; + creditRating?: Array; + + /** + * Date of death + */ + deathDate?: string; + disability?: Array; + externalReference?: Array; + + /** + * Contains the non-chosen or inherited name. Also known as last name in the Western context + */ + familyName?: string; + + /** + * Family name prefix + */ + familyNamePrefix?: string; + + /** + * A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean,…) + */ + formattedName?: string; + + /** + * Full name flatten (first, middle, and last names) + */ + fullName?: string; + + /** + * Gender + */ + gender?: string; + + /** + * e.g.. Sr, Jr, III (the third),… + */ + generation?: string; + + /** + * First name of the individual + */ + givenName?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + individualIdentification?: Array; + languageAbility?: Array; + + /** + * Legal name or birth name (name one has for official purposes) + */ + legalName?: string; + + /** + * Temporary current location od the individual (may be used if the individual has approved its sharing) + */ + location?: string; + + /** + * Marital status (married, divorced, widow ...) + */ + maritalStatus?: string; + + /** + * Middles name or initial + */ + middleName?: string; + + /** + * Nationality + */ + nationality?: string; + otherName?: Array; + partyCharacteristic?: Array; + + /** + * Reference to the place where the individual was born + */ + placeOfBirth?: string; + + /** + * Contains the chosen name by which the individual prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname + */ + preferredGivenName?: string; + relatedParty?: Array; + skill?: Array; + + /** + * Status of the individual + */ + status?: 'initialized' | 'validated' | 'deceaded'; + taxExemptionCertificate?: Array; + + /** + * Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ... + */ + title?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/language-ability.ts b/src/app/openApis/partyManagement/models/language-ability.ts new file mode 100644 index 0000000000000000000000000000000000000000..281a7c2aaf66151b3b835fd8c04597fe0d1e0780 --- /dev/null +++ b/src/app/openApis/partyManagement/models/language-ability.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Ability of an individual to understand or converse in a language. + */ +export interface LanguageAbility { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * A “true” value specifies whether the language is considered by the individual as his favourite one + */ + isFavouriteLanguage?: boolean; + + /** + * Language code (RFC 5646) + */ + languageCode?: string; + + /** + * Language name + */ + languageName?: string; + + /** + * Listening proficiency evaluated for this language + */ + listeningProficiency?: string; + + /** + * Reading proficiency evaluated for this language + */ + readingProficiency?: string; + + /** + * Speaking proficiency evaluated for this language + */ + speakingProficiency?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * Writing proficiency evaluated for this language + */ + writingProficiency?: string; +} diff --git a/src/app/openApis/partyManagement/models/medium-characteristic.ts b/src/app/openApis/partyManagement/models/medium-characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..1c2826bf6ea6d6a167796239e1ab71542cf52c80 --- /dev/null +++ b/src/app/openApis/partyManagement/models/medium-characteristic.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ + +/** + * Describes the contact medium characteristics that could be used to contact a party (an individual or an organization) + */ +export interface MediumCharacteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The city + */ + city?: string; + + /** + * The type of contact, for example: phone number such as mobile, fixed home, fixed office. postal address such as shipping instalation… + */ + contactType?: string; + + /** + * The country + */ + country?: string; + + /** + * Full email address in standard format + */ + emailAddress?: string; + + /** + * The fax number of the contact + */ + faxNumber?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * The primary phone number of the contact + */ + phoneNumber?: string; + + /** + * Postcode + */ + postCode?: string; + + /** + * Identifier as a member of a social network + */ + socialNetworkId?: string; + + /** + * State or province + */ + stateOrProvince?: string; + + /** + * Describes the street + */ + street1?: string; + + /** + * Complementary street description + */ + street2?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-attribute-value-change-event-payload.ts b/src/app/openApis/partyManagement/models/organization-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..9b7c1429804fdd64959a190b7f7268ef103053b3 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-attribute-value-change-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Organization } from './organization'; + +/** + * The event data structure + */ +export interface OrganizationAttributeValueChangeEventPayload { + + /** + * The involved resource data for the event + */ + organization?: Organization; +} diff --git a/src/app/openApis/partyManagement/models/organization-attribute-value-change-event.ts b/src/app/openApis/partyManagement/models/organization-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..92672d80f605b2f4fa265ce44d70ba6671ef38f6 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-attribute-value-change-event.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { OrganizationAttributeValueChangeEventPayload } from './organization-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface OrganizationAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: OrganizationAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-child-relationship.ts b/src/app/openApis/partyManagement/models/organization-child-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..58e071983a3f6e208c98d3e375fecc44c7639777 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-child-relationship.ts @@ -0,0 +1,31 @@ +/* tslint:disable */ +import { OrganizationRef } from './organization-ref'; + +/** + * Child references of an organization in a structure of organizations. + */ +export interface OrganizationChildRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + organization?: OrganizationRef; + + /** + * Type of the relationship. Could be juridical, hierarchical, geographical, functional for example. + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-create-event-payload.ts b/src/app/openApis/partyManagement/models/organization-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..fbf48870e805991c6ef50e4fcbfdbea8c90959b1 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-create-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Organization } from './organization'; + +/** + * The event data structure + */ +export interface OrganizationCreateEventPayload { + + /** + * The involved resource data for the event + */ + organization?: Organization; +} diff --git a/src/app/openApis/partyManagement/models/organization-create-event.ts b/src/app/openApis/partyManagement/models/organization-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..2a644cc21a12f551046357ca56f4c4737cbe448c --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-create-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { OrganizationCreateEventPayload } from './organization-create-event-payload'; + +/** + * The notification data structure + */ +export interface OrganizationCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: OrganizationCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-create.ts b/src/app/openApis/partyManagement/models/organization-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..8c89ce9d38c8279b4a8a47a0e3094ecff6cd807e --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-create.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { ContactMedium } from './contact-medium'; +import { PartyCreditProfile } from './party-credit-profile'; +import { TimePeriod } from './time-period'; +import { ExternalReference } from './external-reference'; +import { OrganizationChildRelationship } from './organization-child-relationship'; +import { OrganizationIdentification } from './organization-identification'; +import { OrganizationParentRelationship } from './organization-parent-relationship'; +import { OtherNameOrganization } from './other-name-organization'; +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { TaxExemptionCertificate } from './tax-exemption-certificate'; + +/** + * Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data. Skipped properties: id,href + */ +export interface OrganizationCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + contactMedium?: Array; + creditRating?: Array; + existsDuring?: TimePeriod; + externalReference?: Array; + + /** + * If value is true, the organization is the head office + */ + isHeadOffice?: boolean; + + /** + * If value is true, the organization is a legal entity known by a national referential. + */ + isLegalEntity?: boolean; + + /** + * Organization name (department name for example) + */ + name?: string; + + /** + * Type of the name : Co, Inc, Ltd,… + */ + nameType?: string; + organizationChildRelationship?: Array; + organizationIdentification?: Array; + organizationParentRelationship?: OrganizationParentRelationship; + + /** + * Type of Organization (company, department...) + */ + organizationType?: string; + otherName?: Array; + partyCharacteristic?: Array; + relatedParty?: Array; + + /** + * Status of the organization + */ + status?: 'initialized' | 'validated' | 'closed'; + taxExemptionCertificate?: Array; + + /** + * Name that the organization (unit) trades under + */ + tradingName?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-delete-event-payload.ts b/src/app/openApis/partyManagement/models/organization-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..abc46319c93295aa3c21639397e94a011a283ed1 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-delete-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Organization } from './organization'; + +/** + * The event data structure + */ +export interface OrganizationDeleteEventPayload { + + /** + * The involved resource data for the event + */ + organization?: Organization; +} diff --git a/src/app/openApis/partyManagement/models/organization-delete-event.ts b/src/app/openApis/partyManagement/models/organization-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..687d2b9d9d8c592eb81eb053412973d8ed8ceda1 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-delete-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { OrganizationDeleteEventPayload } from './organization-delete-event-payload'; + +/** + * The notification data structure + */ +export interface OrganizationDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: OrganizationDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-identification.ts b/src/app/openApis/partyManagement/models/organization-identification.ts new file mode 100644 index 0000000000000000000000000000000000000000..2602cd269647fc50165db172a7b34246e5a67996 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-identification.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { TimePeriod } from './time-period'; + +/** + * Represents our registration of information used as proof of identity by an organization + */ +export interface OrganizationIdentification { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + attachment?: AttachmentRefOrValue; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Identifier + */ + identificationId?: string; + + /** + * Type of identification information used to identify the company in a country or internationally + */ + identificationType?: string; + + /** + * Authority which has issued the identifier (chamber of commerce...) + */ + issuingAuthority?: string; + + /** + * Date at which the identifier was issued + */ + issuingDate?: string; + uuid?: string; + + /** + * The period for which the identification information is valid. + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/organization-parent-relationship.ts b/src/app/openApis/partyManagement/models/organization-parent-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..4ba925ec4905fd0220247884d9cf6e7c1daa3e55 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-parent-relationship.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +import { OrganizationRef } from './organization-ref'; + +/** + * Parent references of an organization in a structure of organizations. + */ +export interface OrganizationParentRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + organization?: OrganizationRef; + + /** + * Type of the relationship. Could be juridical, hierarchical, geographical, functional for example. + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-ref.ts b/src/app/openApis/partyManagement/models/organization-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..ccd6e515a03803238d1fbdf04b42400794f3f109 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-ref.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +export interface OrganizationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-state-change-event-payload.ts b/src/app/openApis/partyManagement/models/organization-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..564cd3239c891eee2dbf201e13344ef2c74654ee --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-state-change-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Organization } from './organization'; + +/** + * The event data structure + */ +export interface OrganizationStateChangeEventPayload { + + /** + * The involved resource data for the event + */ + organization?: Organization; +} diff --git a/src/app/openApis/partyManagement/models/organization-state-change-event.ts b/src/app/openApis/partyManagement/models/organization-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..01d1b745c088af7cc5c940a745915fb6117740c6 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-state-change-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { OrganizationStateChangeEventPayload } from './organization-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface OrganizationStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: OrganizationStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization-update.ts b/src/app/openApis/partyManagement/models/organization-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..1dcac41bf51287b91c42fda777f79e5e4ee54361 --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization-update.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { ContactMedium } from './contact-medium'; +import { PartyCreditProfile } from './party-credit-profile'; +import { TimePeriod } from './time-period'; +import { ExternalReference } from './external-reference'; +import { OrganizationChildRelationship } from './organization-child-relationship'; +import { OrganizationIdentification } from './organization-identification'; +import { OrganizationParentRelationship } from './organization-parent-relationship'; +import { OtherNameOrganization } from './other-name-organization'; +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { TaxExemptionCertificate } from './tax-exemption-certificate'; + +/** + * Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data. Skipped properties: id,href + */ +export interface OrganizationUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + contactMedium?: Array; + creditRating?: Array; + existsDuring?: TimePeriod; + externalReference?: Array; + + /** + * If value is true, the organization is the head office + */ + isHeadOffice?: boolean; + + /** + * If value is true, the organization is a legal entity known by a national referential. + */ + isLegalEntity?: boolean; + + /** + * Organization name (department name for example) + */ + name?: string; + + /** + * Type of the name : Co, Inc, Ltd,… + */ + nameType?: string; + organizationChildRelationship?: Array; + organizationIdentification?: Array; + organizationParentRelationship?: OrganizationParentRelationship; + + /** + * Type of Organization (company, department...) + */ + organizationType?: string; + otherName?: Array; + partyCharacteristic?: Array; + relatedParty?: Array; + + /** + * Status of the organization + */ + status?: 'initialized' | 'validated' | 'closed'; + taxExemptionCertificate?: Array; + + /** + * Name that the organization (unit) trades under + */ + tradingName?: string; +} diff --git a/src/app/openApis/partyManagement/models/organization.ts b/src/app/openApis/partyManagement/models/organization.ts new file mode 100644 index 0000000000000000000000000000000000000000..b8caa6aa6a750393a381bd67d609ad45b66af23d --- /dev/null +++ b/src/app/openApis/partyManagement/models/organization.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +import { ContactMedium } from './contact-medium'; +import { PartyCreditProfile } from './party-credit-profile'; +import { TimePeriod } from './time-period'; +import { ExternalReference } from './external-reference'; +import { OrganizationChildRelationship } from './organization-child-relationship'; +import { OrganizationIdentification } from './organization-identification'; +import { OrganizationParentRelationship } from './organization-parent-relationship'; +import { OtherNameOrganization } from './other-name-organization'; +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { TaxExemptionCertificate } from './tax-exemption-certificate'; + +/** + * Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data. + */ +export interface Organization { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + contactMedium?: Array; + creditRating?: Array; + existsDuring?: TimePeriod; + externalReference?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the organization + */ + id: string; + + /** + * If value is true, the organization is the head office + */ + isHeadOffice?: boolean; + + /** + * If value is true, the organization is a legal entity known by a national referential. + */ + isLegalEntity?: boolean; + + /** + * Name of the entity + */ + name?: string; + + /** + * Type of the name : Co, Inc, Ltd,… + */ + nameType?: string; + organizationChildRelationship?: Array; + organizationIdentification?: Array; + organizationParentRelationship?: OrganizationParentRelationship; + + /** + * Type of Organization (company, department...) + */ + organizationType?: string; + otherName?: Array; + partyCharacteristic?: Array; + relatedParty?: Array; + + /** + * Status of the organization + */ + status?: 'initialized' | 'validated' | 'closed'; + taxExemptionCertificate?: Array; + + /** + * Name that the organization (unit) trades under + */ + tradingName?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/other-name-individual.ts b/src/app/openApis/partyManagement/models/other-name-individual.ts new file mode 100644 index 0000000000000000000000000000000000000000..652a0eebf7bcec06e7c88d5eb7663fb61444c293 --- /dev/null +++ b/src/app/openApis/partyManagement/models/other-name-individual.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Keeps track of other names, for example the old name of a woman before marriage or an artist name. + */ +export interface OtherNameIndividual { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * e.g. Baron, Graf, Earl,… + */ + aristocraticTitle?: string; + + /** + * Contains the non-chosen or inherited name. Also known as last name in the Western context + */ + familyName?: string; + + /** + * Family name prefix + */ + familyNamePrefix?: string; + + /** + * . A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean,…) + */ + formattedName?: string; + + /** + * Full name flatten (first, middle, and last names) + */ + fullName?: string; + + /** + * e.g. Sr, Jr… + */ + generation?: string; + + /** + * First name + */ + givenName?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Legal name or birth name (name one has for official purposes) + */ + legalName?: string; + + /** + * Middle name or initial + */ + middleName?: string; + + /** + * Contains the chosen name by which the person prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname + */ + preferredGivenName?: string; + + /** + * Use for titles (aristrocatic, social, ...): Pr, Dr, Sir,.... + */ + title?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/other-name-organization.ts b/src/app/openApis/partyManagement/models/other-name-organization.ts new file mode 100644 index 0000000000000000000000000000000000000000..c5fa026043f6dd3081c3103c6dd57963725c6927 --- /dev/null +++ b/src/app/openApis/partyManagement/models/other-name-organization.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Keeps track of other names, for example the old name of an organization. + */ +export interface OtherNameOrganization { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Co. , Inc. , Ltd. , Pty Ltd. , Plc; , Gmbh + */ + nameType?: string; + + /** + * The name that the organization trades under + */ + tradingName?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/party-credit-profile.ts b/src/app/openApis/partyManagement/models/party-credit-profile.ts new file mode 100644 index 0000000000000000000000000000000000000000..188a32e3138376c04fff3d67638598c4e9f92199 --- /dev/null +++ b/src/app/openApis/partyManagement/models/party-credit-profile.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * An individual might be evaluated for its worthiness and this evaluation might be based on a credit rating given by a credit agency. + */ +export interface PartyCreditProfile { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Name of the credit agency giving the score + */ + creditAgencyName?: string; + + /** + * Type of the credit agency giving the score + */ + creditAgencyType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Reference corresponding to the credit rating + */ + ratingReference?: string; + + /** + * A measure of a party’s creditworthiness calculated on the basis of a combination of factors such as their income and credit history + */ + ratingScore?: number; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/quantity.ts b/src/app/openApis/partyManagement/models/quantity.ts new file mode 100644 index 0000000000000000000000000000000000000000..d24c6b3f0543bd1702e42db0f4929b813bd165d8 --- /dev/null +++ b/src/app/openApis/partyManagement/models/quantity.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * An amount in a given unit + */ +export interface Quantity { + + /** + * Numeric value in a given unit + */ + amount?: number; + + /** + * Unit + */ + units?: string; +} diff --git a/src/app/openApis/partyManagement/models/related-party.ts b/src/app/openApis/partyManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..b80038dfc630f883910eac884192f0eb46d75199 --- /dev/null +++ b/src/app/openApis/partyManagement/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/skill.ts b/src/app/openApis/partyManagement/models/skill.ts new file mode 100644 index 0000000000000000000000000000000000000000..4667cf90bff7764dc4bde91a8dbf3f52ed43048e --- /dev/null +++ b/src/app/openApis/partyManagement/models/skill.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Skills evaluated for an individual with a level and possibly with a limited validity when an obsolescence is defined (Ex: the first-aid certificate first level is limited to one year and an update training is required each year to keep the level). + */ +export interface Skill { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * A free text comment linked to the evaluation done + */ + comment?: string; + + /** + * Level of expertise in a skill evaluated for an individual + */ + evaluatedLevel?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Code of the skill + */ + skillCode?: string; + + /** + * Name of the skill such as Java language,… + */ + skillName?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/tax-definition.ts b/src/app/openApis/partyManagement/models/tax-definition.ts new file mode 100644 index 0000000000000000000000000000000000000000..5604e1be1c879db6d3404751bfe455c4d2152216 --- /dev/null +++ b/src/app/openApis/partyManagement/models/tax-definition.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * Reference of a tax definition. A tax is levied by an authorized tax jurisdiction. There are many different types of tax (Federal Tax levied by the US Government, State Tax levied by the State of California,…). + */ +export interface TaxDefinition { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the tax. + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Type of the tax. + */ + taxType?: string; + uuid?: string; +} diff --git a/src/app/openApis/partyManagement/models/tax-exemption-certificate.ts b/src/app/openApis/partyManagement/models/tax-exemption-certificate.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f3c596bc532fbcf249f7378205c6817b61bc30c --- /dev/null +++ b/src/app/openApis/partyManagement/models/tax-exemption-certificate.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { TaxDefinition } from './tax-definition'; +import { TimePeriod } from './time-period'; + +/** + * A tax exemption certificate represents a tax exemption granted to a party (individual or organization) by a tax jurisdiction which may be a city, state, country,... An exemption has a certificate identifier (received from the jurisdiction that levied the tax) and a validity period. An exemption is per tax types and determines for each type of tax what portion of the tax is exempted (partial by percentage or complete) via the tax definition. + */ +export interface TaxExemptionCertificate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + attachment?: AttachmentRefOrValue; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the certificate of the tax exemption + */ + id?: string; + taxDefinition?: Array; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/partyManagement/models/time-period.ts b/src/app/openApis/partyManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/partyManagement/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/partyManagement/services.ts b/src/app/openApis/partyManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..62b0c9af2e7aea840da84c8863c7faf6776e4d08 --- /dev/null +++ b/src/app/openApis/partyManagement/services.ts @@ -0,0 +1,4 @@ +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { IndividualService } from './services/individual.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { OrganizationService } from './services/organization.service'; diff --git a/src/app/openApis/partyManagement/services/events-subscription.service.ts b/src/app/openApis/partyManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..75efc39e0cb56c7ee68fa1f3109d9b924cb6273b --- /dev/null +++ b/src/app/openApis/partyManagement/services/events-subscription.service.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener2Path = '/party/v4/hub'; + static readonly unregisterListener2Path = '/party/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener2Response(data: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener2(data: EventSubscriptionInput): __Observable { + return this.registerListener2Response(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener2Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/party/v4/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener2(id: string): __Observable { + return this.unregisterListener2Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/partyManagement/services/individual.service.ts b/src/app/openApis/partyManagement/services/individual.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..9f22aebd7a47f8a8dc4bca14b5ef5a45fc1c5e63 --- /dev/null +++ b/src/app/openApis/partyManagement/services/individual.service.ts @@ -0,0 +1,333 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Individual } from '../models/individual'; +import { IndividualCreate } from '../models/individual-create'; +import { IndividualUpdate } from '../models/individual-update'; +@Injectable({ + providedIn: 'root', +}) +class IndividualService extends __BaseService { + static readonly listIndividualPath = '/party/v4/individual'; + static readonly createIndividualPath = '/party/v4/individual'; + static readonly retrieveIndividualPath = '/party/v4/individual/{id}'; + static readonly deleteIndividualPath = '/party/v4/individual/{id}'; + static readonly patchIndividualPath = '/party/v4/individual/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find Individual objects + * + * This operation list or find Individual entities + * @param params The `IndividualService.ListIndividualParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listIndividualResponse(params: IndividualService.ListIndividualParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/party/v4/individual`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find Individual objects + * + * This operation list or find Individual entities + * @param params The `IndividualService.ListIndividualParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listIndividual(params: IndividualService.ListIndividualParams): __Observable> { + return this.listIndividualResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a Individual + * + * This operation creates a Individual entity. + * @param individual The Individual to be created + * @return OK or Created + */ + createIndividualResponse(individual: IndividualCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = individual; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/individual`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a Individual + * + * This operation creates a Individual entity. + * @param individual The Individual to be created + * @return OK or Created + */ + createIndividual(individual: IndividualCreate): __Observable { + return this.createIndividualResponse(individual).pipe( + __map(_r => _r.body as Individual | Individual) + ); + } + + /** + * Retrieves a Individual by ID + * + * This operation retrieves a Individual entity. Attribute selection is enabled for all first level attributes. + * @param params The `IndividualService.RetrieveIndividualParams` containing the following parameters: + * + * - `id`: Identifier of the Individual + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveIndividualResponse(params: IndividualService.RetrieveIndividualParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/party/v4/individual/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a Individual by ID + * + * This operation retrieves a Individual entity. Attribute selection is enabled for all first level attributes. + * @param params The `IndividualService.RetrieveIndividualParams` containing the following parameters: + * + * - `id`: Identifier of the Individual + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveIndividual(params: IndividualService.RetrieveIndividualParams): __Observable { + return this.retrieveIndividualResponse(params).pipe( + __map(_r => _r.body as Individual) + ); + } + + /** + * Deletes a Individual + * + * This operation deletes a Individual entity. + * @param id Identifier of the Individual + */ + deleteIndividualResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/party/v4/individual/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a Individual + * + * This operation deletes a Individual entity. + * @param id Identifier of the Individual + */ + deleteIndividual(id: string): __Observable { + return this.deleteIndividualResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially a Individual + * + * This operation updates partially a Individual entity. + * @param params The `IndividualService.PatchIndividualParams` containing the following parameters: + * + * - `individual`: The Individual to be updated + * + * - `id`: Identifier of the Individual + * + * @return Updated + */ + patchIndividualResponse(params: IndividualService.PatchIndividualParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.individual; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/party/v4/individual/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a Individual + * + * This operation updates partially a Individual entity. + * @param params The `IndividualService.PatchIndividualParams` containing the following parameters: + * + * - `individual`: The Individual to be updated + * + * - `id`: Identifier of the Individual + * + * @return Updated + */ + patchIndividual(params: IndividualService.PatchIndividualParams): __Observable { + return this.patchIndividualResponse(params).pipe( + __map(_r => _r.body as Individual) + ); + } +} + +module IndividualService { + + /** + * Parameters for listIndividual + */ + export interface ListIndividualParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveIndividual + */ + export interface RetrieveIndividualParams { + + /** + * Identifier of the Individual + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchIndividual + */ + export interface PatchIndividualParams { + + /** + * The Individual to be updated + */ + individual: IndividualUpdate; + + /** + * Identifier of the Individual + */ + id: string; + } +} + +export { IndividualService } diff --git a/src/app/openApis/partyManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/partyManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..f4d96044fafb977b4da195986bd70342bc53a733 --- /dev/null +++ b/src/app/openApis/partyManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,379 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { IndividualAttributeValueChangeEvent } from '../models/individual-attribute-value-change-event'; +import { IndividualCreateEvent } from '../models/individual-create-event'; +import { IndividualDeleteEvent } from '../models/individual-delete-event'; +import { IndividualStateChangeEvent } from '../models/individual-state-change-event'; +import { OrganizationAttributeValueChangeEvent } from '../models/organization-attribute-value-change-event'; +import { OrganizationCreateEvent } from '../models/organization-create-event'; +import { OrganizationDeleteEvent } from '../models/organization-delete-event'; +import { OrganizationStateChangeEvent } from '../models/organization-state-change-event'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToIndividualAttributeValueChangeEventPath = '/party/v4/listener/individualAttributeValueChangeEvent'; + static readonly listenToIndividualCreateEventPath = '/party/v4/listener/individualCreateEvent'; + static readonly listenToIndividualDeleteEventPath = '/party/v4/listener/individualDeleteEvent'; + static readonly listenToIndividualStateChangeEventPath = '/party/v4/listener/individualStateChangeEvent'; + static readonly listenToOrganizationAttributeValueChangeEventPath = '/party/v4/listener/organizationAttributeValueChangeEvent'; + static readonly listenToOrganizationCreateEventPath = '/party/v4/listener/organizationCreateEvent'; + static readonly listenToOrganizationDeleteEventPath = '/party/v4/listener/organizationDeleteEvent'; + static readonly listenToOrganizationStateChangeEventPath = '/party/v4/listener/organizationStateChangeEvent'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity IndividualAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification IndividualAttributeValueChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToIndividualAttributeValueChangeEventResponse(data: IndividualAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/listener/individualAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity IndividualAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification IndividualAttributeValueChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToIndividualAttributeValueChangeEvent(data: IndividualAttributeValueChangeEvent): __Observable { + return this.listenToIndividualAttributeValueChangeEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity IndividualCreateEvent + * + * Example of a client listener for receiving the notification IndividualCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToIndividualCreateEventResponse(data: IndividualCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/listener/individualCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity IndividualCreateEvent + * + * Example of a client listener for receiving the notification IndividualCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToIndividualCreateEvent(data: IndividualCreateEvent): __Observable { + return this.listenToIndividualCreateEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity IndividualDeleteEvent + * + * Example of a client listener for receiving the notification IndividualDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToIndividualDeleteEventResponse(data: IndividualDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/listener/individualDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity IndividualDeleteEvent + * + * Example of a client listener for receiving the notification IndividualDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToIndividualDeleteEvent(data: IndividualDeleteEvent): __Observable { + return this.listenToIndividualDeleteEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity IndividualStateChangeEvent + * + * Example of a client listener for receiving the notification IndividualStateChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToIndividualStateChangeEventResponse(data: IndividualStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/listener/individualStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity IndividualStateChangeEvent + * + * Example of a client listener for receiving the notification IndividualStateChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToIndividualStateChangeEvent(data: IndividualStateChangeEvent): __Observable { + return this.listenToIndividualStateChangeEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity OrganizationAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification OrganizationAttributeValueChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToOrganizationAttributeValueChangeEventResponse(data: OrganizationAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/listener/organizationAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity OrganizationAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification OrganizationAttributeValueChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToOrganizationAttributeValueChangeEvent(data: OrganizationAttributeValueChangeEvent): __Observable { + return this.listenToOrganizationAttributeValueChangeEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity OrganizationCreateEvent + * + * Example of a client listener for receiving the notification OrganizationCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToOrganizationCreateEventResponse(data: OrganizationCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/listener/organizationCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity OrganizationCreateEvent + * + * Example of a client listener for receiving the notification OrganizationCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToOrganizationCreateEvent(data: OrganizationCreateEvent): __Observable { + return this.listenToOrganizationCreateEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity OrganizationDeleteEvent + * + * Example of a client listener for receiving the notification OrganizationDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToOrganizationDeleteEventResponse(data: OrganizationDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/listener/organizationDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity OrganizationDeleteEvent + * + * Example of a client listener for receiving the notification OrganizationDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToOrganizationDeleteEvent(data: OrganizationDeleteEvent): __Observable { + return this.listenToOrganizationDeleteEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity OrganizationStateChangeEvent + * + * Example of a client listener for receiving the notification OrganizationStateChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToOrganizationStateChangeEventResponse(data: OrganizationStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/listener/organizationStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity OrganizationStateChangeEvent + * + * Example of a client listener for receiving the notification OrganizationStateChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToOrganizationStateChangeEvent(data: OrganizationStateChangeEvent): __Observable { + return this.listenToOrganizationStateChangeEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/partyManagement/services/organization.service.ts b/src/app/openApis/partyManagement/services/organization.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..d7e42d93068d0aa3d4e0e3683f4320574647a604 --- /dev/null +++ b/src/app/openApis/partyManagement/services/organization.service.ts @@ -0,0 +1,333 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Organization } from '../models/organization'; +import { OrganizationCreate } from '../models/organization-create'; +import { OrganizationUpdate } from '../models/organization-update'; +@Injectable({ + providedIn: 'root', +}) +class OrganizationService extends __BaseService { + static readonly listOrganizationPath = '/party/v4/organization'; + static readonly createOrganizationPath = '/party/v4/organization'; + static readonly retrieveOrganizationPath = '/party/v4/organization/{id}'; + static readonly deleteOrganizationPath = '/party/v4/organization/{id}'; + static readonly patchOrganizationPath = '/party/v4/organization/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find Organization objects + * + * This operation list or find Organization entities + * @param params The `OrganizationService.ListOrganizationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listOrganizationResponse(params: OrganizationService.ListOrganizationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/party/v4/organization`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find Organization objects + * + * This operation list or find Organization entities + * @param params The `OrganizationService.ListOrganizationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listOrganization(params: OrganizationService.ListOrganizationParams): __Observable> { + return this.listOrganizationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a Organization + * + * This operation creates a Organization entity. + * @param organization The Organization to be created + * @return OK or Created + */ + createOrganizationResponse(organization: OrganizationCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = organization; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/party/v4/organization`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a Organization + * + * This operation creates a Organization entity. + * @param organization The Organization to be created + * @return OK or Created + */ + createOrganization(organization: OrganizationCreate): __Observable { + return this.createOrganizationResponse(organization).pipe( + __map(_r => _r.body as Organization | Organization) + ); + } + + /** + * Retrieves a Organization by ID + * + * This operation retrieves a Organization entity. Attribute selection is enabled for all first level attributes. + * @param params The `OrganizationService.RetrieveOrganizationParams` containing the following parameters: + * + * - `id`: Identifier of the Organization + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveOrganizationResponse(params: OrganizationService.RetrieveOrganizationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/party/v4/organization/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a Organization by ID + * + * This operation retrieves a Organization entity. Attribute selection is enabled for all first level attributes. + * @param params The `OrganizationService.RetrieveOrganizationParams` containing the following parameters: + * + * - `id`: Identifier of the Organization + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveOrganization(params: OrganizationService.RetrieveOrganizationParams): __Observable { + return this.retrieveOrganizationResponse(params).pipe( + __map(_r => _r.body as Organization) + ); + } + + /** + * Deletes a Organization + * + * This operation deletes a Organization entity. + * @param id Identifier of the Organization + */ + deleteOrganizationResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/party/v4/organization/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a Organization + * + * This operation deletes a Organization entity. + * @param id Identifier of the Organization + */ + deleteOrganization(id: string): __Observable { + return this.deleteOrganizationResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially a Organization + * + * This operation updates partially a Organization entity. + * @param params The `OrganizationService.PatchOrganizationParams` containing the following parameters: + * + * - `organization`: The Organization to be updated + * + * - `id`: Identifier of the Organization + * + * @return Updated + */ + patchOrganizationResponse(params: OrganizationService.PatchOrganizationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.organization; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/party/v4/organization/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a Organization + * + * This operation updates partially a Organization entity. + * @param params The `OrganizationService.PatchOrganizationParams` containing the following parameters: + * + * - `organization`: The Organization to be updated + * + * - `id`: Identifier of the Organization + * + * @return Updated + */ + patchOrganization(params: OrganizationService.PatchOrganizationParams): __Observable { + return this.patchOrganizationResponse(params).pipe( + __map(_r => _r.body as Organization) + ); + } +} + +module OrganizationService { + + /** + * Parameters for listOrganization + */ + export interface ListOrganizationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveOrganization + */ + export interface RetrieveOrganizationParams { + + /** + * Identifier of the Organization + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchOrganization + */ + export interface PatchOrganizationParams { + + /** + * The Organization to be updated + */ + organization: OrganizationUpdate; + + /** + * Identifier of the Organization + */ + id: string; + } +} + +export { OrganizationService } diff --git a/src/app/openApis/partyManagement/strict-http-response.ts b/src/app/openApis/partyManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/partyManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/portalRepositoryAPI/api-configuration.ts b/src/app/openApis/portalRepositoryAPI/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..224c509141f8784f132d9e580f7517785da1f21c --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/osapi'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/api.module.ts b/src/app/openApis/portalRepositoryAPI/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..8076bd05729c6fb10a3fbb07c9a8e7eb5abafa62 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/api.module.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { WebMvcLinksHandlerService } from './services/web-mvc-links-handler.service'; +import { OperationHandlerService } from './services/operation-handler.service'; +import { PortalRepositoryApiImplService } from './services/portal-repository-api-impl.service'; +import { ArtifactsApiControllerService } from './services/artifacts-api-controller.service'; +import { PortalRepositoryVfImageApiService } from './services/portal-repository-vf-image-api.service'; +import { BasicErrorControllerService } from './services/basic-error-controller.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + WebMvcLinksHandlerService, + OperationHandlerService, + PortalRepositoryApiImplService, + ArtifactsApiControllerService, + PortalRepositoryVfImageApiService, + BasicErrorControllerService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/portalRepositoryAPI/base-service.ts b/src/app/openApis/portalRepositoryAPI/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/portalRepositoryAPI/models.ts b/src/app/openApis/portalRepositoryAPI/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..a092e75c96a10fd20c96e77bfa4a7d138d86914f --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models.ts @@ -0,0 +1,30 @@ +export { ByteArrayResource } from './models/byte-array-resource'; +export { Category } from './models/category'; +export { ConstituentVxF } from './models/constituent-vx-f'; +export { DeploymentDescriptor } from './models/deployment-descriptor'; +export { DeploymentDescriptorVxFPlacement } from './models/deployment-descriptor-vx-fplacement'; +export { ExperimentMetadata } from './models/experiment-metadata'; +export { ExperimentOnBoardDescriptor } from './models/experiment-on-board-descriptor'; +export { File } from './models/file'; +export { Infrastructure } from './models/infrastructure'; +export { InputStream } from './models/input-stream'; +export { Link } from './models/link'; +export { MANOplatform } from './models/manoplatform'; +export { MANOprovider } from './models/manoprovider'; +export { ModelAndView } from './models/model-and-view'; +export { PortalProperty } from './models/portal-property'; +export { PortalUser } from './models/portal-user'; +export { Product } from './models/product'; +export { ProductExtensionItem } from './models/product-extension-item'; +export { RefVFImage } from './models/ref-vfimage'; +export { RefVxF } from './models/ref-vx-f'; +export { SubscribedResource } from './models/subscribed-resource'; +export { URI } from './models/uri'; +export { URL } from './models/url'; +export { UserSession } from './models/user-session'; +export { VFImage } from './models/vfimage'; +export { ValidationJob } from './models/validation-job'; +export { ValidationJobResult } from './models/validation-job-result'; +export { View } from './models/view'; +export { VxFMetadata } from './models/vx-fmetadata'; +export { VxFOnBoardedDescriptor } from './models/vx-fon-boarded-descriptor'; diff --git a/src/app/openApis/portalRepositoryAPI/models/byte-array-resource.ts b/src/app/openApis/portalRepositoryAPI/models/byte-array-resource.ts new file mode 100644 index 0000000000000000000000000000000000000000..4a3a2b1819fbbb653d80b6da322743f1062b808c --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/byte-array-resource.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { File } from './file'; +import { InputStream } from './input-stream'; +import { URI } from './uri'; +import { URL } from './url'; +export interface ByteArrayResource { + byteArray?: string; + description?: string; + file?: File; + filename?: string; + inputStream?: InputStream; + open?: boolean; + readable?: boolean; + uri?: URI; + url?: URL; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/category.ts b/src/app/openApis/portalRepositoryAPI/models/category.ts new file mode 100644 index 0000000000000000000000000000000000000000..9b4d82eda0fbf130f17a5d67a8f5f77aceb05593 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/category.ts @@ -0,0 +1,10 @@ +/* tslint:disable */ +import { Product } from './product'; +export interface Category { + appscount?: number; + id?: number; + name?: string; + products?: Array; + productsCount?: number; + vxFscount?: number; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/constituent-vx-f.ts b/src/app/openApis/portalRepositoryAPI/models/constituent-vx-f.ts new file mode 100644 index 0000000000000000000000000000000000000000..1eefbe02338892d4a12a92fe388aac78bb53e5dd --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/constituent-vx-f.ts @@ -0,0 +1,7 @@ +/* tslint:disable */ +import { VxFMetadata } from './vx-fmetadata'; +export interface ConstituentVxF { + membervnfIndex?: number; + vnfdidRef?: string; + vxfref?: VxFMetadata; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/deployment-descriptor-vx-fplacement.ts b/src/app/openApis/portalRepositoryAPI/models/deployment-descriptor-vx-fplacement.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f5dae55fb05ee1d9dccde3cf85a9d2af5173eed --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/deployment-descriptor-vx-fplacement.ts @@ -0,0 +1,7 @@ +/* tslint:disable */ +import { ConstituentVxF } from './constituent-vx-f'; +import { Infrastructure } from './infrastructure'; +export interface DeploymentDescriptorVxFPlacement { + constituentVxF?: ConstituentVxF; + infrastructure?: Infrastructure; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/deployment-descriptor.ts b/src/app/openApis/portalRepositoryAPI/models/deployment-descriptor.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c907254999ff283d78a93bbd839b76542cbd6e1 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/deployment-descriptor.ts @@ -0,0 +1,31 @@ +/* tslint:disable */ +import { ExperimentMetadata } from './experiment-metadata'; +import { Infrastructure } from './infrastructure'; +import { PortalUser } from './portal-user'; +import { DeploymentDescriptorVxFPlacement } from './deployment-descriptor-vx-fplacement'; +export interface DeploymentDescriptor { + instanceId?: string; + configStatus?: string; + dateCreated?: string; + description?: string; + detailedStatus?: string; + endDate?: string; + endReqDate?: string; + experiment?: ExperimentMetadata; + experimentFullDetails?: ExperimentMetadata; + feedback?: string; + id?: number; + infrastructureForAll?: Infrastructure; + constituentVnfrIps?: string; + mentor?: PortalUser; + name?: string; + operationalStatus?: string; + owner?: PortalUser; + scheduledEndDate?: string; + scheduledStartDate?: string; + startDate?: string; + startReqDate?: string; + status?: 'UNDER_REVIEW' | 'SCHEDULED' | 'REJECTED' | 'RUNNING' | 'TERMINATED' | 'INSTANTIATING' | 'FAILED' | 'TERMINATING' | 'TERMINATION_FAILED' | 'COMPLETED' | 'FAILED_OSM_REMOVED' | 'DELETION_FAILED'; + uuid?: string; + vxfPlacements?: Array; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/experiment-metadata.ts b/src/app/openApis/portalRepositoryAPI/models/experiment-metadata.ts new file mode 100644 index 0000000000000000000000000000000000000000..9363ce1796b3f288f30a2c1219f386f33fb3ac07 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/experiment-metadata.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +import { PortalUser } from './portal-user'; +import { Category } from './category'; +import { ExperimentOnBoardDescriptor } from './experiment-on-board-descriptor'; +import { ProductExtensionItem } from './product-extension-item'; +import { ConstituentVxF } from './constituent-vx-f'; +import { ValidationJob } from './validation-job'; +export interface ExperimentMetadata { + owner?: PortalUser; + categories?: Array; + dateCreated?: string; + dateUpdated?: string; + descriptor?: string; + descriptorHTML?: string; + experimentOnBoardDescriptors?: Array; + extensions?: Array; + iconsrc?: string; + id?: number; + longDescription?: string; + name?: string; + constituentVxF?: Array; + packageLocation?: string; + packagingFormat?: 'OSMvFIVE' | 'OSMvFSIX'; + published?: boolean; + screenshots?: string; + shortDescription?: string; + termsOfUse?: string; + uuid?: string; + valid?: boolean; + validationJobs?: Array; + validationStatus?: 'NOT_STARTED' | 'UNDER_REVIEW' | 'COMPLETED'; + vendor?: string; + version?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/experiment-on-board-descriptor.ts b/src/app/openApis/portalRepositoryAPI/models/experiment-on-board-descriptor.ts new file mode 100644 index 0000000000000000000000000000000000000000..e25bbb9b0251b83c8cb4f1574f7f704f655233ab --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/experiment-on-board-descriptor.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { ExperimentMetadata } from './experiment-metadata'; +import { MANOprovider } from './manoprovider'; +export interface ExperimentOnBoardDescriptor { + id?: number; + deployId?: string; + experimentMANOProviderID?: string; + experimentid?: number; + feedbackMessage?: string; + experiment?: ExperimentMetadata; + lastOnboarding?: string; + obMANOprovider?: MANOprovider; + onBoardingStatus?: 'UNKNOWN' | 'FAILED' | 'ONBOARDED' | 'OFFBOARDED' | 'OFFBOARDING' | 'ONBOARDING'; + uuid?: string; + vxfMANOProviderID?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/file.ts b/src/app/openApis/portalRepositoryAPI/models/file.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4e7ad2a9cd76b00d02aa87ea3d1550546ed2f63 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/file.ts @@ -0,0 +1,18 @@ +/* tslint:disable */ +export interface File { + freeSpace?: number; + absolute?: boolean; + absolutePath?: string; + canonicalFile?: File; + canonicalPath?: string; + directory?: boolean; + file?: boolean; + absoluteFile?: File; + hidden?: boolean; + name?: string; + parent?: string; + parentFile?: File; + path?: string; + totalSpace?: number; + usableSpace?: number; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/infrastructure.ts b/src/app/openApis/portalRepositoryAPI/models/infrastructure.ts new file mode 100644 index 0000000000000000000000000000000000000000..65be642243eb58f09cda7cbf9bdf567db5999451 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/infrastructure.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { RefVFImage } from './ref-vfimage'; +import { VFImage } from './vfimage'; +export interface Infrastructure { + datacentername?: string; + email?: string; + id?: number; + name?: string; + organization?: string; + refSupportedImages?: Array; + supportedImages?: Array; + vimid?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/input-stream.ts b/src/app/openApis/portalRepositoryAPI/models/input-stream.ts new file mode 100644 index 0000000000000000000000000000000000000000..094fd1ed3199a39fa421105fd60c2c30b0eac5b3 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/input-stream.ts @@ -0,0 +1,3 @@ +/* tslint:disable */ +export interface InputStream { +} diff --git a/src/app/openApis/portalRepositoryAPI/models/link.ts b/src/app/openApis/portalRepositoryAPI/models/link.ts new file mode 100644 index 0000000000000000000000000000000000000000..76ef4c6daa3620854da52e43e7527cedfd22deb2 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/link.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Link { + href?: string; + templated?: boolean; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/manoplatform.ts b/src/app/openApis/portalRepositoryAPI/models/manoplatform.ts new file mode 100644 index 0000000000000000000000000000000000000000..a86ef4cc40758d1ce12e68a813c698f380d57502 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/manoplatform.ts @@ -0,0 +1,7 @@ +/* tslint:disable */ +export interface MANOplatform { + description?: string; + id?: number; + name?: string; + version?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/manoprovider.ts b/src/app/openApis/portalRepositoryAPI/models/manoprovider.ts new file mode 100644 index 0000000000000000000000000000000000000000..7918a1863fad6d37bc917882b91e3f1b0093948f --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/manoprovider.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { MANOplatform } from './manoplatform'; +export interface MANOprovider { + apiEndpoint?: string; + authorizationBasicHeader?: string; + description?: string; + enabledForONBOARDING?: boolean; + id?: number; + name?: string; + password?: string; + supportedMANOplatform?: MANOplatform; + username?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/model-and-view.ts b/src/app/openApis/portalRepositoryAPI/models/model-and-view.ts new file mode 100644 index 0000000000000000000000000000000000000000..a44a070a05376c338995622767b996fa71aa6517 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/model-and-view.ts @@ -0,0 +1,11 @@ +/* tslint:disable */ +import { View } from './view'; +export interface ModelAndView { + empty?: boolean; + model?: {}; + modelMap?: {[key: string]: {}}; + reference?: boolean; + status?: '100 CONTINUE' | '101 SWITCHING_PROTOCOLS' | '102 PROCESSING' | '103 CHECKPOINT' | '200 OK' | '201 CREATED' | '202 ACCEPTED' | '203 NON_AUTHORITATIVE_INFORMATION' | '204 NO_CONTENT' | '205 RESET_CONTENT' | '206 PARTIAL_CONTENT' | '207 MULTI_STATUS' | '208 ALREADY_REPORTED' | '226 IM_USED' | '300 MULTIPLE_CHOICES' | '301 MOVED_PERMANENTLY' | '302 FOUND' | '302 MOVED_TEMPORARILY' | '303 SEE_OTHER' | '304 NOT_MODIFIED' | '305 USE_PROXY' | '307 TEMPORARY_REDIRECT' | '308 PERMANENT_REDIRECT' | '400 BAD_REQUEST' | '401 UNAUTHORIZED' | '402 PAYMENT_REQUIRED' | '403 FORBIDDEN' | '404 NOT_FOUND' | '405 METHOD_NOT_ALLOWED' | '406 NOT_ACCEPTABLE' | '407 PROXY_AUTHENTICATION_REQUIRED' | '408 REQUEST_TIMEOUT' | '409 CONFLICT' | '410 GONE' | '411 LENGTH_REQUIRED' | '412 PRECONDITION_FAILED' | '413 PAYLOAD_TOO_LARGE' | '413 REQUEST_ENTITY_TOO_LARGE' | '414 URI_TOO_LONG' | '414 REQUEST_URI_TOO_LONG' | '415 UNSUPPORTED_MEDIA_TYPE' | '416 REQUESTED_RANGE_NOT_SATISFIABLE' | '417 EXPECTATION_FAILED' | '418 I_AM_A_TEAPOT' | '419 INSUFFICIENT_SPACE_ON_RESOURCE' | '420 METHOD_FAILURE' | '421 DESTINATION_LOCKED' | '422 UNPROCESSABLE_ENTITY' | '423 LOCKED' | '424 FAILED_DEPENDENCY' | '426 UPGRADE_REQUIRED' | '428 PRECONDITION_REQUIRED' | '429 TOO_MANY_REQUESTS' | '431 REQUEST_HEADER_FIELDS_TOO_LARGE' | '451 UNAVAILABLE_FOR_LEGAL_REASONS' | '500 INTERNAL_SERVER_ERROR' | '501 NOT_IMPLEMENTED' | '502 BAD_GATEWAY' | '503 SERVICE_UNAVAILABLE' | '504 GATEWAY_TIMEOUT' | '505 HTTP_VERSION_NOT_SUPPORTED' | '506 VARIANT_ALSO_NEGOTIATES' | '507 INSUFFICIENT_STORAGE' | '508 LOOP_DETECTED' | '509 BANDWIDTH_LIMIT_EXCEEDED' | '510 NOT_EXTENDED' | '511 NETWORK_AUTHENTICATION_REQUIRED'; + view?: View; + viewName?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/portal-property.ts b/src/app/openApis/portalRepositoryAPI/models/portal-property.ts new file mode 100644 index 0000000000000000000000000000000000000000..21ec009b938d05dfb891bb04f7200842bc0a03e9 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/portal-property.ts @@ -0,0 +1,6 @@ +/* tslint:disable */ +export interface PortalProperty { + id?: number; + name?: string; + value?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/portal-user.ts b/src/app/openApis/portalRepositoryAPI/models/portal-user.ts new file mode 100644 index 0000000000000000000000000000000000000000..66b9c82c3ec0842c1f96a463bbefd7b6d1f883b4 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/portal-user.ts @@ -0,0 +1,23 @@ +/* tslint:disable */ +import { DeploymentDescriptor } from './deployment-descriptor'; +import { Product } from './product'; +import { SubscribedResource } from './subscribed-resource'; +import { VFImage } from './vfimage'; +export interface PortalUser { + organization?: string; + active?: boolean; + createdAt?: string; + currentSessionID?: string; + deployments?: Array; + email?: string; + id?: number; + name?: string; + apikey?: string; + password?: string; + passwordUnencrypted?: string; + products?: Array; + roles?: Array<'ADMIN' | 'EXPERIMENTER' | 'NFV_DEVELOPER' | 'TESTBED_PROVIDER' | 'MENTOR'>; + subscribedResources?: Array; + username?: string; + vfimages?: Array; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/product-extension-item.ts b/src/app/openApis/portalRepositoryAPI/models/product-extension-item.ts new file mode 100644 index 0000000000000000000000000000000000000000..2cb0d2b492e61b5be1f71047cc264ed187f8df8b --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/product-extension-item.ts @@ -0,0 +1,6 @@ +/* tslint:disable */ +export interface ProductExtensionItem { + id?: number; + name?: string; + value?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/product.ts b/src/app/openApis/portalRepositoryAPI/models/product.ts new file mode 100644 index 0000000000000000000000000000000000000000..cabd2aaa803e4861fcd3c8907cb51526149c33d2 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/product.ts @@ -0,0 +1,27 @@ +/* tslint:disable */ +import { PortalUser } from './portal-user'; +import { Category } from './category'; +import { ProductExtensionItem } from './product-extension-item'; +import { ValidationJob } from './validation-job'; +export interface Product { + owner?: PortalUser; + categories?: Array; + dateUpdated?: string; + descriptor?: string; + descriptorHTML?: string; + extensions?: Array; + iconsrc?: string; + id?: number; + longDescription?: string; + name?: string; + dateCreated?: string; + packageLocation?: string; + published?: boolean; + screenshots?: string; + shortDescription?: string; + termsOfUse?: string; + uuid?: string; + validationJobs?: Array; + vendor?: string; + version?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/ref-vfimage.ts b/src/app/openApis/portalRepositoryAPI/models/ref-vfimage.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f9a855d22b10fcf21be36abfa55a103e6ca540b --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/ref-vfimage.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface RefVFImage { + id?: number; + name?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/ref-vx-f.ts b/src/app/openApis/portalRepositoryAPI/models/ref-vx-f.ts new file mode 100644 index 0000000000000000000000000000000000000000..8809f23067e5c059e0429b47dffe3acc22cb31b5 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/ref-vx-f.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface RefVxF { + id?: number; + name?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/subscribed-resource.ts b/src/app/openApis/portalRepositoryAPI/models/subscribed-resource.ts new file mode 100644 index 0000000000000000000000000000000000000000..feb03fc59abb543ccc5c6d2bf07148f54174f680 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/subscribed-resource.ts @@ -0,0 +1,10 @@ +/* tslint:disable */ +import { PortalUser } from './portal-user'; +export interface SubscribedResource { + active?: boolean; + id?: number; + lastUpdate?: string; + owner?: PortalUser; + url?: string; + uuid?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/uri.ts b/src/app/openApis/portalRepositoryAPI/models/uri.ts new file mode 100644 index 0000000000000000000000000000000000000000..d96588d44bfda85a05f87b9d4bbc27afd8a433f1 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/uri.ts @@ -0,0 +1,20 @@ +/* tslint:disable */ +export interface URI { + rawAuthority?: string; + absolute?: boolean; + fragment?: string; + host?: string; + opaque?: boolean; + path?: string; + port?: number; + query?: string; + authority?: string; + rawFragment?: string; + rawPath?: string; + rawQuery?: string; + rawSchemeSpecificPart?: string; + rawUserInfo?: string; + scheme?: string; + schemeSpecificPart?: string; + userInfo?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/url.ts b/src/app/openApis/portalRepositoryAPI/models/url.ts new file mode 100644 index 0000000000000000000000000000000000000000..921c101579e58615a03e4a3efe0d60fa3d94a306 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/url.ts @@ -0,0 +1,14 @@ +/* tslint:disable */ +export interface URL { + path?: string; + authority?: string; + defaultPort?: number; + file?: string; + host?: string; + content?: {}; + port?: number; + protocol?: string; + query?: string; + ref?: string; + userInfo?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/user-session.ts b/src/app/openApis/portalRepositoryAPI/models/user-session.ts new file mode 100644 index 0000000000000000000000000000000000000000..adde36c89a2d30faf0fd0fbeb9c038ca2dfd4736 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/user-session.ts @@ -0,0 +1,7 @@ +/* tslint:disable */ +import { PortalUser } from './portal-user'; +export interface UserSession { + password?: string; + portalUser?: PortalUser; + username?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/validation-job-result.ts b/src/app/openApis/portalRepositoryAPI/models/validation-job-result.ts new file mode 100644 index 0000000000000000000000000000000000000000..11b5f82b5ed07372a741295e66c12bbcf0069ce4 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/validation-job-result.ts @@ -0,0 +1,7 @@ +/* tslint:disable */ +export interface ValidationJobResult { + build_id?: number; + jenkins_output_log?: string; + validation_status?: boolean; + vnfd_id?: number; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/validation-job.ts b/src/app/openApis/portalRepositoryAPI/models/validation-job.ts new file mode 100644 index 0000000000000000000000000000000000000000..7aa227187d700fbc85f33fe815bc184e4ffe9bc2 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/validation-job.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +export interface ValidationJob { + dateCreated?: string; + id?: number; + jobid?: string; + outputLog?: string; + validationStatus?: boolean; + vxfid?: number; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/vfimage.ts b/src/app/openApis/portalRepositoryAPI/models/vfimage.ts new file mode 100644 index 0000000000000000000000000000000000000000..fac1a33cc47f17901ba70d1b5ae76337b543784c --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/vfimage.ts @@ -0,0 +1,21 @@ +/* tslint:disable */ +import { Infrastructure } from './infrastructure'; +import { PortalUser } from './portal-user'; +import { RefVxF } from './ref-vx-f'; +import { VxFMetadata } from './vx-fmetadata'; +export interface VFImage { + publicURL?: string; + dateCreated?: string; + deployedInfrastructures?: Array; + id?: number; + name?: string; + owner?: PortalUser; + packageLocation?: string; + dateUpdated?: string; + published?: boolean; + refVxFs?: Array; + shortDescription?: string; + termsOfUse?: string; + usedByVxFs?: Array; + uuid?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/view.ts b/src/app/openApis/portalRepositoryAPI/models/view.ts new file mode 100644 index 0000000000000000000000000000000000000000..050ebbc9b74aca611fee8f55ee0422b14d346509 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/view.ts @@ -0,0 +1,4 @@ +/* tslint:disable */ +export interface View { + contentType?: string; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/vx-fmetadata.ts b/src/app/openApis/portalRepositoryAPI/models/vx-fmetadata.ts new file mode 100644 index 0000000000000000000000000000000000000000..7715c086b61f9ee744cfb9b357549954520e3c21 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/vx-fmetadata.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +import { Category } from './category'; +import { ProductExtensionItem } from './product-extension-item'; +import { PortalUser } from './portal-user'; +import { MANOplatform } from './manoplatform'; +import { ValidationJob } from './validation-job'; +import { VFImage } from './vfimage'; +import { VxFOnBoardedDescriptor } from './vx-fon-boarded-descriptor'; +export interface VxFMetadata { + packageLocation?: string; + categories?: Array; + certifiedBy?: string; + dateCreated?: string; + dateUpdated?: string; + descriptor?: string; + descriptorHTML?: string; + extensions?: Array; + iconsrc?: string; + id?: number; + longDescription?: string; + name?: string; + owner?: PortalUser; + certified?: boolean; + packagingFormat?: 'OSMvFIVE' | 'OSMvFSIX'; + published?: boolean; + screenshots?: string; + shortDescription?: string; + supportedMANOPlatforms?: Array; + termsOfUse?: string; + uuid?: string; + validationJobs?: Array; + validationStatus?: 'NOT_STARTED' | 'UNDER_REVIEW' | 'COMPLETED'; + vendor?: string; + version?: string; + vfimagesVDU?: Array; + vxfOnBoardedDescriptors?: Array; +} diff --git a/src/app/openApis/portalRepositoryAPI/models/vx-fon-boarded-descriptor.ts b/src/app/openApis/portalRepositoryAPI/models/vx-fon-boarded-descriptor.ts new file mode 100644 index 0000000000000000000000000000000000000000..2bc0b28912c844d3c7472610d1d15f545816e012 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/models/vx-fon-boarded-descriptor.ts @@ -0,0 +1,15 @@ +/* tslint:disable */ +import { MANOprovider } from './manoprovider'; +import { VxFMetadata } from './vx-fmetadata'; +export interface VxFOnBoardedDescriptor { + deployId?: string; + feedbackMessage?: string; + id?: number; + lastOnboarding?: string; + obMANOprovider?: MANOprovider; + onBoardingStatus?: 'UNKNOWN' | 'FAILED' | 'ONBOARDED' | 'OFFBOARDED' | 'OFFBOARDING' | 'ONBOARDING'; + uuid?: string; + vxf?: VxFMetadata; + vxfMANOProviderID?: string; + vxfid?: number; +} diff --git a/src/app/openApis/portalRepositoryAPI/services.ts b/src/app/openApis/portalRepositoryAPI/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..2b014539ddc6eca7ef7c8f48f690c04c4a817e7c --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/services.ts @@ -0,0 +1,6 @@ +export { WebMvcLinksHandlerService } from './services/web-mvc-links-handler.service'; +export { OperationHandlerService } from './services/operation-handler.service'; +export { PortalRepositoryApiImplService } from './services/portal-repository-api-impl.service'; +export { ArtifactsApiControllerService } from './services/artifacts-api-controller.service'; +export { PortalRepositoryVfImageApiService } from './services/portal-repository-vf-image-api.service'; +export { BasicErrorControllerService } from './services/basic-error-controller.service'; diff --git a/src/app/openApis/portalRepositoryAPI/services/artifacts-api-controller.service.ts b/src/app/openApis/portalRepositoryAPI/services/artifacts-api-controller.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..a980adaa0153d01afc94b8d8d30e7e880f9923ad --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/services/artifacts-api-controller.service.ts @@ -0,0 +1,3205 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { DeploymentDescriptor } from '../models/deployment-descriptor'; +import { ExperimentMetadata } from '../models/experiment-metadata'; +import { ExperimentOnBoardDescriptor } from '../models/experiment-on-board-descriptor'; +import { Infrastructure } from '../models/infrastructure'; +import { MANOplatform } from '../models/manoplatform'; +import { MANOprovider } from '../models/manoprovider'; +import { PortalProperty } from '../models/portal-property'; +import { ValidationJobResult } from '../models/validation-job-result'; +import { VxFMetadata } from '../models/vx-fmetadata'; +import { VxFOnBoardedDescriptor } from '../models/vx-fon-boarded-descriptor'; +import { ByteArrayResource } from '../models/byte-array-resource'; + +/** + * Artifacts API Controller + */ +@Injectable({ + providedIn: 'root', +}) +class ArtifactsApiControllerService extends __BaseService { + static readonly getAllDeploymentsUsingGETPath = '/admin/deployments'; + static readonly addDeploymentUsingPOSTPath = '/admin/deployments'; + static readonly getAllScheduledDeploymentsofUserUsingGETPath = '/admin/deployments/scheduled'; + static readonly getAllDeploymentsofUserUsingGETPath = '/admin/deployments/user'; + static readonly getDeploymentByIdUsingGETPath = '/admin/deployments/{id}'; + static readonly updateDeploymentUsingPUTPath = '/admin/deployments/{id}'; + static readonly deleteDeploymentUsingDELETEPath = '/admin/deployments/{id}'; + static readonly getExperimentOnBoardDescriptorsUsingGETPath = '/admin/experimentobds'; + static readonly addExperimentOnBoardDescriptorUsingPOSTPath = '/admin/experimentobds/'; + static readonly getExperimentOnBoardDescriptorByIdUsingGETPath = '/admin/experimentobds/{mpid}'; + static readonly updateExperimentOnBoardDescriptorUsingPUTPath = '/admin/experimentobds/{mpid}'; + static readonly deleteExperimentOnBoardDescriptorUsingDELETEPath = '/admin/experimentobds/{mpid}'; + static readonly offBoardExperimentDescriptorUsingPUTPath = '/admin/experimentobds/{mpid}/offboard'; + static readonly onExperimentBoardDescriptorUsingPUTPath = '/admin/experimentobds/{mpid}/onboard'; + static readonly getExperimentOnBoardDescriptorByIdCheckMANOProviderUsingGETPath = '/admin/experimentobds/{mpid}/status'; + static readonly getAppsUsingGETPath = '/admin/experiments'; + static readonly addExperimentMetadataUsingPOSTPath = '/admin/experiments'; + static readonly getAllDeployableExperimentsUsingGETPath = '/admin/experiments/deployable'; + static readonly updateExperimentMetadataUsingPUTPath = '/admin/experiments/{aid}'; + static readonly getAdminExperimentMetadataByIDUsingGETPath = '/admin/experiments/{appid}'; + static readonly deleteExperimentUsingDELETEPath = '/admin/experiments/{appid}'; + static readonly getAdminInfrastructuresUsingGETPath = '/admin/infrastructures'; + static readonly addInfrastructureUsingPOSTPath = '/admin/infrastructures'; + static readonly getInfrastructureByIdUsingGETPath = '/admin/infrastructures/{infraid}'; + static readonly updateInfrastructureUsingPUTPath = '/admin/infrastructures/{infraid}'; + static readonly deleteInfrastructureUsingDELETEPath = '/admin/infrastructures/{infraid}'; + static readonly addImageToInfrastructureUsingPOSTPath = '/admin/infrastructures/{infraid}/images/{vfimageid}'; + static readonly getAdminMANOplatformsUsingGETPath = '/admin/manoplatforms'; + static readonly addMANOplatformUsingPOSTPath = '/admin/manoplatforms'; + static readonly getAdminMANOplatformByIdUsingGETPath = '/admin/manoplatforms/{mpid}'; + static readonly updateMANOplatformUsingPUTPath = '/admin/manoplatforms/{mpid}'; + static readonly deleteMANOplatformUsingDELETEPath = '/admin/manoplatforms/{mpid}'; + static readonly getOSMNSDMetadataUsingGETPath = '/admin/manoprovider/{mpid}/nsds'; + static readonly getOSMNSDMetadataByKOSMMANOIDUsingGETPath = '/admin/manoprovider/{mpid}/nsds/{nsdid}'; + static readonly getOSMVNFMetadataUsingGETPath = '/admin/manoprovider/{mpid}/vnfds'; + static readonly getAdminMANOprovidersUsingGETPath = '/admin/manoproviders'; + static readonly addMANOproviderUsingPOSTPath = '/admin/manoproviders'; + static readonly getAdminMANOproviderByIdUsingGETPath = '/admin/manoproviders/{mpid}'; + static readonly updateMANOproviderUsingPUTPath = '/admin/manoproviders/{mpid}'; + static readonly deleteMANOproviderUsingDELETEPath = '/admin/manoproviders/{mpid}'; + static readonly getPropertiesUsingGETPath = '/admin/properties'; + static readonly getPropertyByIdUsingGETPath = '/admin/properties/{propid}'; + static readonly updatePropertyUsingPUTPath = '/admin/properties/{propid}'; + static readonly updateUvalidationjobUsingPUTPath = '/admin/validationjobs/{vxf_id}'; + static readonly getVxFOnBoardedDescriptorsUsingGETPath = '/admin/vxfobds'; + static readonly addVxFOnBoardedDescriptorUsingPOSTPath = '/admin/vxfobds/'; + static readonly getVxFOnBoardedDescriptorByIdUsingGETPath = '/admin/vxfobds/{mpid}'; + static readonly updateVxFOnBoardedDescriptorUsingPUTPath = '/admin/vxfobds/{mpid}'; + static readonly deleteVxFOnBoardedDescriptorUsingDELETEPath = '/admin/vxfobds/{mpid}'; + static readonly offBoardDescriptorUsingPUTPath = '/admin/vxfobds/{mpid}/offboard'; + static readonly onBoardDescriptorUsingPUTPath = '/admin/vxfobds/{mpid}/onboard'; + static readonly getVxFOnBoardedDescriptorByIdCheckMANOProviderUsingGETPath = '/admin/vxfobds/{mpid}/status'; + static readonly getVxFsUsingGETPath = '/admin/vxfs'; + static readonly addVxFMetadataUsingPOSTPath = '/admin/vxfs'; + static readonly updateVxFMetadataUsingPUTPath = '/admin/vxfs/{bid}'; + static readonly getAdminVxFMetadataByIDUsingGETPath = '/admin/vxfs/{vxfid}'; + static readonly deleteVxFUsingDELETEPath = '/admin/vxfs/{vxfid}'; + static readonly getAllAppsUsingGETPath = '/experiments'; + static readonly getAppMetadataByUUIDUsingGETPath = '/experiments/uuid/{uuid}'; + static readonly getExperimentMetadataByIDUsingGETPath = '/experiments/{appid}'; + static readonly getEntityImageUsingGETPath = '/images/{uuid}/{imgfile}'; + static readonly getMANOplatformsUsingGETPath = '/manoplatforms'; + static readonly getMANOplatformByIdUsingGETPath = '/manoplatforms/{mpid}'; + static readonly getOSMVNFMetadataByKOSMMANOIDUsingGETPath = '/manoprovider/{mpid}/vnfds/{vxfid}'; + static readonly downloadVxFPackageUsingGETPath = '/packages/{uuid}/{vxffile}'; + static readonly getAllVxFsUsingGETPath = '/vxfs'; + static readonly getVxFMetadataByUUIDUsingGETPath = '/vxfs/uuid/{uuid}'; + static readonly getVxFMetadataByIDUsingGETPath = '/vxfs/{vxfid}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * @param status status + * @return OK + */ + getAllDeploymentsUsingGETResponse(status?: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (status != null) __params = __params.set('status', status.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/deployments`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param status status + * @return OK + */ + getAllDeploymentsUsingGET(status?: string): __Observable<{}> { + return this.getAllDeploymentsUsingGETResponse(status).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param deployment deployment + * @return OK + */ + addDeploymentUsingPOSTResponse(deployment: DeploymentDescriptor): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = deployment; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/deployments`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param deployment deployment + * @return OK + */ + addDeploymentUsingPOST(deployment: DeploymentDescriptor): __Observable<{}> { + return this.addDeploymentUsingPOSTResponse(deployment).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getAllScheduledDeploymentsofUserUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/deployments/scheduled`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getAllScheduledDeploymentsofUserUsingGET(): __Observable<{}> { + return this.getAllScheduledDeploymentsofUserUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param status status + * @return OK + */ + getAllDeploymentsofUserUsingGETResponse(status?: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (status != null) __params = __params.set('status', status.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/deployments/user`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param status status + * @return OK + */ + getAllDeploymentsofUserUsingGET(status?: string): __Observable<{}> { + return this.getAllDeploymentsofUserUsingGETResponse(status).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param id id + * @return OK + */ + getDeploymentByIdUsingGETResponse(id: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/deployments/${id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param id id + * @return OK + */ + getDeploymentByIdUsingGET(id: number): __Observable<{}> { + return this.getDeploymentByIdUsingGETResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateDeploymentUsingPUTParams` containing the following parameters: + * + * - `receivedDeployment`: receivedDeployment + * + * - `id`: id + * + * @return OK + */ + updateDeploymentUsingPUTResponse(params: ArtifactsApiControllerService.UpdateDeploymentUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.receivedDeployment; + + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/deployments/${params.id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateDeploymentUsingPUTParams` containing the following parameters: + * + * - `receivedDeployment`: receivedDeployment + * + * - `id`: id + * + * @return OK + */ + updateDeploymentUsingPUT(params: ArtifactsApiControllerService.UpdateDeploymentUsingPUTParams): __Observable<{}> { + return this.updateDeploymentUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param id id + * @return OK + */ + deleteDeploymentUsingDELETEResponse(id: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/deployments/${id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param id id + * @return OK + */ + deleteDeploymentUsingDELETE(id: number): __Observable<{}> { + return this.deleteDeploymentUsingDELETEResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getExperimentOnBoardDescriptorsUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/experimentobds`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getExperimentOnBoardDescriptorsUsingGET(): __Observable<{}> { + return this.getExperimentOnBoardDescriptorsUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param exp exp + * @return OK + */ + addExperimentOnBoardDescriptorUsingPOSTResponse(exp: ExperimentMetadata): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = exp; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/experimentobds/`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param exp exp + * @return OK + */ + addExperimentOnBoardDescriptorUsingPOST(exp: ExperimentMetadata): __Observable<{}> { + return this.addExperimentOnBoardDescriptorUsingPOSTResponse(exp).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + getExperimentOnBoardDescriptorByIdUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/experimentobds/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getExperimentOnBoardDescriptorByIdUsingGET(mpid: number): __Observable<{}> { + return this.getExperimentOnBoardDescriptorByIdUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateExperimentOnBoardDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + updateExperimentOnBoardDescriptorUsingPUTResponse(params: ArtifactsApiControllerService.UpdateExperimentOnBoardDescriptorUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.c; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/experimentobds/${params.mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateExperimentOnBoardDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + updateExperimentOnBoardDescriptorUsingPUT(params: ArtifactsApiControllerService.UpdateExperimentOnBoardDescriptorUsingPUTParams): __Observable<{}> { + return this.updateExperimentOnBoardDescriptorUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + deleteExperimentOnBoardDescriptorUsingDELETEResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/experimentobds/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + deleteExperimentOnBoardDescriptorUsingDELETE(mpid: number): __Observable<{}> { + return this.deleteExperimentOnBoardDescriptorUsingDELETEResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.OffBoardExperimentDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + offBoardExperimentDescriptorUsingPUTResponse(params: ArtifactsApiControllerService.OffBoardExperimentDescriptorUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.c; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/experimentobds/${params.mpid}/offboard`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.OffBoardExperimentDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + offBoardExperimentDescriptorUsingPUT(params: ArtifactsApiControllerService.OffBoardExperimentDescriptorUsingPUTParams): __Observable<{}> { + return this.offBoardExperimentDescriptorUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.OnExperimentBoardDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `experimentonboarddescriptor`: experimentonboarddescriptor + * + * @return OK + */ + onExperimentBoardDescriptorUsingPUTResponse(params: ArtifactsApiControllerService.OnExperimentBoardDescriptorUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.experimentonboarddescriptor; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/experimentobds/${params.mpid}/onboard`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.OnExperimentBoardDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `experimentonboarddescriptor`: experimentonboarddescriptor + * + * @return OK + */ + onExperimentBoardDescriptorUsingPUT(params: ArtifactsApiControllerService.OnExperimentBoardDescriptorUsingPUTParams): __Observable<{}> { + return this.onExperimentBoardDescriptorUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + getExperimentOnBoardDescriptorByIdCheckMANOProviderUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/experimentobds/${mpid}/status`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getExperimentOnBoardDescriptorByIdCheckMANOProviderUsingGET(mpid: number): __Observable<{}> { + return this.getExperimentOnBoardDescriptorByIdCheckMANOProviderUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param categoryid categoryid + * @return OK + */ + getAppsUsingGETResponse(categoryid?: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (categoryid != null) __params = __params.set('categoryid', categoryid.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/experiments`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param categoryid categoryid + * @return OK + */ + getAppsUsingGET(categoryid?: number): __Observable<{}> { + return this.getAppsUsingGETResponse(categoryid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.AddExperimentMetadataUsingPOSTParams` containing the following parameters: + * + * - `screenshots`: screenshots + * + * - `prodIcon`: prodIcon + * + * - `prodFile`: prodFile + * + * - `exprm`: exprm + * + * @return OK + */ + addExperimentMetadataUsingPOSTResponse(params: ArtifactsApiControllerService.AddExperimentMetadataUsingPOSTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let __formData = new FormData(); + __body = __formData; + (params.screenshots || []).forEach(val => {if (val != null) __formData.append('screenshots', val as string | Blob)}); + if (params.prodIcon != null) { __formData.append('prodIcon', params.prodIcon as string | Blob);} + if (params.prodFile != null) { __formData.append('prodFile', params.prodFile as string | Blob);} + __body = params.exprm; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/experiments`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.AddExperimentMetadataUsingPOSTParams` containing the following parameters: + * + * - `screenshots`: screenshots + * + * - `prodIcon`: prodIcon + * + * - `prodFile`: prodFile + * + * - `exprm`: exprm + * + * @return OK + */ + addExperimentMetadataUsingPOST(params: ArtifactsApiControllerService.AddExperimentMetadataUsingPOSTParams): __Observable<{}> { + return this.addExperimentMetadataUsingPOSTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getAllDeployableExperimentsUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/experiments/deployable`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getAllDeployableExperimentsUsingGET(): __Observable<{}> { + return this.getAllDeployableExperimentsUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateExperimentMetadataUsingPUTParams` containing the following parameters: + * + * - `aid`: aid + * + * - `screenshots`: screenshots + * + * - `prodIcon`: prodIcon + * + * - `prodFile`: prodFile + * + * - `exprm`: exprm + * + * @return OK + */ + updateExperimentMetadataUsingPUTResponse(params: ArtifactsApiControllerService.UpdateExperimentMetadataUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let __formData = new FormData(); + __body = __formData; + + (params.screenshots || []).forEach(val => {if (val != null) __formData.append('screenshots', val as string | Blob)}); + if (params.prodIcon != null) { __formData.append('prodIcon', params.prodIcon as string | Blob);} + if (params.prodFile != null) { __formData.append('prodFile', params.prodFile as string | Blob);} + __body = params.exprm; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/experiments/${params.aid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateExperimentMetadataUsingPUTParams` containing the following parameters: + * + * - `aid`: aid + * + * - `screenshots`: screenshots + * + * - `prodIcon`: prodIcon + * + * - `prodFile`: prodFile + * + * - `exprm`: exprm + * + * @return OK + */ + updateExperimentMetadataUsingPUT(params: ArtifactsApiControllerService.UpdateExperimentMetadataUsingPUTParams): __Observable<{}> { + return this.updateExperimentMetadataUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param appid appid + * @return OK + */ + getAdminExperimentMetadataByIDUsingGETResponse(appid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/experiments/${appid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param appid appid + * @return OK + */ + getAdminExperimentMetadataByIDUsingGET(appid: number): __Observable<{}> { + return this.getAdminExperimentMetadataByIDUsingGETResponse(appid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param appid appid + * @return OK + */ + deleteExperimentUsingDELETEResponse(appid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/experiments/${appid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param appid appid + * @return OK + */ + deleteExperimentUsingDELETE(appid: number): __Observable<{}> { + return this.deleteExperimentUsingDELETEResponse(appid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getAdminInfrastructuresUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/infrastructures`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getAdminInfrastructuresUsingGET(): __Observable<{}> { + return this.getAdminInfrastructuresUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param c c + * @return OK + */ + addInfrastructureUsingPOSTResponse(c: Infrastructure): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = c; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/infrastructures`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param c c + * @return OK + */ + addInfrastructureUsingPOST(c: Infrastructure): __Observable<{}> { + return this.addInfrastructureUsingPOSTResponse(c).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param infraid infraid + * @return OK + */ + getInfrastructureByIdUsingGETResponse(infraid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/infrastructures/${infraid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param infraid infraid + * @return OK + */ + getInfrastructureByIdUsingGET(infraid: number): __Observable<{}> { + return this.getInfrastructureByIdUsingGETResponse(infraid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateInfrastructureUsingPUTParams` containing the following parameters: + * + * - `infraid`: infraid + * + * - `c`: c + * + * @return OK + */ + updateInfrastructureUsingPUTResponse(params: ArtifactsApiControllerService.UpdateInfrastructureUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.c; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/infrastructures/${params.infraid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateInfrastructureUsingPUTParams` containing the following parameters: + * + * - `infraid`: infraid + * + * - `c`: c + * + * @return OK + */ + updateInfrastructureUsingPUT(params: ArtifactsApiControllerService.UpdateInfrastructureUsingPUTParams): __Observable<{}> { + return this.updateInfrastructureUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param infraid infraid + * @return OK + */ + deleteInfrastructureUsingDELETEResponse(infraid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/infrastructures/${infraid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param infraid infraid + * @return OK + */ + deleteInfrastructureUsingDELETE(infraid: number): __Observable<{}> { + return this.deleteInfrastructureUsingDELETEResponse(infraid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.AddImageToInfrastructureUsingPOSTParams` containing the following parameters: + * + * - `vfimageid`: vfimageid + * + * - `infraid`: infraid + * + * @return OK + */ + addImageToInfrastructureUsingPOSTResponse(params: ArtifactsApiControllerService.AddImageToInfrastructureUsingPOSTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/infrastructures/${params.infraid}/images/${params.vfimageid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.AddImageToInfrastructureUsingPOSTParams` containing the following parameters: + * + * - `vfimageid`: vfimageid + * + * - `infraid`: infraid + * + * @return OK + */ + addImageToInfrastructureUsingPOST(params: ArtifactsApiControllerService.AddImageToInfrastructureUsingPOSTParams): __Observable<{}> { + return this.addImageToInfrastructureUsingPOSTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getAdminMANOplatformsUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/manoplatforms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getAdminMANOplatformsUsingGET(): __Observable<{}> { + return this.getAdminMANOplatformsUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param c c + * @return OK + */ + addMANOplatformUsingPOSTResponse(c: MANOplatform): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = c; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/manoplatforms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param c c + * @return OK + */ + addMANOplatformUsingPOST(c: MANOplatform): __Observable<{}> { + return this.addMANOplatformUsingPOSTResponse(c).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + getAdminMANOplatformByIdUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/manoplatforms/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getAdminMANOplatformByIdUsingGET(mpid: number): __Observable<{}> { + return this.getAdminMANOplatformByIdUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateMANOplatformUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + updateMANOplatformUsingPUTResponse(params: ArtifactsApiControllerService.UpdateMANOplatformUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.c; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/manoplatforms/${params.mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateMANOplatformUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + updateMANOplatformUsingPUT(params: ArtifactsApiControllerService.UpdateMANOplatformUsingPUTParams): __Observable<{}> { + return this.updateMANOplatformUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + deleteMANOplatformUsingDELETEResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/manoplatforms/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + deleteMANOplatformUsingDELETE(mpid: number): __Observable<{}> { + return this.deleteMANOplatformUsingDELETEResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + getOSMNSDMetadataUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/manoprovider/${mpid}/nsds`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getOSMNSDMetadataUsingGET(mpid: number): __Observable<{}> { + return this.getOSMNSDMetadataUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.GetOSMNSDMetadataByKOSMMANOIDUsingGETParams` containing the following parameters: + * + * - `vxfid`: vxfid + * + * - `mpid`: mpid + * + * @return OK + */ + // getOSMNSDMetadataByKOSMMANOIDUsingGETResponse(params: ArtifactsApiControllerService.GetOSMNSDMetadataByKOSMMANOIDUsingGETParams): __Observable<__StrictHttpResponse<{}>> { + // let __params = this.newParams(); + // let __headers = new HttpHeaders(); + // let __body: any = null; + + + // let req = new HttpRequest( + // 'GET', + // this.rootUrl + `/admin/manoprovider/${params.mpid}/nsds/${params.nsdid}`, + // __body, + // { + // headers: __headers, + // params: __params, + // responseType: 'json' + // }); + + // return this.http.request(req).pipe( + // __filter(_r => _r instanceof HttpResponse), + // __map((_r) => { + // return _r as __StrictHttpResponse<{}>; + // }) + // ); + // } + // /** + // * @param params The `ArtifactsApiControllerService.GetOSMNSDMetadataByKOSMMANOIDUsingGETParams` containing the following parameters: + // * + // * - `vxfid`: vxfid + // * + // * - `mpid`: mpid + // * + // * @return OK + // */ + // getOSMNSDMetadataByKOSMMANOIDUsingGET(params: ArtifactsApiControllerService.GetOSMNSDMetadataByKOSMMANOIDUsingGETParams): __Observable<{}> { + // return this.getOSMNSDMetadataByKOSMMANOIDUsingGETResponse(params).pipe( + // __map(_r => _r.body as {}) + // ); + // } + + /** + * @param mpid mpid + * @return OK + */ + getOSMVNFMetadataUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/manoprovider/${mpid}/vnfds`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getOSMVNFMetadataUsingGET(mpid: number): __Observable<{}> { + return this.getOSMVNFMetadataUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getAdminMANOprovidersUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/manoproviders`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getAdminMANOprovidersUsingGET(): __Observable<{}> { + return this.getAdminMANOprovidersUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param c c + * @return OK + */ + addMANOproviderUsingPOSTResponse(c: MANOprovider): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = c; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/manoproviders`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param c c + * @return OK + */ + addMANOproviderUsingPOST(c: MANOprovider): __Observable<{}> { + return this.addMANOproviderUsingPOSTResponse(c).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + getAdminMANOproviderByIdUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/manoproviders/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getAdminMANOproviderByIdUsingGET(mpid: number): __Observable<{}> { + return this.getAdminMANOproviderByIdUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateMANOproviderUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + updateMANOproviderUsingPUTResponse(params: ArtifactsApiControllerService.UpdateMANOproviderUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.c; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/manoproviders/${params.mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateMANOproviderUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + updateMANOproviderUsingPUT(params: ArtifactsApiControllerService.UpdateMANOproviderUsingPUTParams): __Observable<{}> { + return this.updateMANOproviderUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + deleteMANOproviderUsingDELETEResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/manoproviders/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + deleteMANOproviderUsingDELETE(mpid: number): __Observable<{}> { + return this.deleteMANOproviderUsingDELETEResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getPropertiesUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/properties`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getPropertiesUsingGET(): __Observable<{}> { + return this.getPropertiesUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param propid propid + * @return OK + */ + getPropertyByIdUsingGETResponse(propid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/properties/${propid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param propid propid + * @return OK + */ + getPropertyByIdUsingGET(propid: number): __Observable<{}> { + return this.getPropertyByIdUsingGETResponse(propid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdatePropertyUsingPUTParams` containing the following parameters: + * + * - `propid`: propid + * + * - `p`: p + * + * @return OK + */ + updatePropertyUsingPUTResponse(params: ArtifactsApiControllerService.UpdatePropertyUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.p; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/properties/${params.propid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdatePropertyUsingPUTParams` containing the following parameters: + * + * - `propid`: propid + * + * - `p`: p + * + * @return OK + */ + updatePropertyUsingPUT(params: ArtifactsApiControllerService.UpdatePropertyUsingPUTParams): __Observable<{}> { + return this.updatePropertyUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateUvalidationjobUsingPUTParams` containing the following parameters: + * + * - `vxf_id`: vxf_id + * + * - `vresult`: vresult + * + * @return OK + */ + updateUvalidationjobUsingPUTResponse(params: ArtifactsApiControllerService.UpdateUvalidationjobUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.vresult; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/validationjobs/${params.vxfId}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateUvalidationjobUsingPUTParams` containing the following parameters: + * + * - `vxf_id`: vxf_id + * + * - `vresult`: vresult + * + * @return OK + */ + updateUvalidationjobUsingPUT(params: ArtifactsApiControllerService.UpdateUvalidationjobUsingPUTParams): __Observable<{}> { + return this.updateUvalidationjobUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getVxFOnBoardedDescriptorsUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/vxfobds`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getVxFOnBoardedDescriptorsUsingGET(): __Observable<{}> { + return this.getVxFOnBoardedDescriptorsUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param aVxF aVxF + * @return OK + */ + addVxFOnBoardedDescriptorUsingPOSTResponse(aVxF: VxFMetadata): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = aVxF; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/vxfobds/`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param aVxF aVxF + * @return OK + */ + addVxFOnBoardedDescriptorUsingPOST(aVxF: VxFMetadata): __Observable<{}> { + return this.addVxFOnBoardedDescriptorUsingPOSTResponse(aVxF).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + getVxFOnBoardedDescriptorByIdUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/vxfobds/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getVxFOnBoardedDescriptorByIdUsingGET(mpid: number): __Observable<{}> { + return this.getVxFOnBoardedDescriptorByIdUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateVxFOnBoardedDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + updateVxFOnBoardedDescriptorUsingPUTResponse(params: ArtifactsApiControllerService.UpdateVxFOnBoardedDescriptorUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.c; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/vxfobds/${params.mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateVxFOnBoardedDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `c`: c + * + * @return OK + */ + updateVxFOnBoardedDescriptorUsingPUT(params: ArtifactsApiControllerService.UpdateVxFOnBoardedDescriptorUsingPUTParams): __Observable<{}> { + return this.updateVxFOnBoardedDescriptorUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + deleteVxFOnBoardedDescriptorUsingDELETEResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/vxfobds/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + deleteVxFOnBoardedDescriptorUsingDELETE(mpid: number): __Observable<{}> { + return this.deleteVxFOnBoardedDescriptorUsingDELETEResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.OffBoardDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `clobd`: clobd + * + * @return OK + */ + offBoardDescriptorUsingPUTResponse(params: ArtifactsApiControllerService.OffBoardDescriptorUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.clobd; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/vxfobds/${params.mpid}/offboard`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.OffBoardDescriptorUsingPUTParams` containing the following parameters: + * + * - `mpid`: mpid + * + * - `clobd`: clobd + * + * @return OK + */ + offBoardDescriptorUsingPUT(params: ArtifactsApiControllerService.OffBoardDescriptorUsingPUTParams): __Observable<{}> { + return this.offBoardDescriptorUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.OnBoardDescriptorUsingPUTParams` containing the following parameters: + * + * - `vxfobd`: vxfobd + * + * - `mpid`: mpid + * + * @return OK + */ + onBoardDescriptorUsingPUTResponse(params: ArtifactsApiControllerService.OnBoardDescriptorUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.vxfobd; + + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/vxfobds/${params.mpid}/onboard`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.OnBoardDescriptorUsingPUTParams` containing the following parameters: + * + * - `vxfobd`: vxfobd + * + * - `mpid`: mpid + * + * @return OK + */ + onBoardDescriptorUsingPUT(params: ArtifactsApiControllerService.OnBoardDescriptorUsingPUTParams): __Observable<{}> { + return this.onBoardDescriptorUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + getVxFOnBoardedDescriptorByIdCheckMANOProviderUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/vxfobds/${mpid}/status`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getVxFOnBoardedDescriptorByIdCheckMANOProviderUsingGET(mpid: number): __Observable<{}> { + return this.getVxFOnBoardedDescriptorByIdCheckMANOProviderUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param categoryid categoryid + * @return OK + */ + getVxFsUsingGETResponse(categoryid?: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (categoryid != null) __params = __params.set('categoryid', categoryid.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/vxfs`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param categoryid categoryid + * @return OK + */ + getVxFsUsingGET(categoryid?: number): __Observable<{}> { + return this.getVxFsUsingGETResponse(categoryid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.AddVxFMetadataUsingPOSTParams` containing the following parameters: + * + * - `prodFile`: prodFile + * + * - `vxf`: vxf + * + * - `screenshots`: screenshots + * + * - `prodIcon`: prodIcon + * + * @return OK + */ + addVxFMetadataUsingPOSTResponse(params: ArtifactsApiControllerService.AddVxFMetadataUsingPOSTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let __formData = new FormData(); + __body = __formData; + if (params.prodFile != null) { __formData.append('prodFile', params.prodFile as string | Blob);} + __body = params.vxf; + (params.screenshots || []).forEach(val => {if (val != null) __formData.append('screenshots', val as string | Blob)}); + if (params.prodIcon != null) { __formData.append('prodIcon', params.prodIcon as string | Blob);} + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/vxfs`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.AddVxFMetadataUsingPOSTParams` containing the following parameters: + * + * - `prodFile`: prodFile + * + * - `vxf`: vxf + * + * - `screenshots`: screenshots + * + * - `prodIcon`: prodIcon + * + * @return OK + */ + addVxFMetadataUsingPOST(params: ArtifactsApiControllerService.AddVxFMetadataUsingPOSTParams): __Observable<{}> { + return this.addVxFMetadataUsingPOSTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.UpdateVxFMetadataUsingPUTParams` containing the following parameters: + * + * - `bid`: bid + * + * - `vxf`: vxf + * + * - `screenshots`: screenshots + * + * - `prodIcon`: prodIcon + * + * - `prodFile`: prodFile + * + * @return OK + */ + updateVxFMetadataUsingPUTResponse(params: ArtifactsApiControllerService.UpdateVxFMetadataUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let __formData = new FormData(); + __body = __formData; + + __body = params.vxf; + (params.screenshots || []).forEach(val => {if (val != null) __formData.append('screenshots', val as string | Blob)}); + if (params.prodIcon != null) { __formData.append('prodIcon', params.prodIcon as string | Blob);} + if (params.prodFile != null) { __formData.append('prodFile', params.prodFile as string | Blob);} + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/vxfs/${params.bid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.UpdateVxFMetadataUsingPUTParams` containing the following parameters: + * + * - `bid`: bid + * + * - `vxf`: vxf + * + * - `screenshots`: screenshots + * + * - `prodIcon`: prodIcon + * + * - `prodFile`: prodFile + * + * @return OK + */ + updateVxFMetadataUsingPUT(params: ArtifactsApiControllerService.UpdateVxFMetadataUsingPUTParams): __Observable<{}> { + return this.updateVxFMetadataUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param vxfid vxfid + * @return OK + */ + getAdminVxFMetadataByIDUsingGETResponse(vxfid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/vxfs/${vxfid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param vxfid vxfid + * @return OK + */ + getAdminVxFMetadataByIDUsingGET(vxfid: number): __Observable<{}> { + return this.getAdminVxFMetadataByIDUsingGETResponse(vxfid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param vxfid vxfid + * @return OK + */ + deleteVxFUsingDELETEResponse(vxfid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/vxfs/${vxfid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param vxfid vxfid + * @return OK + */ + deleteVxFUsingDELETE(vxfid: number): __Observable<{}> { + return this.deleteVxFUsingDELETEResponse(vxfid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param categoryid categoryid + * @return OK + */ + getAllAppsUsingGETResponse(categoryid?: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (categoryid != null) __params = __params.set('categoryid', categoryid.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/experiments`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param categoryid categoryid + * @return OK + */ + getAllAppsUsingGET(categoryid?: number): __Observable<{}> { + return this.getAllAppsUsingGETResponse(categoryid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param uuid uuid + * @return OK + */ + getAppMetadataByUUIDUsingGETResponse(uuid: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/experiments/uuid/${uuid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param uuid uuid + * @return OK + */ + getAppMetadataByUUIDUsingGET(uuid: string): __Observable<{}> { + return this.getAppMetadataByUUIDUsingGETResponse(uuid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param appid appid + * @return OK + */ + getExperimentMetadataByIDUsingGETResponse(appid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/experiments/${appid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param appid appid + * @return OK + */ + getExperimentMetadataByIDUsingGET(appid: number): __Observable<{}> { + return this.getExperimentMetadataByIDUsingGETResponse(appid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.GetEntityImageUsingGETParams` containing the following parameters: + * + * - `uuid`: uuid + * + * - `imgfile`: imgfile + * + * @return OK + */ + getEntityImageUsingGETResponse(params: ArtifactsApiControllerService.GetEntityImageUsingGETParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/images/${params.uuid}/${params.imgfile}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'text' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.GetEntityImageUsingGETParams` containing the following parameters: + * + * - `uuid`: uuid + * + * - `imgfile`: imgfile + * + * @return OK + */ + getEntityImageUsingGET(params: ArtifactsApiControllerService.GetEntityImageUsingGETParams): __Observable { + return this.getEntityImageUsingGETResponse(params).pipe( + __map(_r => _r.body as string) + ); + } + + /** + * @return OK + */ + getMANOplatformsUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/manoplatforms`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getMANOplatformsUsingGET(): __Observable<{}> { + return this.getMANOplatformsUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param mpid mpid + * @return OK + */ + getMANOplatformByIdUsingGETResponse(mpid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/manoplatforms/${mpid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param mpid mpid + * @return OK + */ + getMANOplatformByIdUsingGET(mpid: number): __Observable<{}> { + return this.getMANOplatformByIdUsingGETResponse(mpid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.GetOSMVNFMetadataByKOSMMANOIDUsingGETParams` containing the following parameters: + * + * - `vxfid`: vxfid + * + * - `mpid`: mpid + * + * @return OK + */ + getOSMVNFMetadataByKOSMMANOIDUsingGETResponse(params: ArtifactsApiControllerService.GetOSMVNFMetadataByKOSMMANOIDUsingGETParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/manoprovider/${params.mpid}/vnfds/${params.vxfid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.GetOSMVNFMetadataByKOSMMANOIDUsingGETParams` containing the following parameters: + * + * - `vxfid`: vxfid + * + * - `mpid`: mpid + * + * @return OK + */ + getOSMVNFMetadataByKOSMMANOIDUsingGET(params: ArtifactsApiControllerService.GetOSMVNFMetadataByKOSMMANOIDUsingGETParams): __Observable<{}> { + return this.getOSMVNFMetadataByKOSMMANOIDUsingGETResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `ArtifactsApiControllerService.DownloadVxFPackageUsingGETParams` containing the following parameters: + * + * - `vxffile`: vxffile + * + * - `uuid`: uuid + * + * @return OK + */ + downloadVxFPackageUsingGETResponse(params: ArtifactsApiControllerService.DownloadVxFPackageUsingGETParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/packages/${params.uuid}/${params.vxffile}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @param params The `ArtifactsApiControllerService.DownloadVxFPackageUsingGETParams` containing the following parameters: + * + * - `vxffile`: vxffile + * + * - `uuid`: uuid + * + * @return OK + */ + downloadVxFPackageUsingGET(params: ArtifactsApiControllerService.DownloadVxFPackageUsingGETParams): __Observable { + return this.downloadVxFPackageUsingGETResponse(params).pipe( + __map(_r => _r.body as ByteArrayResource) + ); + } + + /** + * @param categoryid categoryid + * @return OK + */ + getAllVxFsUsingGETResponse(categoryid?: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (categoryid != null) __params = __params.set('categoryid', categoryid.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/vxfs`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param categoryid categoryid + * @return OK + */ + getAllVxFsUsingGET(categoryid?: number): __Observable<{}> { + return this.getAllVxFsUsingGETResponse(categoryid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param uuid uuid + * @return OK + */ + getVxFMetadataByUUIDUsingGETResponse(uuid: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/vxfs/uuid/${uuid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param uuid uuid + * @return OK + */ + getVxFMetadataByUUIDUsingGET(uuid: string): __Observable<{}> { + return this.getVxFMetadataByUUIDUsingGETResponse(uuid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param vxfid vxfid + * @return OK + */ + getVxFMetadataByIDUsingGETResponse(vxfid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/vxfs/${vxfid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param vxfid vxfid + * @return OK + */ + getVxFMetadataByIDUsingGET(vxfid: number): __Observable<{}> { + return this.getVxFMetadataByIDUsingGETResponse(vxfid).pipe( + __map(_r => _r.body as {}) + ); + } +} + +module ArtifactsApiControllerService { + + /** + * Parameters for updateDeploymentUsingPUT + */ + export interface UpdateDeploymentUsingPUTParams { + + /** + * receivedDeployment + */ + receivedDeployment: DeploymentDescriptor; + + /** + * id + */ + id: number; + } + + /** + * Parameters for updateExperimentOnBoardDescriptorUsingPUT + */ + export interface UpdateExperimentOnBoardDescriptorUsingPUTParams { + + /** + * mpid + */ + mpid: number; + + /** + * c + */ + c: ExperimentOnBoardDescriptor; + } + + /** + * Parameters for offBoardExperimentDescriptorUsingPUT + */ + export interface OffBoardExperimentDescriptorUsingPUTParams { + + /** + * mpid + */ + mpid: number; + + /** + * c + */ + c: ExperimentOnBoardDescriptor; + } + + /** + * Parameters for onExperimentBoardDescriptorUsingPUT + */ + export interface OnExperimentBoardDescriptorUsingPUTParams { + + /** + * mpid + */ + mpid: number; + + /** + * experimentonboarddescriptor + */ + experimentonboarddescriptor: ExperimentOnBoardDescriptor; + } + + /** + * Parameters for addExperimentMetadataUsingPOST + */ + export interface AddExperimentMetadataUsingPOSTParams { + + /** + * screenshots + */ + screenshots?: Array; + + /** + * prodIcon + */ + prodIcon?: Blob; + + /** + * prodFile + */ + prodFile?: Blob; + + /** + * exprm + */ + exprm?: string; + } + + /** + * Parameters for updateExperimentMetadataUsingPUT + */ + export interface UpdateExperimentMetadataUsingPUTParams { + + /** + * aid + */ + aid: number; + + /** + * screenshots + */ + screenshots?: Array; + + /** + * prodIcon + */ + prodIcon?: Blob; + + /** + * prodFile + */ + prodFile?: Blob; + + /** + * exprm + */ + exprm?: string; + } + + /** + * Parameters for updateInfrastructureUsingPUT + */ + export interface UpdateInfrastructureUsingPUTParams { + + /** + * infraid + */ + infraid: number; + + /** + * c + */ + c: Infrastructure; + } + + /** + * Parameters for addImageToInfrastructureUsingPOST + */ + export interface AddImageToInfrastructureUsingPOSTParams { + + /** + * vfimageid + */ + vfimageid: number; + + /** + * infraid + */ + infraid: number; + } + + /** + * Parameters for updateMANOplatformUsingPUT + */ + export interface UpdateMANOplatformUsingPUTParams { + + /** + * mpid + */ + mpid: number; + + /** + * c + */ + c: MANOplatform; + } + + /** + * Parameters for getOSMNSDMetadataByKOSMMANOIDUsingGET + */ + export interface GetOSMNSDMetadataByKOSMMANOIDUsingGETParams { + + /** + * vxfid + */ + vxfid: string; + + /** + * mpid + */ + mpid: number; + } + + /** + * Parameters for updateMANOproviderUsingPUT + */ + export interface UpdateMANOproviderUsingPUTParams { + + /** + * mpid + */ + mpid: number; + + /** + * c + */ + c: MANOprovider; + } + + /** + * Parameters for updatePropertyUsingPUT + */ + export interface UpdatePropertyUsingPUTParams { + + /** + * propid + */ + propid: number; + + /** + * p + */ + p: PortalProperty; + } + + /** + * Parameters for updateUvalidationjobUsingPUT + */ + export interface UpdateUvalidationjobUsingPUTParams { + + /** + * vxf_id + */ + vxfId: number; + + /** + * vresult + */ + vresult: ValidationJobResult; + } + + /** + * Parameters for updateVxFOnBoardedDescriptorUsingPUT + */ + export interface UpdateVxFOnBoardedDescriptorUsingPUTParams { + + /** + * mpid + */ + mpid: number; + + /** + * c + */ + c: VxFOnBoardedDescriptor; + } + + /** + * Parameters for offBoardDescriptorUsingPUT + */ + export interface OffBoardDescriptorUsingPUTParams { + + /** + * mpid + */ + mpid: number; + + /** + * clobd + */ + clobd: VxFOnBoardedDescriptor; + } + + /** + * Parameters for onBoardDescriptorUsingPUT + */ + export interface OnBoardDescriptorUsingPUTParams { + + /** + * vxfobd + */ + vxfobd: VxFOnBoardedDescriptor; + + /** + * mpid + */ + mpid: number; + } + + /** + * Parameters for addVxFMetadataUsingPOST + */ + export interface AddVxFMetadataUsingPOSTParams { + + /** + * prodFile + */ + prodFile: Blob; + + /** + * vxf + */ + vxf?: string; + + /** + * screenshots + */ + screenshots?: Array; + + /** + * prodIcon + */ + prodIcon?: Blob; + } + + /** + * Parameters for updateVxFMetadataUsingPUT + */ + export interface UpdateVxFMetadataUsingPUTParams { + + /** + * bid + */ + bid: number; + + /** + * vxf + */ + vxf?: string; + + /** + * screenshots + */ + screenshots?: Array; + + /** + * prodIcon + */ + prodIcon?: Blob; + + /** + * prodFile + */ + prodFile?: Blob; + } + + /** + * Parameters for getEntityImageUsingGET + */ + export interface GetEntityImageUsingGETParams { + + /** + * uuid + */ + uuid: string; + + /** + * imgfile + */ + imgfile: string; + } + + /** + * Parameters for getOSMVNFMetadataByKOSMMANOIDUsingGET + */ + export interface GetOSMVNFMetadataByKOSMMANOIDUsingGETParams { + + /** + * vxfid + */ + vxfid: string; + + /** + * mpid + */ + mpid: number; + } + + /** + * Parameters for downloadVxFPackageUsingGET + */ + export interface DownloadVxFPackageUsingGETParams { + + /** + * vxffile + */ + vxffile: string; + + /** + * uuid + */ + uuid: string; + } +} + +export { ArtifactsApiControllerService } diff --git a/src/app/openApis/portalRepositoryAPI/services/basic-error-controller.service.ts b/src/app/openApis/portalRepositoryAPI/services/basic-error-controller.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4e6ed023136e63dcc452e56214934a1c783716e --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/services/basic-error-controller.service.ts @@ -0,0 +1,269 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ModelAndView } from '../models/model-and-view'; + +/** + * Basic Error Controller + */ +@Injectable({ + providedIn: 'root', +}) +class BasicErrorControllerService extends __BaseService { + static readonly errorHtmlUsingGETPath = '/error'; + static readonly errorHtmlUsingHEADPath = '/error'; + static readonly errorHtmlUsingPOSTPath = '/error'; + static readonly errorHtmlUsingPUTPath = '/error'; + static readonly errorHtmlUsingDELETEPath = '/error'; + static readonly errorHtmlUsingOPTIONSPath = '/error'; + static readonly errorHtmlUsingPATCHPath = '/error'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * @return OK + */ + errorHtmlUsingGETResponse(): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/error`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @return OK + */ + errorHtmlUsingGET(): __Observable { + return this.errorHtmlUsingGETResponse().pipe( + __map(_r => _r.body as ModelAndView) + ); + } + + /** + * @return OK + */ + errorHtmlUsingHEADResponse(): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'HEAD', + this.rootUrl + `/error`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @return OK + */ + errorHtmlUsingHEAD(): __Observable { + return this.errorHtmlUsingHEADResponse().pipe( + __map(_r => _r.body as ModelAndView) + ); + } + + /** + * @return OK + */ + errorHtmlUsingPOSTResponse(): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/error`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @return OK + */ + errorHtmlUsingPOST(): __Observable { + return this.errorHtmlUsingPOSTResponse().pipe( + __map(_r => _r.body as ModelAndView) + ); + } + + /** + * @return OK + */ + errorHtmlUsingPUTResponse(): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/error`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @return OK + */ + errorHtmlUsingPUT(): __Observable { + return this.errorHtmlUsingPUTResponse().pipe( + __map(_r => _r.body as ModelAndView) + ); + } + + /** + * @return OK + */ + errorHtmlUsingDELETEResponse(): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/error`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @return OK + */ + errorHtmlUsingDELETE(): __Observable { + return this.errorHtmlUsingDELETEResponse().pipe( + __map(_r => _r.body as ModelAndView) + ); + } + + /** + * @return OK + */ + errorHtmlUsingOPTIONSResponse(): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'OPTIONS', + this.rootUrl + `/error`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @return OK + */ + errorHtmlUsingOPTIONS(): __Observable { + return this.errorHtmlUsingOPTIONSResponse().pipe( + __map(_r => _r.body as ModelAndView) + ); + } + + /** + * @return OK + */ + errorHtmlUsingPATCHResponse(): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/error`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @return OK + */ + errorHtmlUsingPATCH(): __Observable { + return this.errorHtmlUsingPATCHResponse().pipe( + __map(_r => _r.body as ModelAndView) + ); + } +} + +module BasicErrorControllerService { +} + +export { BasicErrorControllerService } diff --git a/src/app/openApis/portalRepositoryAPI/services/operation-handler.service.ts b/src/app/openApis/portalRepositoryAPI/services/operation-handler.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..613a533cb74835aaeb91c897f7f2bdc57dd83502 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/services/operation-handler.service.ts @@ -0,0 +1,178 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + + +/** + * Operation Handler + */ +@Injectable({ + providedIn: 'root', +}) +class OperationHandlerService extends __BaseService { + static readonly handleUsingGET2Path = '/actuator/health'; + static readonly handleUsingGET1Path = '/actuator/health/{component}'; + static readonly handleUsingGETPath = '/actuator/health/{component}/{instance}'; + static readonly handleUsingGET3Path = '/actuator/info'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * @param body body + * @return OK + */ + handleUsingGET2Response(body?: {[key: string]: string}): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/actuator/health`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param body body + * @return OK + */ + handleUsingGET2(body?: {[key: string]: string}): __Observable<{}> { + return this.handleUsingGET2Response(body).pipe( + __map(_r => _r.body as {}) + ); + } + + // /** + // * @param body body + // * @return OK + // */ + // handleUsingGET1Response(body?: {[key: string]: string}): __Observable<__StrictHttpResponse<{}>> { + // let __params = this.newParams(); + // let __headers = new HttpHeaders(); + // let __body: any = null; + // __body = body; + // let req = new HttpRequest( + // 'GET', + // this.rootUrl + `/actuator/health/${component}`, + // __body, + // { + // headers: __headers, + // params: __params, + // responseType: 'json' + // }); + + // return this.http.request(req).pipe( + // __filter(_r => _r instanceof HttpResponse), + // __map((_r) => { + // return _r as __StrictHttpResponse<{}>; + // }) + // ); + // } + // /** + // * @param body body + // * @return OK + // */ + // handleUsingGET1(body?: {[key: string]: string}): __Observable<{}> { + // return this.handleUsingGET1Response(body).pipe( + // __map(_r => _r.body as {}) + // ); + // } + + // /** + // * @param body body + // * @return OK + // */ + // handleUsingGETResponse(body?: {[key: string]: string}): __Observable<__StrictHttpResponse<{}>> { + // let __params = this.newParams(); + // let __headers = new HttpHeaders(); + // let __body: any = null; + // __body = body; + // let req = new HttpRequest( + // 'GET', + // this.rootUrl + `/actuator/health/${component}/${instance}`, + // __body, + // { + // headers: __headers, + // params: __params, + // responseType: 'json' + // }); + + // return this.http.request(req).pipe( + // __filter(_r => _r instanceof HttpResponse), + // __map((_r) => { + // return _r as __StrictHttpResponse<{}>; + // }) + // ); + // } + // /** + // * @param body body + // * @return OK + // */ + // handleUsingGET(body?: {[key: string]: string}): __Observable<{}> { + // return this.handleUsingGETResponse(body).pipe( + // __map(_r => _r.body as {}) + // ); + // } + + /** + * @param body body + * @return OK + */ + handleUsingGET3Response(body?: {[key: string]: string}): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/actuator/info`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param body body + * @return OK + */ + handleUsingGET3(body?: {[key: string]: string}): __Observable<{}> { + return this.handleUsingGET3Response(body).pipe( + __map(_r => _r.body as {}) + ); + } +} + +module OperationHandlerService { +} + +export { OperationHandlerService } diff --git a/src/app/openApis/portalRepositoryAPI/services/portal-repository-api-impl.service.ts b/src/app/openApis/portalRepositoryAPI/services/portal-repository-api-impl.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..46955f68ec148f8163989f515e02a09c5a151a50 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/services/portal-repository-api-impl.service.ts @@ -0,0 +1,991 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Category } from '../models/category'; +import { PortalUser } from '../models/portal-user'; +import { UserSession } from '../models/user-session'; + +/** + * Portal Repository API Impl + */ +@Injectable({ + providedIn: 'root', +}) +class PortalRepositoryApiImplService extends __BaseService { + static readonly getAdminCategoriesUsingGETPath = '/admin/categories'; + static readonly addCategoryUsingPOSTPath = '/admin/categories'; + static readonly getAdminCategoryByIdUsingGETPath = '/admin/categories/{catid}'; + static readonly updateCategoryUsingPUTPath = '/admin/categories/{catid}'; + static readonly deleteCategoryUsingDELETEPath = '/admin/categories/{catid}'; + static readonly getUsersUsingGETPath = '/admin/users'; + static readonly addUserUsingPOSTPath = '/admin/users'; + static readonly getMentorsUsingGETPath = '/admin/users/mentors'; + static readonly getUserUsingGETPath = '/admin/users/myuser'; + static readonly getUserByIdUsingGETPath = '/admin/users/{userid}'; + static readonly updateUserInfoUsingPUTPath = '/admin/users/{userid}'; + static readonly deleteUserUsingDELETEPath = '/admin/users/{userid}'; + static readonly getAllAppsofUserUsingGETPath = '/admin/users/{userid}/experiments'; + static readonly getAppofUserUsingGETPath = '/admin/users/{userid}/experiments/{appid}'; + static readonly getAllVxFsofUserUsingGETPath = '/admin/users/{userid}/vxfs'; + static readonly getVxFofUserUsingGETPath = '/admin/users/{userid}/vxfs/{vxfid}'; + static readonly getCategoriesUsingGETPath = '/categories'; + static readonly getCategoryByIdUsingGETPath = '/categories/{catid}'; + static readonly addNewRegisterUserUsingPOSTPath = '/register'; + static readonly addNewRegisterUserVerifyUsingPOSTPath = '/register/verify'; + static readonly addUserSessionUsingPOSTPath = '/sessions'; + static readonly logoutUserUsingGETPath = '/sessions/logout'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * @return OK + */ + getAdminCategoriesUsingGETResponse(): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/categories`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * @return OK + */ + getAdminCategoriesUsingGET(): __Observable> { + return this.getAdminCategoriesUsingGETResponse().pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * @param c c + * @return OK + */ + addCategoryUsingPOSTResponse(c: Category): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = c; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/categories`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param c c + * @return OK + */ + addCategoryUsingPOST(c: Category): __Observable<{}> { + return this.addCategoryUsingPOSTResponse(c).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param catid catid + * @return OK + */ + getAdminCategoryByIdUsingGETResponse(catid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/categories/${catid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param catid catid + * @return OK + */ + getAdminCategoryByIdUsingGET(catid: number): __Observable<{}> { + return this.getAdminCategoryByIdUsingGETResponse(catid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryApiImplService.UpdateCategoryUsingPUTParams` containing the following parameters: + * + * - `catid`: catid + * + * - `c`: c + * + * @return OK + */ + updateCategoryUsingPUTResponse(params: PortalRepositoryApiImplService.UpdateCategoryUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.c; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/categories/${params.catid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `PortalRepositoryApiImplService.UpdateCategoryUsingPUTParams` containing the following parameters: + * + * - `catid`: catid + * + * - `c`: c + * + * @return OK + */ + updateCategoryUsingPUT(params: PortalRepositoryApiImplService.UpdateCategoryUsingPUTParams): __Observable<{}> { + return this.updateCategoryUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param catid catid + * @return OK + */ + deleteCategoryUsingDELETEResponse(catid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/categories/${catid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param catid catid + * @return OK + */ + deleteCategoryUsingDELETE(catid: number): __Observable<{}> { + return this.deleteCategoryUsingDELETEResponse(catid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getUsersUsingGETResponse(): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/users`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * @return OK + */ + getUsersUsingGET(): __Observable> { + return this.getUsersUsingGETResponse().pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * @param user user + * @return OK + */ + addUserUsingPOSTResponse(user: PortalUser): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = user; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/users`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param user user + * @return OK + */ + addUserUsingPOST(user: PortalUser): __Observable<{}> { + return this.addUserUsingPOSTResponse(user).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getMentorsUsingGETResponse(): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/users/mentors`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * @return OK + */ + getMentorsUsingGET(): __Observable> { + return this.getMentorsUsingGETResponse().pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * @return OK + */ + getUserUsingGETResponse(): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/users/myuser`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @return OK + */ + getUserUsingGET(): __Observable { + return this.getUserUsingGETResponse().pipe( + __map(_r => _r.body as PortalUser) + ); + } + + /** + * @param userid userid + * @return OK + */ + getUserByIdUsingGETResponse(userid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/users/${userid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param userid userid + * @return OK + */ + getUserByIdUsingGET(userid: number): __Observable<{}> { + return this.getUserByIdUsingGETResponse(userid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryApiImplService.UpdateUserInfoUsingPUTParams` containing the following parameters: + * + * - `userid`: userid + * + * - `user`: user + * + * @return OK + */ + updateUserInfoUsingPUTResponse(params: PortalRepositoryApiImplService.UpdateUserInfoUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.user; + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/users/${params.userid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `PortalRepositoryApiImplService.UpdateUserInfoUsingPUTParams` containing the following parameters: + * + * - `userid`: userid + * + * - `user`: user + * + * @return OK + */ + updateUserInfoUsingPUT(params: PortalRepositoryApiImplService.UpdateUserInfoUsingPUTParams): __Observable<{}> { + return this.updateUserInfoUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param userid userid + * @return OK + */ + deleteUserUsingDELETEResponse(userid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/users/${userid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param userid userid + * @return OK + */ + deleteUserUsingDELETE(userid: number): __Observable<{}> { + return this.deleteUserUsingDELETEResponse(userid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param userid userid + * @return OK + */ + getAllAppsofUserUsingGETResponse(userid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/users/${userid}/experiments`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param userid userid + * @return OK + */ + getAllAppsofUserUsingGET(userid: number): __Observable<{}> { + return this.getAllAppsofUserUsingGETResponse(userid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryApiImplService.GetAppofUserUsingGETParams` containing the following parameters: + * + * - `userid`: userid + * + * - `appid`: appid + * + * @return OK + */ + getAppofUserUsingGETResponse(params: PortalRepositoryApiImplService.GetAppofUserUsingGETParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/users/${params.userid}/experiments/${params.appid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `PortalRepositoryApiImplService.GetAppofUserUsingGETParams` containing the following parameters: + * + * - `userid`: userid + * + * - `appid`: appid + * + * @return OK + */ + getAppofUserUsingGET(params: PortalRepositoryApiImplService.GetAppofUserUsingGETParams): __Observable<{}> { + return this.getAppofUserUsingGETResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param userid userid + * @return OK + */ + getAllVxFsofUserUsingGETResponse(userid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/users/${userid}/vxfs`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param userid userid + * @return OK + */ + getAllVxFsofUserUsingGET(userid: number): __Observable<{}> { + return this.getAllVxFsofUserUsingGETResponse(userid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryApiImplService.GetVxFofUserUsingGETParams` containing the following parameters: + * + * - `vxfid`: vxfid + * + * - `userid`: userid + * + * @return OK + */ + getVxFofUserUsingGETResponse(params: PortalRepositoryApiImplService.GetVxFofUserUsingGETParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/users/${params.userid}/vxfs/${params.vxfid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `PortalRepositoryApiImplService.GetVxFofUserUsingGETParams` containing the following parameters: + * + * - `vxfid`: vxfid + * + * - `userid`: userid + * + * @return OK + */ + getVxFofUserUsingGET(params: PortalRepositoryApiImplService.GetVxFofUserUsingGETParams): __Observable<{}> { + return this.getVxFofUserUsingGETResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + getCategoriesUsingGETResponse(): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/categories`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * @return OK + */ + getCategoriesUsingGET(): __Observable> { + return this.getCategoriesUsingGETResponse().pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * @param catid catid + * @return OK + */ + getCategoryByIdUsingGETResponse(catid: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/categories/${catid}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param catid catid + * @return OK + */ + getCategoryByIdUsingGET(catid: number): __Observable<{}> { + return this.getCategoryByIdUsingGETResponse(catid).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryApiImplService.AddNewRegisterUserUsingPOSTParams` containing the following parameters: + * + * - `portaluser`: portaluser + * + * - `emailmessage`: emailmessage + * + * @return OK + */ + addNewRegisterUserUsingPOSTResponse(params: PortalRepositoryApiImplService.AddNewRegisterUserUsingPOSTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.portaluser; + __body = params.emailmessage; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/register`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `PortalRepositoryApiImplService.AddNewRegisterUserUsingPOSTParams` containing the following parameters: + * + * - `portaluser`: portaluser + * + * - `emailmessage`: emailmessage + * + * @return OK + */ + addNewRegisterUserUsingPOST(params: PortalRepositoryApiImplService.AddNewRegisterUserUsingPOSTParams): __Observable<{}> { + return this.addNewRegisterUserUsingPOSTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryApiImplService.AddNewRegisterUserVerifyUsingPOSTParams` containing the following parameters: + * + * - `username`: username + * + * - `rid`: rid + * + * @return OK + */ + addNewRegisterUserVerifyUsingPOSTResponse(params: PortalRepositoryApiImplService.AddNewRegisterUserVerifyUsingPOSTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.username; + __body = params.rid; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/register/verify`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `PortalRepositoryApiImplService.AddNewRegisterUserVerifyUsingPOSTParams` containing the following parameters: + * + * - `username`: username + * + * - `rid`: rid + * + * @return OK + */ + addNewRegisterUserVerifyUsingPOST(params: PortalRepositoryApiImplService.AddNewRegisterUserVerifyUsingPOSTParams): __Observable<{}> { + return this.addNewRegisterUserVerifyUsingPOSTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param userSession userSession + * @return OK + */ + addUserSessionUsingPOSTResponse(userSession: UserSession): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = userSession; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/sessions`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param userSession userSession + * @return OK + */ + addUserSessionUsingPOST(userSession: UserSession): __Observable<{}> { + return this.addUserSessionUsingPOSTResponse(userSession).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @return OK + */ + logoutUserUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/sessions/logout`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + logoutUserUsingGET(): __Observable<{}> { + return this.logoutUserUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } +} + +module PortalRepositoryApiImplService { + + /** + * Parameters for updateCategoryUsingPUT + */ + export interface UpdateCategoryUsingPUTParams { + + /** + * catid + */ + catid: number; + + /** + * c + */ + c: Category; + } + + /** + * Parameters for updateUserInfoUsingPUT + */ + export interface UpdateUserInfoUsingPUTParams { + + /** + * userid + */ + userid: number; + + /** + * user + */ + user: PortalUser; + } + + /** + * Parameters for getAppofUserUsingGET + */ + export interface GetAppofUserUsingGETParams { + + /** + * userid + */ + userid: number; + + /** + * appid + */ + appid: number; + } + + /** + * Parameters for getVxFofUserUsingGET + */ + export interface GetVxFofUserUsingGETParams { + + /** + * vxfid + */ + vxfid: number; + + /** + * userid + */ + userid: number; + } + + /** + * Parameters for addNewRegisterUserUsingPOST + */ + export interface AddNewRegisterUserUsingPOSTParams { + + /** + * portaluser + */ + portaluser?: string; + + /** + * emailmessage + */ + emailmessage?: string; + } + + /** + * Parameters for addNewRegisterUserVerifyUsingPOST + */ + export interface AddNewRegisterUserVerifyUsingPOSTParams { + + /** + * username + */ + username?: string; + + /** + * rid + */ + rid?: string; + } +} + +export { PortalRepositoryApiImplService } diff --git a/src/app/openApis/portalRepositoryAPI/services/portal-repository-vf-image-api.service.ts b/src/app/openApis/portalRepositoryAPI/services/portal-repository-vf-image-api.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..9dbde735bf8a12520e42c655aed1506e9f23ce03 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/services/portal-repository-vf-image-api.service.ts @@ -0,0 +1,371 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + + +/** + * Portal Repository VF Image API + */ +@Injectable({ + providedIn: 'root', +}) +class PortalRepositoryVfImageApiService extends __BaseService { + static readonly getAdminVFImagesUsingGETPath = '/admin/vfimages'; + static readonly addVFImageUsingPOSTPath = '/admin/vfimages'; + static readonly updateVFImageUsingPUTPath = '/admin/vfimages'; + static readonly getVFImageByNameUsingGETPath = '/admin/vfimages/name/{imagename}'; + static readonly getVFImageByIdUsingGETPath = '/admin/vfimages/{id}'; + static readonly deleteVFImageUsingDELETEPath = '/admin/vfimages/{id}'; + static readonly downloadVxFPackageUsingGET1Path = '/vfimages/image/{uuid}/{vfimagefile}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * @return OK + */ + getAdminVFImagesUsingGETResponse(): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/vfimages`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @return OK + */ + getAdminVFImagesUsingGET(): __Observable<{}> { + return this.getAdminVFImagesUsingGETResponse().pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryVfImageApiService.AddVFImageUsingPOSTParams` containing the following parameters: + * + * - `vfimage`: vfimage + * + * - `prodFile`: prodFile + * + * @return OK + */ + addVFImageUsingPOSTResponse(params: PortalRepositoryVfImageApiService.AddVFImageUsingPOSTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let __formData = new FormData(); + __body = __formData; + __body = params.vfimage; + if (params.prodFile != null) { __formData.append('prodFile', params.prodFile as string | Blob);} + let req = new HttpRequest( + 'POST', + this.rootUrl + `/admin/vfimages`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `PortalRepositoryVfImageApiService.AddVFImageUsingPOSTParams` containing the following parameters: + * + * - `vfimage`: vfimage + * + * - `prodFile`: prodFile + * + * @return OK + */ + addVFImageUsingPOST(params: PortalRepositoryVfImageApiService.AddVFImageUsingPOSTParams): __Observable<{}> { + return this.addVFImageUsingPOSTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryVfImageApiService.UpdateVFImageUsingPUTParams` containing the following parameters: + * + * - `vfimage`: vfimage + * + * - `prodFile`: prodFile + * + * @return OK + */ + updateVFImageUsingPUTResponse(params: PortalRepositoryVfImageApiService.UpdateVFImageUsingPUTParams): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let __formData = new FormData(); + __body = __formData; + __body = params.vfimage; + if (params.prodFile != null) { __formData.append('prodFile', params.prodFile as string | Blob);} + let req = new HttpRequest( + 'PUT', + this.rootUrl + `/admin/vfimages`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param params The `PortalRepositoryVfImageApiService.UpdateVFImageUsingPUTParams` containing the following parameters: + * + * - `vfimage`: vfimage + * + * - `prodFile`: prodFile + * + * @return OK + */ + updateVFImageUsingPUT(params: PortalRepositoryVfImageApiService.UpdateVFImageUsingPUTParams): __Observable<{}> { + return this.updateVFImageUsingPUTResponse(params).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param imagename imagename + * @return OK + */ + getVFImageByNameUsingGETResponse(imagename: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/vfimages/name/${imagename}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param imagename imagename + * @return OK + */ + getVFImageByNameUsingGET(imagename: string): __Observable<{}> { + return this.getVFImageByNameUsingGETResponse(imagename).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param id id + * @return OK + */ + getVFImageByIdUsingGETResponse(id: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/admin/vfimages/${id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param id id + * @return OK + */ + getVFImageByIdUsingGET(id: number): __Observable<{}> { + return this.getVFImageByIdUsingGETResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param id id + * @return OK + */ + deleteVFImageUsingDELETEResponse(id: number): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/admin/vfimages/${id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * @param id id + * @return OK + */ + deleteVFImageUsingDELETE(id: number): __Observable<{}> { + return this.deleteVFImageUsingDELETEResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * @param params The `PortalRepositoryVfImageApiService.DownloadVxFPackageUsingGET1Params` containing the following parameters: + * + * - `vfimagefile`: vfimagefile + * + * - `uuid`: uuid + * + * @return OK + */ + downloadVxFPackageUsingGET1Response(params: PortalRepositoryVfImageApiService.DownloadVxFPackageUsingGET1Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/vfimages/image/${params.uuid}/${params.vfimagefile}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'text' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * @param params The `PortalRepositoryVfImageApiService.DownloadVxFPackageUsingGET1Params` containing the following parameters: + * + * - `vfimagefile`: vfimagefile + * + * - `uuid`: uuid + * + * @return OK + */ + downloadVxFPackageUsingGET1(params: PortalRepositoryVfImageApiService.DownloadVxFPackageUsingGET1Params): __Observable { + return this.downloadVxFPackageUsingGET1Response(params).pipe( + __map(_r => _r.body as string) + ); + } +} + +module PortalRepositoryVfImageApiService { + + /** + * Parameters for addVFImageUsingPOST + */ + export interface AddVFImageUsingPOSTParams { + + /** + * vfimage + */ + vfimage?: string; + + /** + * prodFile + */ + prodFile?: Blob; + } + + /** + * Parameters for updateVFImageUsingPUT + */ + export interface UpdateVFImageUsingPUTParams { + + /** + * vfimage + */ + vfimage?: string; + + /** + * prodFile + */ + prodFile?: Blob; + } + + /** + * Parameters for downloadVxFPackageUsingGET1 + */ + export interface DownloadVxFPackageUsingGET1Params { + + /** + * vfimagefile + */ + vfimagefile: string; + + /** + * uuid + */ + uuid: string; + } +} + +export { PortalRepositoryVfImageApiService } diff --git a/src/app/openApis/portalRepositoryAPI/services/web-mvc-links-handler.service.ts b/src/app/openApis/portalRepositoryAPI/services/web-mvc-links-handler.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..98c201f38a65e0315fa42f944f77d9ebd5ccdcb3 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/services/web-mvc-links-handler.service.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Link } from '../models/link'; + +/** + * Web Mvc Links Handler + */ +@Injectable({ + providedIn: 'root', +}) +class WebMvcLinksHandlerService extends __BaseService { + static readonly linksUsingGETPath = '/actuator'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * @return OK + */ + linksUsingGETResponse(): __Observable<__StrictHttpResponse<{[key: string]: {[key: string]: Link}}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let req = new HttpRequest( + 'GET', + this.rootUrl + `/actuator`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{[key: string]: {[key: string]: Link}}>; + }) + ); + } + /** + * @return OK + */ + linksUsingGET(): __Observable<{[key: string]: {[key: string]: Link}}> { + return this.linksUsingGETResponse().pipe( + __map(_r => _r.body as {[key: string]: {[key: string]: Link}}) + ); + } +} + +module WebMvcLinksHandlerService { +} + +export { WebMvcLinksHandlerService } diff --git a/src/app/openApis/portalRepositoryAPI/strict-http-response.ts b/src/app/openApis/portalRepositoryAPI/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/portalRepositoryAPI/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/productCatalogManagement/api-configuration.ts b/src/app/openApis/productCatalogManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..7b6f61b3a737e7fb83fab4ee56b78c3af66431d0 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.5gasp.eu'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/productCatalogManagement/api.module.ts b/src/app/openApis/productCatalogManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..c2fff67e7f1c17a9481a6a3b1a68e3ae19f96569 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/api.module.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { CatalogService } from './services/catalog.service'; +import { CategoryService } from './services/category.service'; +import { ExportJobService } from './services/export-job.service'; +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { ImportJobService } from './services/import-job.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ProductOfferingService } from './services/product-offering.service'; +import { ProductOfferingPriceService } from './services/product-offering-price.service'; +import { ProductSpecificationService } from './services/product-specification.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + CatalogService, + CategoryService, + ExportJobService, + EventsSubscriptionService, + ImportJobService, + NotificationListenersClientSideService, + ProductOfferingService, + ProductOfferingPriceService, + ProductSpecificationService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/productCatalogManagement/base-service.ts b/src/app/openApis/productCatalogManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/productCatalogManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/productCatalogManagement/models.ts b/src/app/openApis/productCatalogManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..fabcaf8a312a0655a796ab3b5d1079f2320079a8 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models.ts @@ -0,0 +1,104 @@ +export { AgreementRef } from './models/agreement-ref'; +export { Any } from './models/any'; +export { AttachmentRefOrValue } from './models/attachment-ref-or-value'; +export { BundledProductOfferingOption } from './models/bundled-product-offering-option'; +export { BundledProductOfferingPriceRelationshipReq } from './models/bundled-product-offering-price-relationship-req'; +export { BundledProductOfferingPriceRelationshipRes } from './models/bundled-product-offering-price-relationship-res'; +export { BundledProductOfferingReq } from './models/bundled-product-offering-req'; +export { BundledProductOfferingRes } from './models/bundled-product-offering-res'; +export { BundledProductSpecificationReq } from './models/bundled-product-specification-req'; +export { BundledProductSpecificationRes } from './models/bundled-product-specification-res'; +export { Catalog } from './models/catalog'; +export { CatalogBatchEvent } from './models/catalog-batch-event'; +export { CatalogBatchEventPayload } from './models/catalog-batch-event-payload'; +export { CatalogCreate } from './models/catalog-create'; +export { CatalogCreateEvent } from './models/catalog-create-event'; +export { CatalogCreateEventPayload } from './models/catalog-create-event-payload'; +export { CatalogDeleteEvent } from './models/catalog-delete-event'; +export { CatalogDeleteEventPayload } from './models/catalog-delete-event-payload'; +export { CatalogUpdate } from './models/catalog-update'; +export { Category } from './models/category'; +export { CategoryCreate } from './models/category-create'; +export { CategoryCreateEvent } from './models/category-create-event'; +export { CategoryCreateEventPayload } from './models/category-create-event-payload'; +export { CategoryDeleteEvent } from './models/category-delete-event'; +export { CategoryDeleteEventPayload } from './models/category-delete-event-payload'; +export { CategoryRef } from './models/category-ref'; +export { CategoryUpdate } from './models/category-update'; +export { ChannelRefReq } from './models/channel-ref-req'; +export { ChannelRefRes } from './models/channel-ref-res'; +export { ConstraintRefReq } from './models/constraint-ref-req'; +export { ConstraintRefRes } from './models/constraint-ref-res'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { ExportJob } from './models/export-job'; +export { ExportJobCreate } from './models/export-job-create'; +export { ImportJob } from './models/import-job'; +export { ImportJobCreate } from './models/import-job-create'; +export { MarketSegmentRefReq } from './models/market-segment-ref-req'; +export { MarketSegmentRefRes } from './models/market-segment-ref-res'; +export { Money } from './models/money'; +export { PlaceRef } from './models/place-ref'; +export { PricingLogicAlgorithmReq } from './models/pricing-logic-algorithm-req'; +export { PricingLogicAlgorithmRes } from './models/pricing-logic-algorithm-res'; +export { ProductOffering } from './models/product-offering'; +export { ProductOfferingAttributeValueChangeEvent } from './models/product-offering-attribute-value-change-event'; +export { ProductOfferingAttributeValueChangeEventPayload } from './models/product-offering-attribute-value-change-event-payload'; +export { ProductOfferingCreate } from './models/product-offering-create'; +export { ProductOfferingCreateEvent } from './models/product-offering-create-event'; +export { ProductOfferingCreateEventPayload } from './models/product-offering-create-event-payload'; +export { ProductOfferingDeleteEvent } from './models/product-offering-delete-event'; +export { ProductOfferingDeleteEventPayload } from './models/product-offering-delete-event-payload'; +export { ProductOfferingPrice } from './models/product-offering-price'; +export { ProductOfferingPriceAttributeValueChangeEvent } from './models/product-offering-price-attribute-value-change-event'; +export { ProductOfferingPriceAttributeValueChangeEventPayload } from './models/product-offering-price-attribute-value-change-event-payload'; +export { ProductOfferingPriceCreate } from './models/product-offering-price-create'; +export { ProductOfferingPriceCreateEvent } from './models/product-offering-price-create-event'; +export { ProductOfferingPriceCreateEventPayload } from './models/product-offering-price-create-event-payload'; +export { ProductOfferingPriceDeleteEvent } from './models/product-offering-price-delete-event'; +export { ProductOfferingPriceDeleteEventPayload } from './models/product-offering-price-delete-event-payload'; +export { ProductOfferingPriceRefReq } from './models/product-offering-price-ref-req'; +export { ProductOfferingPriceRefRes } from './models/product-offering-price-ref-res'; +export { ProductOfferingPriceRelationshipReq } from './models/product-offering-price-relationship-req'; +export { ProductOfferingPriceRelationshipRes } from './models/product-offering-price-relationship-res'; +export { ProductOfferingPriceStateChangeEvent } from './models/product-offering-price-state-change-event'; +export { ProductOfferingPriceStateChangeEventPayload } from './models/product-offering-price-state-change-event-payload'; +export { ProductOfferingPriceUpdate } from './models/product-offering-price-update'; +export { ProductOfferingRef } from './models/product-offering-ref'; +export { ProductOfferingStateChangeEvent } from './models/product-offering-state-change-event'; +export { ProductOfferingStateChangeEventPayload } from './models/product-offering-state-change-event-payload'; +export { ProductOfferingTermReq } from './models/product-offering-term-req'; +export { ProductOfferingTermRes } from './models/product-offering-term-res'; +export { ProductOfferingUpdate } from './models/product-offering-update'; +export { ProductSpecification } from './models/product-specification'; +export { ProductSpecificationCharacteristicRelationshipReq } from './models/product-specification-characteristic-relationship-req'; +export { ProductSpecificationCharacteristicRelationshipRes } from './models/product-specification-characteristic-relationship-res'; +export { ProductSpecificationCharacteristicReq } from './models/product-specification-characteristic-req'; +export { ProductSpecificationCharacteristicRes } from './models/product-specification-characteristic-res'; +export { ProductSpecificationCharacteristicValue } from './models/product-specification-characteristic-value'; +export { ProductSpecificationCharacteristicValueUseReq } from './models/product-specification-characteristic-value-use-req'; +export { ProductSpecificationCharacteristicValueUseRes } from './models/product-specification-characteristic-value-use-res'; +export { ProductSpecificationCreate } from './models/product-specification-create'; +export { ProductSpecificationCreateEvent } from './models/product-specification-create-event'; +export { ProductSpecificationCreateEventPayload } from './models/product-specification-create-event-payload'; +export { ProductSpecificationDeleteEvent } from './models/product-specification-delete-event'; +export { ProductSpecificationDeleteEventPayload } from './models/product-specification-delete-event-payload'; +export { ProductSpecificationRefReq } from './models/product-specification-ref-req'; +export { ProductSpecificationRefRes } from './models/product-specification-ref-res'; +export { ProductSpecificationRelationship } from './models/product-specification-relationship'; +export { ProductSpecificationUpdate } from './models/product-specification-update'; +export { Quantity } from './models/quantity'; +export { RelatedParty } from './models/related-party'; +export { ResourceCandidateRefReq } from './models/resource-candidate-ref-req'; +export { ResourceCandidateRefRes } from './models/resource-candidate-ref-res'; +export { ResourceSpecificationRef } from './models/resource-specification-ref'; +export { SLARefReq } from './models/slaref-req'; +export { SLARefRes } from './models/slaref-res'; +export { ServiceCandidateRefReq } from './models/service-candidate-ref-req'; +export { ServiceCandidateRefRes } from './models/service-candidate-ref-res'; +export { ServiceSpecificationRef } from './models/service-specification-ref'; +export { TargetProductSchema } from './models/target-product-schema'; +export { TargetServiceSchema } from './models/target-service-schema'; +export { TaxItem } from './models/tax-item'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/productCatalogManagement/models/agreement-ref.ts b/src/app/openApis/productCatalogManagement/models/agreement-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..1119b518d8da8c6523147c9b519036c89e4c4f70 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/agreement-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. + */ +export interface AgreementRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Identifier of the agreement + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/any.ts b/src/app/openApis/productCatalogManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/attachment-ref-or-value.ts b/src/app/openApis/productCatalogManagement/models/attachment-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..97137fd2e81fc84cef7ca8d306526ca973d75130 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/attachment-ref-or-value.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture. + */ +export interface AttachmentRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Attachment type such as video, picture + */ + attachmentType?: string; + + /** + * The actual contents of the attachment object, if embedded, encoded as base64 + */ + content?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier for this particular attachment + */ + id?: string; + + /** + * Attachment mime type such as extension file for video, picture and document + */ + mimeType?: string; + + /** + * Name of the entity + */ + name?: string; + size?: Quantity; + + /** + * Uniform Resource Locator, is a web page address (a subset of URI) + */ + url?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/productCatalogManagement/models/bundled-product-offering-option.ts b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-option.ts new file mode 100644 index 0000000000000000000000000000000000000000..b1e33c0fdfba691b62ea4c5853b10afeb16c2364 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-option.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * A set of numbers that specifies the lower and upper limits for a ProductOffering that can be procured as part of the related BundledProductOffering. Values can range from 0 to unbounded + */ +export interface BundledProductOfferingOption { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Default number of produc offereings that should be procured as part of the related BundledProductOffering + */ + numberRelOfferDefault?: number; + + /** + * lower limit for a product offering that can be procured as part of the related BundledProductOffering + */ + numberRelOfferLowerLimit?: number; + + /** + * upper limit for a product offering that can be procured as part of the related BundledProductOffering + */ + numberRelOfferUpperLimit?: number; + uuid?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/bundled-product-offering-price-relationship-req.ts b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-price-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..4cdacdc63144f88d59b31bb55666023dc534365a --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-price-relationship-req.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * This represents a bundling pricing relationship, allowing a price to be composed of multiple other prices (e.g. a recurring charge and a onetime charge). + */ +export interface BundledProductOfferingPriceRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the bundled product offering price + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/bundled-product-offering-price-relationship-res.ts b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-price-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..b1287230f4a6f223bc891a6bad82efea4ac98d67 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-price-relationship-res.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * This represents a bundling pricing relationship, allowing a price to be composed of multiple other prices (e.g. a recurring charge and a onetime charge). + */ +export interface BundledProductOfferingPriceRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the bundled product offering price + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/bundled-product-offering-req.ts b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..7af0bcb728dcec7e390d78e7a95c87f280e35c53 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-req.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { BundledProductOfferingOption } from './bundled-product-offering-option'; +import { TimePeriod } from './time-period'; + +/** + * A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering. + */ +export interface BundledProductOfferingReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * A set of numbers that specifies the lower and upper limits for a ProductOffering that can be procured as part of the related BundledProductOffering. Values can range from 0 to unbounded. + */ + bundledProductOfferingOption?: BundledProductOfferingOption; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the BundledProductOffering + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the BundledProductOffering + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/bundled-product-offering-res.ts b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f66ec5fa94e2e803f85caddfd55cbcf81b2bcc8 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/bundled-product-offering-res.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +import { BundledProductOfferingOption } from './bundled-product-offering-option'; +import { TimePeriod } from './time-period'; + +/** + * A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering. + */ +export interface BundledProductOfferingRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * A set of numbers that specifies the lower and upper limits for a ProductOffering that can be procured as part of the related BundledProductOffering. Values can range from 0 to unbounded. + */ + bundledProductOfferingOption?: BundledProductOfferingOption; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the BundledProductOffering + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the BundledProductOffering + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/bundled-product-specification-req.ts b/src/app/openApis/productCatalogManagement/models/bundled-product-specification-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..e086644d2633443c0176b12c7ab6f6d34ceca4df --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/bundled-product-specification-req.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification. + */ +export interface BundledProductSpecificationReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Reference of the product specification + */ + href?: string; + + /** + * Unique identifier of the product specification + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the product specification + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/bundled-product-specification-res.ts b/src/app/openApis/productCatalogManagement/models/bundled-product-specification-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..0d561afccad047fccf441a470eee3de260033dba --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/bundled-product-specification-res.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification. + */ +export interface BundledProductSpecificationRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Reference of the product specification + */ + href?: string; + + /** + * Unique identifier of the product specification + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the product specification + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog-batch-event-payload.ts b/src/app/openApis/productCatalogManagement/models/catalog-batch-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..ecbd7b5960016c25b3465fe4ec3b1e4018d61761 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog-batch-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Catalog } from './catalog'; + +/** + * The event data structure + */ +export interface CatalogBatchEventPayload { + + /** + * The involved resource data for the event + */ + catalog?: Catalog; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog-batch-event.ts b/src/app/openApis/productCatalogManagement/models/catalog-batch-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f8929877577ebce073d2fc43ea38ac0c3267918 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog-batch-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { CatalogBatchEventPayload } from './catalog-batch-event-payload'; + +/** + * The notification data structure + */ +export interface CatalogBatchEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: CatalogBatchEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog-create-event-payload.ts b/src/app/openApis/productCatalogManagement/models/catalog-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..ab532bd05fa52e34a079906212820a0103661c7f --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog-create-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Catalog } from './catalog'; + +/** + * The event data structure + */ +export interface CatalogCreateEventPayload { + + /** + * The involved resource data for the event + */ + catalog?: Catalog; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog-create-event.ts b/src/app/openApis/productCatalogManagement/models/catalog-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..69a6ce71d45aa5673d895811068ab50ab769e57f --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog-create-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { CatalogCreateEventPayload } from './catalog-create-event-payload'; + +/** + * The notification data structure + */ +export interface CatalogCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: CatalogCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog-create.ts b/src/app/openApis/productCatalogManagement/models/catalog-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..2b90657cfd880cba5a3eb41ffe3526f545f8eab2 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog-create.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +import { CategoryRef } from './category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * A collection of Product Offerings, intended for a specific DistributionChannel, enhanced with additional information such as SLA parameters, invoicing and shipping details Skipped properties: id,href + */ +export interface CatalogCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Indicates if the catalog is a product, service or resource catalog + */ + catalogType?: string; + + /** + * List of root categories contained in this catalog + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the catalog + */ + name?: string; + + /** + * List of parties involved in this catalog + */ + relatedParty?: Array; + + /** + * The period for which the catalog is valid + */ + validFor?: TimePeriod; + + /** + * Catalog version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog-delete-event-payload.ts b/src/app/openApis/productCatalogManagement/models/catalog-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..20b6022de0d0cf125885991a962678b0f46d4167 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog-delete-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Catalog } from './catalog'; + +/** + * The event data structure + */ +export interface CatalogDeleteEventPayload { + + /** + * The involved resource data for the event + */ + catalog?: Catalog; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog-delete-event.ts b/src/app/openApis/productCatalogManagement/models/catalog-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..66c1fc6fded68c48db869f3eae71a7a32527a4c8 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog-delete-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { CatalogDeleteEventPayload } from './catalog-delete-event-payload'; + +/** + * The notification data structure + */ +export interface CatalogDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: CatalogDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog-update.ts b/src/app/openApis/productCatalogManagement/models/catalog-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..cd72063d7e35314ab7e57067cf3b1e5878f70e8b --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog-update.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { CategoryRef } from './category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * A collection of Product Offerings, intended for a specific DistributionChannel, enhanced with additional information such as SLA parameters, invoicing and shipping details Skipped properties: id,href,lastUpdate + */ +export interface CatalogUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Indicates if the catalog is a product, service or resource catalog + */ + catalogType?: string; + + /** + * List of root categories contained in this catalog + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the catalog + */ + name?: string; + + /** + * List of parties involved in this catalog + */ + relatedParty?: Array; + + /** + * The period for which the catalog is valid + */ + validFor?: TimePeriod; + + /** + * Catalog version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/catalog.ts b/src/app/openApis/productCatalogManagement/models/catalog.ts new file mode 100644 index 0000000000000000000000000000000000000000..e143a7ff14cde285aed10cae2e8a67f8f20f74e6 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/catalog.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +import { CategoryRef } from './category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * A collection of Product Offerings, intended for a specific DistributionChannel, enhanced with additional information such as SLA parameters, invoicing and shipping details + */ +export interface Catalog { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Indicates if the catalog is a product, service or resource catalog + */ + catalogType?: string; + + /** + * List of categories associated with this catalog + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + + /** + * List of parties involved in this catalog + */ + relatedParty?: Array; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/category-create-event-payload.ts b/src/app/openApis/productCatalogManagement/models/category-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..8b989d1f3fd97ec83f4a04fb71d67fb003b8042c --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/category-create-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Category } from './category'; + +/** + * The event data structure + */ +export interface CategoryCreateEventPayload { + + /** + * The involved resource data for the event + */ + category?: Category; +} diff --git a/src/app/openApis/productCatalogManagement/models/category-create-event.ts b/src/app/openApis/productCatalogManagement/models/category-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..6502fed0662f246936cbf674c1dfe6bd4253c50c --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/category-create-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { CategoryCreateEventPayload } from './category-create-event-payload'; + +/** + * The notification data structure + */ +export interface CategoryCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: CategoryCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/category-create.ts b/src/app/openApis/productCatalogManagement/models/category-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..16074bf5fdaa02b646671e3f5b19919800d24129 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/category-create.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +import { ProductOfferingRef } from './product-offering-ref'; +import { CategoryRef } from './category-ref'; +import { TimePeriod } from './time-period'; + +/** + * The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. Skipped properties: id,href + */ +export interface CategoryCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Description of the category + */ + description?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the category + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + + /** + * A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. + */ + productOffering?: Array; + + /** + * The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other (sub-)categories and/or product offerings. + */ + subCategory?: Array; + + /** + * The period for which the category is valid + */ + validFor?: TimePeriod; + + /** + * Category version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/category-delete-event-payload.ts b/src/app/openApis/productCatalogManagement/models/category-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..190f293b5b36b121304d6a8fa452c154dcbaa707 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/category-delete-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Category } from './category'; + +/** + * The event data structure + */ +export interface CategoryDeleteEventPayload { + + /** + * The involved resource data for the event + */ + category?: Category; +} diff --git a/src/app/openApis/productCatalogManagement/models/category-delete-event.ts b/src/app/openApis/productCatalogManagement/models/category-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..dc7c6ab1fa6a19954f09ddd6a75ab3288952cd6c --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/category-delete-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { CategoryDeleteEventPayload } from './category-delete-event-payload'; + +/** + * The notification data structure + */ +export interface CategoryDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: CategoryDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/category-ref.ts b/src/app/openApis/productCatalogManagement/models/category-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..78d31e96ecd8a6cebfb1afa384583fae53b45ff3 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/category-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * The category for grouping recommendations + */ +export interface CategoryRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/category-update.ts b/src/app/openApis/productCatalogManagement/models/category-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..ccbee8f74918066027fc48d0916ae1973ae499bc --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/category-update.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +import { ProductOfferingRef } from './product-offering-ref'; +import { CategoryRef } from './category-ref'; +import { TimePeriod } from './time-period'; + +/** + * The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. Skipped properties: id,href,lastUpdate + */ +export interface CategoryUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Description of the category + */ + description?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the category + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + + /** + * A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. + */ + productOffering?: Array; + + /** + * The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other (sub-)categories and/or product offerings. + */ + subCategory?: Array; + + /** + * The period for which the category is valid + */ + validFor?: TimePeriod; + + /** + * Category version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/category.ts b/src/app/openApis/productCatalogManagement/models/category.ts new file mode 100644 index 0000000000000000000000000000000000000000..67a8f0dc9cfac156b84125484a475a56b6e2f8eb --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/category.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +import { CategoryRef } from './category-ref'; +import { TimePeriod } from './time-period'; +import { ProductOfferingRef } from './product-offering-ref'; + +/** + * The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. + */ +export interface Category { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + + /** + * List of child categories in the tree for in this category + */ + subCategory?: Array; + + productOffering?: Array; + + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/channel-ref-req.ts b/src/app/openApis/productCatalogManagement/models/channel-ref-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..ecc6e1aa09dfc0df8009f6dafd8070705f895bcf --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/channel-ref-req.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * The channel to which the resource reference to. e.g. channel for selling product offerings, channel for opening a trouble ticket etc.. + */ +export interface ChannelRefReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/channel-ref-res.ts b/src/app/openApis/productCatalogManagement/models/channel-ref-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..ac7db4a2155fdef9479cc2b532b538b4236fb53e --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/channel-ref-res.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * The channel to which the resource reference to. e.g. channel for selling product offerings, channel for opening a trouble ticket etc.. + */ +export interface ChannelRefRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/constraint-ref-req.ts b/src/app/openApis/productCatalogManagement/models/constraint-ref-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..2cbc0e7c363207e9c9c55622466693362cd5b650 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/constraint-ref-req.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec. + */ +export interface ConstraintRefReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The (class) type of the referred constraint + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * reference id to the target constraint + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/constraint-ref-res.ts b/src/app/openApis/productCatalogManagement/models/constraint-ref-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..520bc2f79b8f105bfa751a031eefab706b36b1c8 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/constraint-ref-res.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec. + */ +export interface ConstraintRefRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The (class) type of the referred constraint + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * reference id to the target constraint + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/error.ts b/src/app/openApis/productCatalogManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..414df304d3655390c1dcb7bd86ba6b205a13717e --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/error.ts @@ -0,0 +1,47 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + + /** + * When sub-classing, this defines the super-class. + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + '@type'?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: string; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/event-subscription-input.ts b/src/app/openApis/productCatalogManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/event-subscription.ts b/src/app/openApis/productCatalogManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/export-job-create.ts b/src/app/openApis/productCatalogManagement/models/export-job-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..34700704bfdaf174aba18b8e44b01e727f447438 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/export-job-create.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ + +/** + * Represents a task used to export resources to a file Skipped properties: id,href + */ +export interface ExportJobCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Data at which the job was completed + */ + completionDate?: string; + + /** + * The format of the exported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure + */ + errorLog?: string; + + /** + * URL of the root resource acting as the source for streaming content to the file specified by the export job + */ + path?: string; + + /** + * Used to scope the exported data + */ + query?: string; + + /** + * Status of the export job (not started, running, succeeded, failed) + */ + status?: 'Failed' | 'Not Started' | 'Running' | 'Succeeded'; + + /** + * URL of the file containing the data to be exported + */ + url: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/export-job.ts b/src/app/openApis/productCatalogManagement/models/export-job.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a7d66538edd55d176fc91104f6676601194daeb --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/export-job.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ + +/** + * Represents a task used to export resources to a file + */ +export interface ExportJob { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Data at which the job was completed + */ + completionDate?: string; + + /** + * The format of the exported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure + */ + errorLog?: string; + + /** + * Reference of the export job + */ + href?: string; + + /** + * Identifier of the export job + */ + id?: string; + + /** + * URL of the root resource acting as the source for streaming content to the file specified by the export job + */ + path?: string; + + /** + * Used to scope the exported data + */ + query?: string; + + /** + * Status of the export job (not started, running, succeeded, failed) + */ + status?: 'Failed' | 'Not Started' | 'Running' | 'Succeeded'; + + /** + * URL of the file containing the data to be exported + */ + url?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/import-job-create.ts b/src/app/openApis/productCatalogManagement/models/import-job-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..d4c0311cad198cf66556a7d4ff5782b8318fafd6 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/import-job-create.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ + +/** + * Represents a task used to import resources from a file Skipped properties: id,href + */ +export interface ImportJobCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Date at which the job was completed + */ + completionDate?: string; + + /** + * Indicates the format of the imported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure if status is failed + */ + errorLog?: string; + + /** + * URL of the root resource where the content of the file specified by the import job must be applied + */ + path?: string; + + /** + * Status of the import job (not started, running, succeeded, failed) + */ + status?: 'Failed' | 'Not Started' | 'Running' | 'Succeeded'; + + /** + * URL of the file containing the data to be imported + */ + url: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/import-job.ts b/src/app/openApis/productCatalogManagement/models/import-job.ts new file mode 100644 index 0000000000000000000000000000000000000000..fdde52651665592a070873ef0bc0be519f38e761 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/import-job.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ + +/** + * Represents a task used to import resources from a file + */ +export interface ImportJob { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Date at which the job was completed + */ + completionDate?: string; + + /** + * Indicates the format of the imported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure if status is failed + */ + errorLog?: string; + + /** + * Reference of the import job + */ + href?: string; + + /** + * Identifier of the import job + */ + id?: string; + + /** + * URL of the root resource where the content of the file specified by the import job must be applied + */ + path?: string; + + /** + * Status of the import job (not started, running, succeeded, failed) + */ + status?: 'Failed' | 'Not Started' | 'Running' | 'Succeeded'; + + /** + * URL of the file containing the data to be imported + */ + url?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/market-segment-ref-req.ts b/src/app/openApis/productCatalogManagement/models/market-segment-ref-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..0caceba4b554c608d58954f8818f2d1019e3ac9a --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/market-segment-ref-req.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth. + */ +export interface MarketSegmentRefReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * (Class) type of the referred market segment + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/market-segment-ref-res.ts b/src/app/openApis/productCatalogManagement/models/market-segment-ref-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..ef432e2b10664a7df895af94356510248090f620 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/market-segment-ref-res.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth. + */ +export interface MarketSegmentRefRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * (Class) type of the referred market segment + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the market segment + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/money.ts b/src/app/openApis/productCatalogManagement/models/money.ts new file mode 100644 index 0000000000000000000000000000000000000000..7399cb5041d04e4c206d481ac04d7cb4e9d9fdd0 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/money.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A base / value business entity used to represent money + */ +export interface Money { + + /** + * Currency (ISO4217 norm uses 3 letters to define the currency) + */ + unit?: string; + + /** + * A positive floating point number + */ + value?: number; +} diff --git a/src/app/openApis/productCatalogManagement/models/place-ref.ts b/src/app/openApis/productCatalogManagement/models/place-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..ea4cf3ada746d9a3518fd0411c9a1a1f584ae763 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/place-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Place reference. PlaceRef defines the placeRefs where the products are sold or delivered. + */ +export interface PlaceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/pricing-logic-algorithm-req.ts b/src/app/openApis/productCatalogManagement/models/pricing-logic-algorithm-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..c0dacc2776256d5eb51ae34c55d8c72ed8da4d05 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/pricing-logic-algorithm-req.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled bahavior in SID). Some of the parameters of the interface definiition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth) + */ +export interface PricingLogicAlgorithmReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + + /** + * id of corresponding PricingLogicAlgorithm specification + */ + plaSpecId?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/pricing-logic-algorithm-res.ts b/src/app/openApis/productCatalogManagement/models/pricing-logic-algorithm-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..3cffa7d604b5404902cac589b85d963e1c365d98 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/pricing-logic-algorithm-res.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled bahavior in SID). Some of the parameters of the interface definiition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth) + */ +export interface PricingLogicAlgorithmRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * unique id of the PricingLogicAlgorithm + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * id of corresponding PricingLogicAlgorithm specification + */ + plaSpecId?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-attribute-value-change-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-offering-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..55e908cc9f91d7dcba58ab312ea9ed72de4f2937 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-attribute-value-change-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductOffering } from './product-offering'; + +/** + * The event data structure + */ +export interface ProductOfferingAttributeValueChangeEventPayload { + + /** + * The involved resource data for the event + */ + productOffering?: ProductOffering; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-attribute-value-change-event.ts b/src/app/openApis/productCatalogManagement/models/product-offering-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..06b5eeda53fd217929221473643be3a0363e0335 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-attribute-value-change-event.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { ProductOfferingAttributeValueChangeEventPayload } from './product-offering-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface ProductOfferingAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductOfferingAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-create-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-offering-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..544a9454b3989844ddc945a42c2d1bdbeceb41ce --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-create-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductOffering } from './product-offering'; + +/** + * The event data structure + */ +export interface ProductOfferingCreateEventPayload { + + /** + * The involved resource data for the event + */ + productOffering?: ProductOffering; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-create-event.ts b/src/app/openApis/productCatalogManagement/models/product-offering-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..46e816b9e5d64a7378c8361c1a0b4fdb3eeb637a --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-create-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ProductOfferingCreateEventPayload } from './product-offering-create-event-payload'; + +/** + * The notification data structure + */ +export interface ProductOfferingCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductOfferingCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-create.ts b/src/app/openApis/productCatalogManagement/models/product-offering-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..d74b5b08fb12c4b0c3dc99f8bdc27a9b014ca099 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-create.ts @@ -0,0 +1,152 @@ +/* tslint:disable */ +import { AgreementRef } from './agreement-ref'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { BundledProductOfferingReq } from './bundled-product-offering-req'; +import { CategoryRef } from './category-ref'; +import { ChannelRefReq } from './channel-ref-req'; +import { MarketSegmentRefReq } from './market-segment-ref-req'; +import { PlaceRef } from './place-ref'; +import { ProductSpecificationCharacteristicValueUseReq } from './product-specification-characteristic-value-use-req'; +import { ProductOfferingPriceRefReq } from './product-offering-price-ref-req'; +import { ProductOfferingTermReq } from './product-offering-term-req'; +import { ProductSpecificationRefReq } from './product-specification-ref-req'; +import { ResourceCandidateRefReq } from './resource-candidate-ref-req'; +import { ServiceCandidateRefReq } from './service-candidate-ref-req'; +import { SLARefReq } from './slaref-req'; +import { TimePeriod } from './time-period'; + +/** + * Represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Skipped properties: id,href + */ +export interface ProductOfferingCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. + */ + agreement?: Array; + + /** + * Complements the description of an element (for instance a product) through video, pictures... + */ + attachment?: Array; + + /** + * A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering. + */ + bundledProductOffering?: Array; + + /** + * The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. + */ + category?: Array; + + /** + * The channel defines the channel for selling product offerings. + */ + channel?: Array; + + /** + * Description of the productOffering + */ + description?: string; + + /** + * isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true). + */ + isBundle?: boolean; + + /** + * A flag indicating if this product offer can be sold stand-alone for sale or not. If this flag is false it indicates that the offer can only be sold within a bundle. + */ + isSellable?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth. + */ + marketSegment?: Array; + + /** + * Name of the productOffering + */ + name?: string; + + /** + * Place defines the places where the products are sold or delivered. + */ + place?: Array; + + /** + * A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics. + */ + prodSpecCharValueUse?: Array; + + /** + * An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time and may not represent the actual price paid by a customer. + */ + productOfferingPrice?: Array; + + /** + * A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods. + */ + productOfferingTerm?: Array; + + /** + * A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ + productSpecification?: ProductSpecificationRefReq; + + /** + * A resource candidate is an entity that makes a ResourceSpecification available to a catalog. + */ + resourceCandidate?: ResourceCandidateRefReq; + + /** + * ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. + */ + serviceCandidate?: ServiceCandidateRefReq; + + /** + * A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service. + */ + serviceLevelAgreement?: SLARefReq; + + /** + * A string providing a complementary information on the value of the lifecycle status attribute. + */ + statusReason?: string; + + /** + * The period for which the productOffering is valid + */ + validFor?: TimePeriod; + + /** + * ProductOffering version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-delete-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-offering-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..76113561b892d1496520d87206719bbfe6c30b85 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-delete-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductOffering } from './product-offering'; + +/** + * The event data structure + */ +export interface ProductOfferingDeleteEventPayload { + + /** + * The involved resource data for the event + */ + productOffering?: ProductOffering; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-delete-event.ts b/src/app/openApis/productCatalogManagement/models/product-offering-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..32d80ccff27d701652eec72b91dba126ebca2118 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-delete-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ProductOfferingDeleteEventPayload } from './product-offering-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ProductOfferingDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductOfferingDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-attribute-value-change-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..d9eaf715a55be2f372018d8d69fcd2bf6c19db4a --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-attribute-value-change-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductOfferingPrice } from './product-offering-price'; + +/** + * The event data structure + */ +export interface ProductOfferingPriceAttributeValueChangeEventPayload { + + /** + * The involved resource data for the event + */ + productOfferingPrice?: ProductOfferingPrice; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-attribute-value-change-event.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..a34c919a71440813106921cf0e2fa653655c95e1 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-attribute-value-change-event.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { ProductOfferingPriceAttributeValueChangeEventPayload } from './product-offering-price-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface ProductOfferingPriceAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductOfferingPriceAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-create-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..06003cf822efb21d3845fe92f7e5f20e75a118af --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-create-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductOfferingPrice } from './product-offering-price'; + +/** + * The event data structure + */ +export interface ProductOfferingPriceCreateEventPayload { + + /** + * The involved resource data for the event + */ + productOfferingPrice?: ProductOfferingPrice; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-create-event.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..e5642c42cac6a8ceb8ffede17fdd76088c543deb --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-create-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ProductOfferingPriceCreateEventPayload } from './product-offering-price-create-event-payload'; + +/** + * The notification data structure + */ +export interface ProductOfferingPriceCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductOfferingPriceCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-create.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..d0b1f56336dae28e7079ad3e61af57dd82a2f651 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-create.ts @@ -0,0 +1,138 @@ +/* tslint:disable */ +import { BundledProductOfferingPriceRelationshipReq } from './bundled-product-offering-price-relationship-req'; +import { ConstraintRefReq } from './constraint-ref-req'; +import { PlaceRef } from './place-ref'; +import { ProductOfferingPriceRelationshipReq } from './product-offering-price-relationship-req'; +import { Money } from './money'; +import { PricingLogicAlgorithmReq } from './pricing-logic-algorithm-req'; +import { ProductSpecificationCharacteristicValueUseReq } from './product-specification-characteristic-value-use-req'; +import { ProductOfferingTermReq } from './product-offering-term-req'; +import { TaxItem } from './tax-item'; +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * Is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price may be further revised through discounting (productOfferPriceAlteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected, eg: a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment. Skipped properties: id,href + */ +export interface ProductOfferingPriceCreate { + + /** + * the immediate base class type of this product offering + */ + '@baseType'?: string; + + /** + * hyperlink reference to the schema describing this resource + */ + '@schemaLocation'?: string; + + /** + * The class type of this Product offering + */ + '@type'?: string; + + /** + * this object represents a bundle relationship from a bundle product offering price (parent) to a simple product offering price (child). A simple product offering price may participate in more than one bundle relationship. + */ + bundledPopRelationship?: Array; + + /** + * The Constraint resource represents a policy/rule applied to ProductOfferingPrice. + */ + constraint?: Array; + + /** + * Description of the productOfferingPrice + */ + description?: string; + + /** + * A flag indicating if this ProductOfferingPrice is composite (bundle) or not + */ + isBundle?: boolean; + + /** + * the last update time of this ProductOfferingPrice + */ + lastUpdate?: string; + + /** + * the lifecycle status of this ProductOfferingPrice + */ + lifecycleStatus?: string; + + /** + * Name of the productOfferingPrice + */ + name?: string; + + /** + * Percentage to apply for ProductOfferPriceAlteration (Discount) + */ + percentage?: number; + + /** + * Place defines the places where the products are sold or delivered. + */ + place?: Array; + + /** + * Product Offering Prices related to this Product Offering Price, for example a price alteration such as allowance or discount + */ + popRelationship?: Array; + + /** + * The amount of money that characterizes the price. + */ + price?: Money; + + /** + * A category that describes the price, such as recurring, discount, allowance, penalty, and so forth. + */ + priceType?: string; + + /** + * The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled behavior in SID). Some of the parameters of the interface definition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth). + */ + pricingLogicAlgorithm?: Array; + + /** + * A use of the ProductSpecificationCharacteristicValue by a ProductOfferingPrice to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering and ProcuctOfferingPrice level. The list of values in ProductSpecificationCharacteristicValueUse is a strict subset of the list of values as defined in the corresponding product specification characteristics. + */ + prodSpecCharValueUse?: Array; + + /** + * A list of conditions under which a ProductOfferingPrice is made available to Customers. For instance, a Product Offering Price can be offered with multiple commitment periods. + */ + productOfferingTerm?: Array; + + /** + * the period of the recurring charge: 1, 2, ... .It sets to zero if it is not applicable + */ + recurringChargePeriodLength?: number; + + /** + * The period to repeat the application of the price Could be month, week... + */ + recurringChargePeriodType?: string; + + /** + * An amount of money levied on the price of a Product by a legislative body. + */ + tax?: Array; + + /** + * A number and unit representing how many (for instance 1 dozen) of an ProductOffering is available at the offered price. Its meaning depends on the priceType. It could be a price, a rate, or a discount. + */ + unitOfMeasure?: Quantity; + + /** + * The period for which the productOfferingPrice is valid + */ + validFor?: TimePeriod; + + /** + * ProductOffering version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-delete-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..df63448e750acb8d16797f99dba64e102f9a5ed1 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-delete-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductOfferingPrice } from './product-offering-price'; + +/** + * The event data structure + */ +export interface ProductOfferingPriceDeleteEventPayload { + + /** + * The involved resource data for the event + */ + productOfferingPrice?: ProductOfferingPrice; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-delete-event.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..0767b26b8d134e328e02eb5937a7dc0585fc96d6 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-delete-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ProductOfferingPriceDeleteEventPayload } from './product-offering-price-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ProductOfferingPriceDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductOfferingPriceDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-ref-req.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-ref-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..349f3c06dcb6a7deb9aef06d59b9bc4ac2e12b86 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-ref-req.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased + */ +export interface ProductOfferingPriceRefReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-ref-res.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-ref-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..9eb010a13ccb000d15a8157ae122b1edd2780755 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-ref-res.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased + */ +export interface ProductOfferingPriceRefRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-relationship-req.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..f9e3a110dc6ca90ec3caaf2eb4d7549deb32de0c --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-relationship-req.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Describes a non-composite relationship between product offering prices. For example one price might be an discount alteration for another price. + */ +export interface ProductOfferingPriceRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the associated product offering price + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + + /** + * type of the relationship, for example override, discount, etc. + */ + relationshipType?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-relationship-res.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..256dad54391f641382a4f37a4f6d4df5895fdaac --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-relationship-res.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Describes a non-composite relationship between product offering prices. For example one price might be an discount alteration for another price. + */ +export interface ProductOfferingPriceRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the associated product offering price + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * type of the relationship, for example override, discount, etc. + */ + relationshipType?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-state-change-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..82b3b803d08f1f0c598787a657926d6c2ecb9b74 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-state-change-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductOfferingPrice } from './product-offering-price'; + +/** + * The event data structure + */ +export interface ProductOfferingPriceStateChangeEventPayload { + + /** + * The involved resource data for the event + */ + productOfferingPrice?: ProductOfferingPrice; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-state-change-event.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..c96c68cbecd7d2a9d6b25ea7b7cc94b9a8fcee0f --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-state-change-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ProductOfferingPriceStateChangeEventPayload } from './product-offering-price-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface ProductOfferingPriceStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductOfferingPriceStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price-update.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..0123c3fbdd870d65ee022e7c49fe969cbba13b15 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price-update.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +import { BundledProductOfferingPriceRelationshipReq } from './bundled-product-offering-price-relationship-req'; +import { ConstraintRefReq } from './constraint-ref-req'; +import { PlaceRef } from './place-ref'; +import { ProductOfferingPriceRelationshipReq } from './product-offering-price-relationship-req'; +import { Money } from './money'; +import { PricingLogicAlgorithmReq } from './pricing-logic-algorithm-req'; +import { ProductSpecificationCharacteristicValueUseReq } from './product-specification-characteristic-value-use-req'; +import { ProductOfferingTermReq } from './product-offering-term-req'; +import { TaxItem } from './tax-item'; +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * Is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price may be further revised through discounting (productOfferPriceAlteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected, eg: a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment. Skipped properties: id,href,lastUpdate + */ +export interface ProductOfferingPriceUpdate { + + /** + * the immediate base class type of this product offering + */ + '@baseType'?: string; + + /** + * hyperlink reference to the schema describing this resource + */ + '@schemaLocation'?: string; + + /** + * The class type of this Product offering + */ + '@type'?: string; + + /** + * this object represents a bundle relationship from a bundle product offering price (parent) to a simple product offering price (child). A simple product offering price may participate in more than one bundle relationship. + */ + bundledPopRelationship?: Array; + + /** + * The Constraint resource represents a policy/rule applied to ProductOfferingPrice. + */ + constraint?: Array; + + /** + * Description of the productOfferingPrice + */ + description?: string; + + /** + * A flag indicating if this ProductOfferingPrice is composite (bundle) or not + */ + isBundle?: boolean; + + /** + * the lifecycle status of this ProductOfferingPrice + */ + lifecycleStatus?: string; + + /** + * Name of the productOfferingPrice + */ + name?: string; + + /** + * Percentage to apply for ProductOfferPriceAlteration (Discount) + */ + percentage?: number; + + /** + * Place defines the places where the products are sold or delivered. + */ + place?: Array; + + /** + * Product Offering Prices related to this Product Offering Price, for example a price alteration such as allowance or discount + */ + popRelationship?: Array; + + /** + * The amount of money that characterizes the price. + */ + price?: Money; + + /** + * A category that describes the price, such as recurring, discount, allowance, penalty, and so forth. + */ + priceType?: string; + + /** + * The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled behavior in SID). Some of the parameters of the interface definition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth). + */ + pricingLogicAlgorithm?: Array; + + /** + * A use of the ProductSpecificationCharacteristicValue by a ProductOfferingPrice to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering and ProcuctOfferingPrice level. The list of values in ProductSpecificationCharacteristicValueUse is a strict subset of the list of values as defined in the corresponding product specification characteristics. + */ + prodSpecCharValueUse?: Array; + + /** + * A list of conditions under which a ProductOfferingPrice is made available to Customers. For instance, a Product Offering Price can be offered with multiple commitment periods. + */ + productOfferingTerm?: Array; + + /** + * the period of the recurring charge: 1, 2, ... .It sets to zero if it is not applicable + */ + recurringChargePeriodLength?: number; + + /** + * The period to repeat the application of the price Could be month, week... + */ + recurringChargePeriodType?: string; + + /** + * An amount of money levied on the price of a Product by a legislative body. + */ + tax?: Array; + + /** + * A number and unit representing how many (for instance 1 dozen) of an ProductOffering is available at the offered price. Its meaning depends on the priceType. It could be a price, a rate, or a discount. + */ + unitOfMeasure?: Quantity; + + /** + * The period for which the productOfferingPrice is valid + */ + validFor?: TimePeriod; + + /** + * ProductOffering version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-price.ts b/src/app/openApis/productCatalogManagement/models/product-offering-price.ts new file mode 100644 index 0000000000000000000000000000000000000000..a57373bc53afc64ee10b26d9a17315b91f9b0c9f --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-price.ts @@ -0,0 +1,145 @@ +/* tslint:disable */ +import { BundledProductOfferingPriceRelationshipRes } from './bundled-product-offering-price-relationship-res'; +import { ConstraintRefRes } from './constraint-ref-res'; +import { PlaceRef } from './place-ref'; +import { ProductOfferingPriceRelationshipRes } from './product-offering-price-relationship-res'; +import { Money } from './money'; +import { PricingLogicAlgorithmRes } from './pricing-logic-algorithm-res'; +import { ProductSpecificationCharacteristicValueUseRes } from './product-specification-characteristic-value-use-res'; +import { ProductOfferingTermRes } from './product-offering-term-res'; +import { TaxItem } from './tax-item'; +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * Is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price may be further revised through discounting (productOfferPriceAlteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected, eg: a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment. + */ +export interface ProductOfferingPrice { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * this object represents a bundle relationship from a bundle product offering price (parent) to a simple product offering price (child). A simple product offering price may participate in more than one bundle relationship. + */ + bundledPopRelationship?: Array; + + /** + * The Constraint resource represents a policy/rule applied to ProductOfferingPrice. + */ + constraint?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * unique id of this resource + */ + id?: string; + + /** + * A flag indicating if this ProductOfferingPrice is composite (bundle) or not + */ + isBundle?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Percentage to apply for ProductOfferPriceAlteration (Discount) + */ + percentage?: number; + + /** + * Place defines the places where the products are sold or delivered. + */ + place?: Array; + + /** + * Product Offering Prices related to this Product Offering Price, for example a price alteration such as allowance or discount + */ + popRelationship?: Array; + + /** + * The amount of money that characterizes the price. + */ + price?: Money; + + /** + * A category that describes the price, such as recurring, discount, allowance, penalty, and so forth. + */ + priceType?: string; + + /** + * The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled behavior in SID). Some of the parameters of the interface definition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth). + */ + pricingLogicAlgorithm?: Array; + + /** + * A use of the ProductSpecificationCharacteristicValue by a ProductOfferingPrice to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering and ProcuctOfferingPrice level. The list of values in ProductSpecificationCharacteristicValueUse is a strict subset of the list of values as defined in the corresponding product specification characteristics. + */ + prodSpecCharValueUse?: Array; + + /** + * A list of conditions under which a ProductOfferingPrice is made available to Customers. For instance, a Product Offering Price can be offered with multiple commitment periods. + */ + productOfferingTerm?: Array; + + /** + * the period of the recurring charge: 1, 2, ... .It sets to zero if it is not applicable + */ + recurringChargePeriodLength?: number; + + /** + * The period to repeat the application of the price Could be month, week... + */ + recurringChargePeriodType?: string; + + /** + * An amount of money levied on the price of a Product by a legislative body. + */ + tax?: Array; + + /** + * A number and unit representing how many (for instance 1 dozen) of an ProductOffering is available at the offered price. Its meaning depends on the priceType. It could be a price, a rate, or a discount. + */ + unitOfMeasure?: Quantity; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-ref.ts b/src/app/openApis/productCatalogManagement/models/product-offering-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..5a14bda3cc6d56eaa41878514b8e4d2684410166 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-ref.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ + +/** + * ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. + */ +export interface ProductOfferingRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the entity + */ + name?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-state-change-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-offering-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..807f754829373a080ef2ed33473553b89cbc50f8 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-state-change-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductOffering } from './product-offering'; + +/** + * The event data structure + */ +export interface ProductOfferingStateChangeEventPayload { + + /** + * The involved resource data for the event + */ + productOffering?: ProductOffering; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-state-change-event.ts b/src/app/openApis/productCatalogManagement/models/product-offering-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..34618f063d79383c9d10d69e82cd07d5ab4585c0 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-state-change-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ProductOfferingStateChangeEventPayload } from './product-offering-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface ProductOfferingStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductOfferingStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-term-req.ts b/src/app/openApis/productCatalogManagement/models/product-offering-term-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..a150323e4e61c2c24a6737d0650a4b6a7a8a5d59 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-term-req.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods. + */ +export interface ProductOfferingTermReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Duration of the productOfferingTerm + */ + duration?: Quantity; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-term-res.ts b/src/app/openApis/productCatalogManagement/models/product-offering-term-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..15fc1f552e91306e161acc6a9cce9ab1e59ea842 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-term-res.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods. + */ +export interface ProductOfferingTermRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Duration of the productOfferingTerm + */ + duration?: Quantity; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering-update.ts b/src/app/openApis/productCatalogManagement/models/product-offering-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..5591c3e83898661735d5d7e335ce3bd28e7d695b --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering-update.ts @@ -0,0 +1,147 @@ +/* tslint:disable */ +import { AgreementRef } from './agreement-ref'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { BundledProductOfferingReq } from './bundled-product-offering-req'; +import { CategoryRef } from './category-ref'; +import { ChannelRefReq } from './channel-ref-req'; +import { MarketSegmentRefReq } from './market-segment-ref-req'; +import { PlaceRef } from './place-ref'; +import { ProductSpecificationCharacteristicValueUseReq } from './product-specification-characteristic-value-use-req'; +import { ProductOfferingPriceRefReq } from './product-offering-price-ref-req'; +import { ProductOfferingTermReq } from './product-offering-term-req'; +import { ProductSpecificationRefReq } from './product-specification-ref-req'; +import { ResourceCandidateRefReq } from './resource-candidate-ref-req'; +import { ServiceCandidateRefReq } from './service-candidate-ref-req'; +import { SLARefReq } from './slaref-req'; +import { TimePeriod } from './time-period'; + +/** + * Represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Skipped properties: id,href,lastUpdate + */ +export interface ProductOfferingUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. + */ + agreement?: Array; + + /** + * Complements the description of an element (for instance a product) through video, pictures... + */ + attachment?: Array; + + /** + * A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering. + */ + bundledProductOffering?: Array; + + /** + * The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. + */ + category?: Array; + + /** + * The channel defines the channel for selling product offerings. + */ + channel?: Array; + + /** + * Description of the productOffering + */ + description?: string; + + /** + * isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true). + */ + isBundle?: boolean; + + /** + * A flag indicating if this product offer can be sold stand-alone for sale or not. If this flag is false it indicates that the offer can only be sold within a bundle. + */ + isSellable?: boolean; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth. + */ + marketSegment?: Array; + + /** + * Name of the productOffering + */ + name?: string; + + /** + * Place defines the places where the products are sold or delivered. + */ + place?: Array; + + /** + * A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics. + */ + prodSpecCharValueUse?: Array; + + /** + * An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time and may not represent the actual price paid by a customer. + */ + productOfferingPrice?: Array; + + /** + * A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods. + */ + productOfferingTerm?: Array; + + /** + * A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ + productSpecification?: ProductSpecificationRefReq; + + /** + * A resource candidate is an entity that makes a ResourceSpecification available to a catalog. + */ + resourceCandidate?: ResourceCandidateRefReq; + + /** + * ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. + */ + serviceCandidate?: ServiceCandidateRefReq; + + /** + * A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service. + */ + serviceLevelAgreement?: SLARefReq; + + /** + * A string providing a complementary information on the value of the lifecycle status attribute. + */ + statusReason?: string; + + /** + * The period for which the productOffering is valid + */ + validFor?: TimePeriod; + + /** + * ProductOffering version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-offering.ts b/src/app/openApis/productCatalogManagement/models/product-offering.ts new file mode 100644 index 0000000000000000000000000000000000000000..80d8a6663c9f167ef18dcaf5a9cbe46b53d39b53 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-offering.ts @@ -0,0 +1,159 @@ +/* tslint:disable */ +import { AgreementRef } from './agreement-ref'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { BundledProductOfferingRes } from './bundled-product-offering-res'; +import { CategoryRef } from './category-ref'; +import { ChannelRefRes } from './channel-ref-res'; +import { MarketSegmentRefRes } from './market-segment-ref-res'; +import { PlaceRef } from './place-ref'; +import { ProductSpecificationCharacteristicValueUseRes } from './product-specification-characteristic-value-use-res'; +import { ProductOfferingPriceRefRes } from './product-offering-price-ref-res'; +import { ProductOfferingTermRes } from './product-offering-term-res'; +import { ProductSpecificationRefRes } from './product-specification-ref-res'; +import { ResourceCandidateRefRes } from './resource-candidate-ref-res'; +import { ServiceCandidateRefRes } from './service-candidate-ref-res'; +import { SLARefRes } from './slaref-res'; +import { TimePeriod } from './time-period'; + +/** + * Represents entities that are orderable from the provider of the catalog, this resource includes pricing information. + */ +export interface ProductOffering { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. + */ + agreement?: Array; + + /** + * Complements the description of an element (for instance a product) through video, pictures... + */ + attachment?: Array; + + /** + * A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering. + */ + bundledProductOffering?: Array; + + /** + * The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. + */ + category?: Array; + + /** + * The channel defines the channel for selling product offerings. + */ + channel?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the productOffering + */ + id?: string; + + /** + * isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true). + */ + isBundle?: boolean; + + /** + * A flag indicating if this product offer can be sold stand-alone for sale or not. If this flag is false it indicates that the offer can only be sold within a bundle. + */ + isSellable?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth. + */ + marketSegment?: Array; + + /** + * Name of the entity + */ + name?: string; + + /** + * Place defines the places where the products are sold or delivered. + */ + place?: Array; + + /** + * A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics. + */ + prodSpecCharValueUse?: Array; + + /** + * An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time and may not represent the actual price paid by a customer. + */ + productOfferingPrice?: Array; + + /** + * A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods. + */ + productOfferingTerm?: Array; + + /** + * A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ + productSpecification?: ProductSpecificationRefRes; + + /** + * A resource candidate is an entity that makes a ResourceSpecification available to a catalog. + */ + resourceCandidate?: ResourceCandidateRefRes; + + /** + * ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. + */ + serviceCandidate?: ServiceCandidateRefRes; + + /** + * A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service. + */ + serviceLevelAgreement?: SLARefRes; + + /** + * A string providing a complementary information on the value of the lifecycle status attribute. + */ + statusReason?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-relationship-req.ts b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..7d199103f068936347b2f68b2e8ca9e309d5a36c --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-relationship-req.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among productSpecificationCharacteristics. + */ +export interface ProductSpecificationCharacteristicRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The order in which a CharacteristicSpecification appears within another CharacteristicSpecification that defines a grouping of CharacteristicSpecifications. For example, a grouping may represent the name of an individual. The given name is first, the middle name is second, and the last name is third. + */ + charSpecSeq?: number; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * the identifier of the associated product specification + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + + /** + * Type of relationship such as aggregation, migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-relationship-res.ts b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..8934e25d94722b5b63a0905001361888de4af8cc --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-relationship-res.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among productSpecificationCharacteristics. + */ +export interface ProductSpecificationCharacteristicRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The order in which a CharacteristicSpecification appears within another CharacteristicSpecification that defines a grouping of CharacteristicSpecifications. For example, a grouping may represent the name of an individual. The given name is first, the middle name is second, and the last name is third. + */ + charSpecSeq?: number; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * the identifier of the associated product specification + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Type of relationship such as aggregation, migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-req.ts b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..65ebbbe7f6c2cc9b3a262674a28e9e8c0cefc3ad --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-req.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +import { ProductSpecificationCharacteristicRelationshipReq } from './product-specification-characteristic-relationship-req'; +import { ProductSpecificationCharacteristicValue } from './product-specification-characteristic-value'; +import { TimePeriod } from './time-period'; + +/** + * A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process. + */ +export interface ProductSpecificationCharacteristicReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * If true, the Boolean indicates that the ProductSpecificationCharacteristic is configurable + */ + configurable?: boolean; + + /** + * Description of this catalog + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a product + */ + extensible?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * An indicator that specifies if a value is unique for the specification. Possible values are; "unique while value is in effect" and "unique whether value is in effect or not" + */ + isUnique?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality + */ + minCardinality?: number; + + /** + * Name of the entity + */ + name?: string; + + /** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics. + */ + productSpecCharRelationship?: Array; + + /** + * A ProductSpecificationCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. The values of the attributes in the ProductSpecificationCharacteristicValue object describe the values of the attributes that a corresponding ProductSpecificationCharacteristic object can take on. + */ + productSpecCharacteristicValue?: Array; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value + */ + regex?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-res.ts b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..249187d94903a7c69c16a13305a32fb4dea19f67 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-res.ts @@ -0,0 +1,102 @@ +/* tslint:disable */ +import { ProductSpecificationCharacteristicRelationshipRes } from './product-specification-characteristic-relationship-res'; +import { ProductSpecificationCharacteristicValue } from './product-specification-characteristic-value'; +import { TimePeriod } from './time-period'; + +/** + * A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process. + */ +export interface ProductSpecificationCharacteristicRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * If true, the Boolean indicates that the ProductSpecificationCharacteristic is configurable + */ + configurable?: boolean; + + /** + * Description of this catalog + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a product + */ + extensible?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * An indicator that specifies if a value is unique for the specification. Possible values are; "unique while value is in effect" and "unique whether value is in effect or not" + */ + isUnique?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality + */ + minCardinality?: number; + + /** + * Name of the entity + */ + name?: string; + + /** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics. + */ + productSpecCharRelationship?: Array; + + /** + * A ProductSpecificationCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. The values of the attributes in the ProductSpecificationCharacteristicValue object describe the values of the attributes that a corresponding ProductSpecificationCharacteristic object can take on. + */ + productSpecCharacteristicValue?: Array; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value + */ + regex?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value-use-req.ts b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value-use-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..5aa9f06d1146a30e6e012f5de43bae25d28b2225 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value-use-req.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +import { ProductSpecificationCharacteristicValue } from './product-specification-characteristic-value'; +import { ProductSpecificationRefReq } from './product-specification-ref-req'; +import { TimePeriod } from './time-period'; + +/** + * A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics. + */ +export interface ProductSpecificationCharacteristicValueUseReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality. + */ + minCardinality?: number; + + /** + * Name of the entity + */ + name?: string; + + /** + * A number or text that can be assigned to a ProductSpecificationCharacteristic. + */ + productSpecCharacteristicValue?: Array; + + /** + * A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ + productSpecification?: ProductSpecificationRefReq; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value-use-res.ts b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value-use-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..ca6dc508a6a2e18359af7fb6e413f56d85cce783 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value-use-res.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +import { ProductSpecificationCharacteristicValue } from './product-specification-characteristic-value'; +import { ProductSpecificationRefRes } from './product-specification-ref-res'; +import { TimePeriod } from './time-period'; + +/** + * A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics. + */ +export interface ProductSpecificationCharacteristicValueUseRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality. + */ + minCardinality?: number; + + /** + * Name of the entity + */ + name?: string; + + /** + * A number or text that can be assigned to a ProductSpecificationCharacteristic. + */ + productSpecCharacteristicValue?: Array; + + /** + * A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ + productSpecification?: ProductSpecificationRefRes; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value.ts b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..019ff646aa869edc3f17a8ddb65e46a9864dd7eb --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-characteristic-value.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; +import { Any } from './any'; + +/** + * A ProductSpecificationCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. The values of the attributes in the ProductSpecificationCharacteristicValue object describe the values of the attributes that a corresponding ProductSpecificationCharacteristic object can take on. + */ +export interface ProductSpecificationCharacteristicValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Indicates if the value is the default value for a characteristic + */ + isDefault?: boolean; + + /** + * An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are "open", "closed", "closedBottom" and "closedTop". + */ + rangeInterval?: string; + + /** + * Regular expression to define constraint on the allowed value + */ + regex?: string; + + /** + * A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot. + */ + unitOfMeasure?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * A discrete value that the characteristic can take on, or the actual value of the characteristic + */ + value?: Any; + + /** + * The low range value that a characteristic can take on + */ + valueFrom?: string; + + /** + * The upper range value that a characteristic can take on + */ + valueTo?: string; + + /** + * A kind of value that the characteristic can take on, such as numeric, text, and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-create-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-specification-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee81cc4a7635ccdc08fb2aaa72d380c1c8fc77c5 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-create-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductSpecification } from './product-specification'; + +/** + * The event data structure + */ +export interface ProductSpecificationCreateEventPayload { + + /** + * The involved resource data for the event + */ + productSpecification?: ProductSpecification; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-create-event.ts b/src/app/openApis/productCatalogManagement/models/product-specification-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..e512de04c3d02eef433b4c0c26a1fde83ca38f99 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-create-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ProductSpecificationCreateEventPayload } from './product-specification-create-event-payload'; + +/** + * The notification data structure + */ +export interface ProductSpecificationCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductSpecificationCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-create.ts b/src/app/openApis/productCatalogManagement/models/product-specification-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..366effef7aa02b33cc951faa4a8e94c85b43d7a2 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-create.ts @@ -0,0 +1,116 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { BundledProductSpecificationReq } from './bundled-product-specification-req'; +import { ProductSpecificationCharacteristicReq } from './product-specification-characteristic-req'; +import { ProductSpecificationRelationship } from './product-specification-relationship'; +import { RelatedParty } from './related-party'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TargetProductSchema } from './target-product-schema'; +import { TimePeriod } from './time-period'; + +/** + * Is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. Skipped properties: id,href + */ +export interface ProductSpecificationCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Complements the description of an element (for instance a product) through video, pictures... + */ + attachment?: Array; + + /** + * The manufacturer or trademark of the specification + */ + brand?: string; + + /** + * A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification. + */ + bundledProductSpecification?: Array; + + /** + * A narrative that explains in detail what the product specification is + */ + description?: string; + + /** + * isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true). + */ + isBundle?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the product specification + */ + name?: string; + + /** + * An identification number assigned to uniquely identity the specification + */ + productNumber?: string; + + /** + * A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process. + */ + productSpecCharacteristic?: Array; + + /** + * A migration, substitution, dependency or exclusivity relationship between/among product specifications. + */ + productSpecificationRelationship?: Array; + + /** + * A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * The ResourceSpecification is required to realize a ProductSpecification. + */ + resourceSpecification?: Array; + + /** + * ServiceSpecification(s) required to realize a ProductSpecification. + */ + serviceSpecification?: Array; + + /** + * A target product schema reference. The reference object to the schema and type of target product which is described by product specification. + */ + targetProductSchema?: TargetProductSchema; + + /** + * The period for which the product specification is valid + */ + validFor?: TimePeriod; + + /** + * Product specification version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-delete-event-payload.ts b/src/app/openApis/productCatalogManagement/models/product-specification-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..29c075518f2cd3c6ba9cad330688371efe8669f9 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-delete-event-payload.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ProductSpecification } from './product-specification'; + +/** + * The event data structure + */ +export interface ProductSpecificationDeleteEventPayload { + + /** + * The involved resource data for the event + */ + productSpecification?: ProductSpecification; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-delete-event.ts b/src/app/openApis/productCatalogManagement/models/product-specification-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..00d6d64893492a98c2803865663954cdff9367b3 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-delete-event.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ProductSpecificationDeleteEventPayload } from './product-specification-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ProductSpecificationDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + + /** + * The event payload linked to the involved resource object + */ + event?: ProductSpecificationDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-ref-req.ts b/src/app/openApis/productCatalogManagement/models/product-specification-ref-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..892825bd097ac284b4a245e3db6ee9427060c319 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-ref-req.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +import { TargetProductSchema } from './target-product-schema'; +import { TimePeriod } from './time-period'; + +/** + * Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ +export interface ProductSpecificationRefReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + targetProductSchema?: TargetProductSchema; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-ref-res.ts b/src/app/openApis/productCatalogManagement/models/product-specification-ref-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..73f4df5cb1941640dd84d2827478b124f2ec3344 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-ref-res.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { TargetProductSchema } from './target-product-schema'; +import { TimePeriod } from './time-period'; + +/** + * Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ +export interface ProductSpecificationRefRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + targetProductSchema?: TargetProductSchema; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-relationship.ts b/src/app/openApis/productCatalogManagement/models/product-specification-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa6b3d3d41dfc252e26638fadd6f0a35b3b42cbd --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-relationship.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * A migration, substitution, dependency or exclusivity relationship between/among product specifications. + */ +export interface ProductSpecificationRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the productSpecification + */ + id?: string; + + /** + * Type of relationship such as migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + uuid?: string; + + /** + * The period for which the productSpecificationRelationship is valid + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification-update.ts b/src/app/openApis/productCatalogManagement/models/product-specification-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..84944828781eface560aa97f9e75da2148439026 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification-update.ts @@ -0,0 +1,111 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { BundledProductSpecificationReq } from './bundled-product-specification-req'; +import { ProductSpecificationCharacteristicReq } from './product-specification-characteristic-req'; +import { ProductSpecificationRelationship } from './product-specification-relationship'; +import { RelatedParty } from './related-party'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TargetProductSchema } from './target-product-schema'; +import { TimePeriod } from './time-period'; + +/** + * Is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. Skipped properties: id,href,lastUpdate + */ +export interface ProductSpecificationUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Complements the description of an element (for instance a product) through video, pictures... + */ + attachment?: Array; + + /** + * The manufacturer or trademark of the specification + */ + brand?: string; + + /** + * A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification. + */ + bundledProductSpecification?: Array; + + /** + * A narrative that explains in detail what the product specification is + */ + description?: string; + + /** + * isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true). + */ + isBundle?: boolean; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the product specification + */ + name?: string; + + /** + * An identification number assigned to uniquely identity the specification + */ + productNumber?: string; + + /** + * A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process. + */ + productSpecCharacteristic?: Array; + + /** + * A migration, substitution, dependency or exclusivity relationship between/among product specifications. + */ + productSpecificationRelationship?: Array; + + /** + * A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * The ResourceSpecification is required to realize a ProductSpecification. + */ + resourceSpecification?: Array; + + /** + * ServiceSpecification(s) required to realize a ProductSpecification. + */ + serviceSpecification?: Array; + + /** + * A target product schema reference. The reference object to the schema and type of target product which is described by product specification. + */ + targetProductSchema?: TargetProductSchema; + + /** + * The period for which the product specification is valid + */ + validFor?: TimePeriod; + + /** + * Product specification version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/product-specification.ts b/src/app/openApis/productCatalogManagement/models/product-specification.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4b5152ed127eab468c082dd11be67c38a8019e1 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/product-specification.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { BundledProductSpecificationRes } from './bundled-product-specification-res'; +import { ProductSpecificationCharacteristicRes } from './product-specification-characteristic-res'; +import { ProductSpecificationRelationship } from './product-specification-relationship'; +import { RelatedParty } from './related-party'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TargetProductSchema } from './target-product-schema'; +import { TimePeriod } from './time-period'; + +/** + * Is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. + */ +export interface ProductSpecification { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Complements the description of an element (for instance a product) through video, pictures... + */ + attachment?: Array; + + /** + * The manufacturer or trademark of the specification + */ + brand?: string; + + /** + * A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification. + */ + bundledProductSpecification?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the product specification + */ + id?: string; + + /** + * isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true). + */ + isBundle?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * An identification number assigned to uniquely identity the specification + */ + productNumber?: string; + + /** + * A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process. + */ + productSpecCharacteristic?: Array; + + /** + * A migration, substitution, dependency or exclusivity relationship between/among product specifications. + */ + productSpecificationRelationship?: Array; + + /** + * A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * The ResourceSpecification is required to realize a ProductSpecification. + */ + resourceSpecification?: Array; + + /** + * ServiceSpecification(s) required to realize a ProductSpecification. + */ + serviceSpecification?: Array; + + /** + * A target product schema reference. The reference object to the schema and type of target product which is described by product specification. + */ + targetProductSchema?: TargetProductSchema; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/quantity.ts b/src/app/openApis/productCatalogManagement/models/quantity.ts new file mode 100644 index 0000000000000000000000000000000000000000..d24c6b3f0543bd1702e42db0f4929b813bd165d8 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/quantity.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * An amount in a given unit + */ +export interface Quantity { + + /** + * Numeric value in a given unit + */ + amount?: number; + + /** + * Unit + */ + units?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/related-party.ts b/src/app/openApis/productCatalogManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..b80038dfc630f883910eac884192f0eb46d75199 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/resource-candidate-ref-req.ts b/src/app/openApis/productCatalogManagement/models/resource-candidate-ref-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..b8ff76f7408b058a50e5ac0658c8bfcf9c62fdb4 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/resource-candidate-ref-req.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * ResourceCandidate reference: A resource candidate is an entity that makes a ResourceSpecification available to a catalog. + */ +export interface ResourceCandidateRefReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the resource candidate + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/resource-candidate-ref-res.ts b/src/app/openApis/productCatalogManagement/models/resource-candidate-ref-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..86ace228a5504ee0dc0ca138b8672ae2c7ff6bae --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/resource-candidate-ref-res.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * ResourceCandidate reference: A resource candidate is an entity that makes a ResourceSpecification available to a catalog. + */ +export interface ResourceCandidateRefRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the resource candidate + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/resource-specification-ref.ts b/src/app/openApis/productCatalogManagement/models/resource-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..ac9d833d3343e0a7dd31dc4ec63f55472683cd7a --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/resource-specification-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Resource Specification reference: The ResourceSpecification is required to realize a ProductSpecification. + */ +export interface ResourceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Resource specification version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/service-candidate-ref-req.ts b/src/app/openApis/productCatalogManagement/models/service-candidate-ref-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..b429b0bc61934f48fc91628fdddbdcedbd5c18d3 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/service-candidate-ref-req.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * ServiceCandidate reference. ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. + */ +export interface ServiceCandidateRefReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the service candidate + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/service-candidate-ref-res.ts b/src/app/openApis/productCatalogManagement/models/service-candidate-ref-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ecf0cb713474c501943315b037788a18026da49 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/service-candidate-ref-res.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * ServiceCandidate reference. ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. + */ +export interface ServiceCandidateRefRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the service candidate + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/service-specification-ref.ts b/src/app/openApis/productCatalogManagement/models/service-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..549a3c1bfda53fea5ce38bdebc24e7aecf8facc2 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/service-specification-ref.ts @@ -0,0 +1,45 @@ +/* tslint:disable */ +import { TargetServiceSchema } from './target-service-schema'; + +/** + * Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification. + */ +export interface ServiceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/slaref-req.ts b/src/app/openApis/productCatalogManagement/models/slaref-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..18aa1266065dca40882f38a2171b4b0b3937abc8 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/slaref-req.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * ServiceLevelAgreement reference: A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service. + */ +export interface SLARefReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of service level agreement + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/slaref-res.ts b/src/app/openApis/productCatalogManagement/models/slaref-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a2c655830f24bf58f6c0ec3b6b264e54ee3fac5 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/slaref-res.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * ServiceLevelAgreement reference: A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service. + */ +export interface SLARefRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of service level agreement + */ + id: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/target-product-schema.ts b/src/app/openApis/productCatalogManagement/models/target-product-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..dc3bbf06b89202915899ebf54862add759af1c54 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/target-product-schema.ts @@ -0,0 +1,23 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target product which is described by product specification + */ +export interface TargetProductSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/target-service-schema.ts b/src/app/openApis/productCatalogManagement/models/target-service-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4887bf9c9dd0e25c992a00348c805792cf20349 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/target-service-schema.ts @@ -0,0 +1,24 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target service which is described by service specification + */ +export interface TargetServiceSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/tax-item.ts b/src/app/openApis/productCatalogManagement/models/tax-item.ts new file mode 100644 index 0000000000000000000000000000000000000000..10b30381e6e2c57bc8e7d85feb80ebf60d2e605c --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/tax-item.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { Money } from './money'; + +/** + * A tax item is created for each tax rate and tax type used in the bill. + */ +export interface TaxItem { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Amount of tax expressed in the given currency + */ + taxAmount?: Money; + + /** + * Tax category + */ + taxCategory?: string; + + /** + * Applied rate of the tax + */ + taxRate?: number; + uuid?: string; +} diff --git a/src/app/openApis/productCatalogManagement/models/time-period.ts b/src/app/openApis/productCatalogManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/productCatalogManagement/services.ts b/src/app/openApis/productCatalogManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..a69f8e1e51af45ca6f6fb11e69e587454d5f5f42 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services.ts @@ -0,0 +1,9 @@ +export { CatalogService } from './services/catalog.service'; +export { CategoryService } from './services/category.service'; +export { ExportJobService } from './services/export-job.service'; +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { ImportJobService } from './services/import-job.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ProductOfferingService } from './services/product-offering.service'; +export { ProductOfferingPriceService } from './services/product-offering-price.service'; +export { ProductSpecificationService } from './services/product-specification.service'; diff --git a/src/app/openApis/productCatalogManagement/services/catalog.service.ts b/src/app/openApis/productCatalogManagement/services/catalog.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..4c55022e5756eb26194d7c634391dd0b5a1c2487 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/catalog.service.ts @@ -0,0 +1,335 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Catalog } from '../models/catalog'; +import { CatalogCreate } from '../models/catalog-create'; +import { CatalogUpdate } from '../models/catalog-update'; +@Injectable({ + providedIn: 'root', +}) +class CatalogService extends __BaseService { + static readonly listCatalogPath = '/productCatalogManagement/v4/catalog'; + static readonly createCatalogPath = '/productCatalogManagement/v4/catalog'; + static readonly retrieveCatalogPath = '/productCatalogManagement/v4/catalog/{id}'; + static readonly deleteCatalogPath = '/productCatalogManagement/v4/catalog/{id}'; + static readonly patchCatalogPath = '/productCatalogManagement/v4/catalog/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find Catalog objects + * + * This operation list or find Catalog entities + * @param params The `CatalogService.ListCatalogParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listCatalogResponse(params: CatalogService.ListCatalogParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/catalog`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find Catalog objects + * + * This operation list or find Catalog entities + * @param params The `CatalogService.ListCatalogParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listCatalog(params: CatalogService.ListCatalogParams): __Observable> { + return this.listCatalogResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a Catalog + * + * This operation creates a Catalog entity. + * @param catalog The Catalog to be created + * @return OK or Created + */ + createCatalogResponse(catalog: CatalogCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = catalog; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/catalog`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a Catalog + * + * This operation creates a Catalog entity. + * @param catalog The Catalog to be created + * @return OK or Created + */ + createCatalog(catalog: CatalogCreate): __Observable { + return this.createCatalogResponse(catalog).pipe( + __map(_r => _r.body as Catalog | Catalog) + ); + } + + /** + * Retrieves a Catalog by ID + * + * This operation retrieves a Catalog entity. Attribute selection is enabled for all first level attributes. + * @param params The `CatalogService.RetrieveCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the Catalog + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveCatalogResponse(params: CatalogService.RetrieveCatalogParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/catalog/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a Catalog by ID + * + * This operation retrieves a Catalog entity. Attribute selection is enabled for all first level attributes. + * @param params The `CatalogService.RetrieveCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the Catalog + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveCatalog(params: CatalogService.RetrieveCatalogParams): __Observable { + return this.retrieveCatalogResponse(params).pipe( + __map(_r => _r.body as Catalog) + ); + } + + /** + * Deletes a Catalog + * + * This operation deletes a Catalog entity. + * @param id Identifier of the Catalog + * @return Deleted + */ + deleteCatalogResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/productCatalogManagement/v4/catalog/${encodeURIComponent(String(id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a Catalog + * + * This operation deletes a Catalog entity. + * @param id Identifier of the Catalog + * @return Deleted + */ + deleteCatalog(id: string): __Observable<{}> { + return this.deleteCatalogResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a Catalog + * + * This operation updates partially a Catalog entity. + * @param params The `CatalogService.PatchCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the Catalog + * + * - `catalog`: The Catalog to be updated + * + * @return Updated + */ + patchCatalogResponse(params: CatalogService.PatchCatalogParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.catalog; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/productCatalogManagement/v4/catalog/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a Catalog + * + * This operation updates partially a Catalog entity. + * @param params The `CatalogService.PatchCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the Catalog + * + * - `catalog`: The Catalog to be updated + * + * @return Updated + */ + patchCatalog(params: CatalogService.PatchCatalogParams): __Observable { + return this.patchCatalogResponse(params).pipe( + __map(_r => _r.body as Catalog) + ); + } +} + +module CatalogService { + + /** + * Parameters for listCatalog + */ + export interface ListCatalogParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveCatalog + */ + export interface RetrieveCatalogParams { + + /** + * Identifier of the Catalog + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchCatalog + */ + export interface PatchCatalogParams { + + /** + * Identifier of the Catalog + */ + id: string; + + /** + * The Catalog to be updated + */ + catalog: CatalogUpdate; + } +} + +export { CatalogService } diff --git a/src/app/openApis/productCatalogManagement/services/category.service.ts b/src/app/openApis/productCatalogManagement/services/category.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..9a9cb141c153d4725d0125addb68b30c621f8c9a --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/category.service.ts @@ -0,0 +1,335 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Category } from '../models/category'; +import { CategoryCreate } from '../models/category-create'; +import { CategoryUpdate } from '../models/category-update'; +@Injectable({ + providedIn: 'root', +}) +class CategoryService extends __BaseService { + static readonly listCategoryPath = '/productCatalogManagement/v4/category'; + static readonly createCategoryPath = '/productCatalogManagement/v4/category'; + static readonly retrieveCategoryPath = '/productCatalogManagement/v4/category/{id}'; + static readonly deleteCategoryPath = '/productCatalogManagement/v4/category/{id}'; + static readonly patchCategoryPath = '/productCatalogManagement/v4/category/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find Category objects + * + * This operation list or find Category entities + * @param params The `CategoryService.ListCategoryParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listCategoryResponse(params: CategoryService.ListCategoryParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/category`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find Category objects + * + * This operation list or find Category entities + * @param params The `CategoryService.ListCategoryParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listCategory(params: CategoryService.ListCategoryParams): __Observable> { + return this.listCategoryResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a Category + * + * This operation creates a Category entity. + * @param category The Category to be created + * @return OK or Created + */ + createCategoryResponse(category: CategoryCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = category; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/category`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a Category + * + * This operation creates a Category entity. + * @param category The Category to be created + * @return OK or Created + */ + createCategory(category: CategoryCreate): __Observable { + return this.createCategoryResponse(category).pipe( + __map(_r => _r.body as Category | Category) + ); + } + + /** + * Retrieves a Category by ID + * + * This operation retrieves a Category entity. Attribute selection is enabled for all first level attributes. + * @param params The `CategoryService.RetrieveCategoryParams` containing the following parameters: + * + * - `id`: Identifier of the Category + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveCategoryResponse(params: CategoryService.RetrieveCategoryParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/category/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a Category by ID + * + * This operation retrieves a Category entity. Attribute selection is enabled for all first level attributes. + * @param params The `CategoryService.RetrieveCategoryParams` containing the following parameters: + * + * - `id`: Identifier of the Category + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveCategory(params: CategoryService.RetrieveCategoryParams): __Observable { + return this.retrieveCategoryResponse(params).pipe( + __map(_r => _r.body as Category) + ); + } + + /** + * Deletes a Category + * + * This operation deletes a Category entity. + * @param id Identifier of the Category + * @return Deleted + */ + deleteCategoryResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/productCatalogManagement/v4/category/${encodeURIComponent(String(id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a Category + * + * This operation deletes a Category entity. + * @param id Identifier of the Category + * @return Deleted + */ + deleteCategory(id: string): __Observable<{}> { + return this.deleteCategoryResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a Category + * + * This operation updates partially a Category entity. + * @param params The `CategoryService.PatchCategoryParams` containing the following parameters: + * + * - `id`: Identifier of the Category + * + * - `category`: The Category to be updated + * + * @return Updated + */ + patchCategoryResponse(params: CategoryService.PatchCategoryParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.category; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/productCatalogManagement/v4/category/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a Category + * + * This operation updates partially a Category entity. + * @param params The `CategoryService.PatchCategoryParams` containing the following parameters: + * + * - `id`: Identifier of the Category + * + * - `category`: The Category to be updated + * + * @return Updated + */ + patchCategory(params: CategoryService.PatchCategoryParams): __Observable { + return this.patchCategoryResponse(params).pipe( + __map(_r => _r.body as Category) + ); + } +} + +module CategoryService { + + /** + * Parameters for listCategory + */ + export interface ListCategoryParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveCategory + */ + export interface RetrieveCategoryParams { + + /** + * Identifier of the Category + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchCategory + */ + export interface PatchCategoryParams { + + /** + * Identifier of the Category + */ + id: string; + + /** + * The Category to be updated + */ + category: CategoryUpdate; + } +} + +export { CategoryService } diff --git a/src/app/openApis/productCatalogManagement/services/events-subscription.service.ts b/src/app/openApis/productCatalogManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..d6ae37cea060dd9fc6f2a403de0cabc2df00f217 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/events-subscription.service.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListenerPath = '/productCatalogManagement/v4/hub'; + static readonly unregisterListenerPath = '/productCatalogManagement/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListenerResponse(data: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener(data: EventSubscriptionInput): __Observable { + return this.registerListenerResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return OK or Deleted + */ + unregisterListenerResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/productCatalogManagement/v4/hub/${encodeURIComponent(String(id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return OK or Deleted + */ + unregisterListener(id: string): __Observable { + return this.unregisterListenerResponse(id).pipe( + __map(_r => _r.body as Error | {}) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/productCatalogManagement/services/export-job.service.ts b/src/app/openApis/productCatalogManagement/services/export-job.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2616cbbbe1ed7819fbc303c309d91b365b3965ca --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/export-job.service.ts @@ -0,0 +1,265 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ExportJob } from '../models/export-job'; +import { ExportJobCreate } from '../models/export-job-create'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class ExportJobService extends __BaseService { + static readonly listExportJobPath = '/productCatalogManagement/v4/exportJob'; + static readonly createExportJobPath = '/productCatalogManagement/v4/exportJob'; + static readonly retrieveExportJobPath = '/productCatalogManagement/v4/exportJob/{id}'; + static readonly deleteExportJobPath = '/productCatalogManagement/v4/exportJob/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ExportJob objects + * + * This operation list or find ExportJob entities + * @param params The `ExportJobService.ListExportJobParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listExportJobResponse(params: ExportJobService.ListExportJobParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/exportJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ExportJob objects + * + * This operation list or find ExportJob entities + * @param params The `ExportJobService.ListExportJobParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listExportJob(params: ExportJobService.ListExportJobParams): __Observable> { + return this.listExportJobResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ExportJob + * + * This operation creates a ExportJob entity. + * @param exportJob The ExportJob to be created + * @return OK or Created + */ + createExportJobResponse(exportJob: ExportJobCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = exportJob; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/exportJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ExportJob + * + * This operation creates a ExportJob entity. + * @param exportJob The ExportJob to be created + * @return OK or Created + */ + createExportJob(exportJob: ExportJobCreate): __Observable { + return this.createExportJobResponse(exportJob).pipe( + __map(_r => _r.body as ExportJob | ExportJob) + ); + } + + /** + * Retrieves a ExportJob by ID + * + * This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ExportJobService.RetrieveExportJobParams` containing the following parameters: + * + * - `id`: Identifier of the ExportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveExportJobResponse(params: ExportJobService.RetrieveExportJobParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/exportJob/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ExportJob by ID + * + * This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ExportJobService.RetrieveExportJobParams` containing the following parameters: + * + * - `id`: Identifier of the ExportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveExportJob(params: ExportJobService.RetrieveExportJobParams): __Observable { + return this.retrieveExportJobResponse(params).pipe( + __map(_r => _r.body as ExportJob) + ); + } + + /** + * Deletes a ExportJob + * + * This operation deletes a ExportJob entity. + * @param id Identifier of the ExportJob + * @return OK or Deleted + */ + deleteExportJobResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/productCatalogManagement/v4/exportJob/${encodeURIComponent(String(id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ExportJob + * + * This operation deletes a ExportJob entity. + * @param id Identifier of the ExportJob + * @return OK or Deleted + */ + deleteExportJob(id: string): __Observable { + return this.deleteExportJobResponse(id).pipe( + __map(_r => _r.body as Error | {}) + ); + } +} + +module ExportJobService { + + /** + * Parameters for listExportJob + */ + export interface ListExportJobParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveExportJob + */ + export interface RetrieveExportJobParams { + + /** + * Identifier of the ExportJob + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { ExportJobService } diff --git a/src/app/openApis/productCatalogManagement/services/import-job.service.ts b/src/app/openApis/productCatalogManagement/services/import-job.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..b7f0be524c71ea3697334dc0818ef26e94d6c7ca --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/import-job.service.ts @@ -0,0 +1,265 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ImportJob } from '../models/import-job'; +import { ImportJobCreate } from '../models/import-job-create'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class ImportJobService extends __BaseService { + static readonly listImportJobPath = '/productCatalogManagement/v4/importJob'; + static readonly createImportJobPath = '/productCatalogManagement/v4/importJob'; + static readonly retrieveImportJobPath = '/productCatalogManagement/v4/importJob/{id}'; + static readonly deleteImportJobPath = '/productCatalogManagement/v4/importJob/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ImportJob objects + * + * This operation list or find ImportJob entities + * @param params The `ImportJobService.ListImportJobParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listImportJobResponse(params: ImportJobService.ListImportJobParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/importJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ImportJob objects + * + * This operation list or find ImportJob entities + * @param params The `ImportJobService.ListImportJobParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listImportJob(params: ImportJobService.ListImportJobParams): __Observable> { + return this.listImportJobResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ImportJob + * + * This operation creates a ImportJob entity. + * @param importJob The ImportJob to be created + * @return OK or Created + */ + createImportJobResponse(importJob: ImportJobCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = importJob; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/importJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ImportJob + * + * This operation creates a ImportJob entity. + * @param importJob The ImportJob to be created + * @return OK or Created + */ + createImportJob(importJob: ImportJobCreate): __Observable { + return this.createImportJobResponse(importJob).pipe( + __map(_r => _r.body as ImportJob | ImportJob) + ); + } + + /** + * Retrieves a ImportJob by ID + * + * This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ImportJobService.RetrieveImportJobParams` containing the following parameters: + * + * - `id`: Identifier of the ImportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveImportJobResponse(params: ImportJobService.RetrieveImportJobParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/importJob/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ImportJob by ID + * + * This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ImportJobService.RetrieveImportJobParams` containing the following parameters: + * + * - `id`: Identifier of the ImportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveImportJob(params: ImportJobService.RetrieveImportJobParams): __Observable { + return this.retrieveImportJobResponse(params).pipe( + __map(_r => _r.body as ImportJob) + ); + } + + /** + * Deletes a ImportJob + * + * This operation deletes a ImportJob entity. + * @param id Identifier of the ImportJob + * @return OK or Deleted + */ + deleteImportJobResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/productCatalogManagement/v4/importJob/${encodeURIComponent(String(id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ImportJob + * + * This operation deletes a ImportJob entity. + * @param id Identifier of the ImportJob + * @return OK or Deleted + */ + deleteImportJob(id: string): __Observable { + return this.deleteImportJobResponse(id).pipe( + __map(_r => _r.body as Error | {}) + ); + } +} + +module ImportJobService { + + /** + * Parameters for listImportJob + */ + export interface ListImportJobParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveImportJob + */ + export interface RetrieveImportJobParams { + + /** + * Identifier of the ImportJob + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { ImportJobService } diff --git a/src/app/openApis/productCatalogManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/productCatalogManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ac21b6d26ead5ecde410831e33836936d02c1249 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,687 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { CatalogBatchEvent } from '../models/catalog-batch-event'; +import { CatalogCreateEvent } from '../models/catalog-create-event'; +import { CatalogDeleteEvent } from '../models/catalog-delete-event'; +import { CategoryCreateEvent } from '../models/category-create-event'; +import { CategoryDeleteEvent } from '../models/category-delete-event'; +import { ProductOfferingAttributeValueChangeEvent } from '../models/product-offering-attribute-value-change-event'; +import { ProductOfferingCreateEvent } from '../models/product-offering-create-event'; +import { ProductOfferingDeleteEvent } from '../models/product-offering-delete-event'; +import { ProductOfferingPriceAttributeValueChangeEvent } from '../models/product-offering-price-attribute-value-change-event'; +import { ProductOfferingPriceCreateEvent } from '../models/product-offering-price-create-event'; +import { ProductOfferingPriceDeleteEvent } from '../models/product-offering-price-delete-event'; +import { ProductOfferingPriceStateChangeEvent } from '../models/product-offering-price-state-change-event'; +import { ProductOfferingStateChangeEvent } from '../models/product-offering-state-change-event'; +import { ProductSpecificationCreateEvent } from '../models/product-specification-create-event'; +import { ProductSpecificationDeleteEvent } from '../models/product-specification-delete-event'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToCatalogBatchEventPath = '/productCatalogManagement/v4/listener/catalogBatchEvent'; + static readonly listenToCatalogCreateEventPath = '/productCatalogManagement/v4/listener/catalogCreateEvent'; + static readonly listenToCatalogDeleteEventPath = '/productCatalogManagement/v4/listener/catalogDeleteEvent'; + static readonly listenToCategoryCreateEventPath = '/productCatalogManagement/v4/listener/categoryCreateEvent'; + static readonly listenToCategoryDeleteEventPath = '/productCatalogManagement/v4/listener/categoryDeleteEvent'; + static readonly listenToProductOfferingAttributeValueChangeEventPath = '/productCatalogManagement/v4/listener/productOfferingAttributeValueChangeEvent'; + static readonly listenToProductOfferingCreateEventPath = '/productCatalogManagement/v4/listener/productOfferingCreateEvent'; + static readonly listenToProductOfferingDeleteEventPath = '/productCatalogManagement/v4/listener/productOfferingDeleteEvent'; + static readonly listenToProductOfferingPriceAttributeValueChangeEventPath = '/productCatalogManagement/v4/listener/productOfferingPriceAttributeValueChangeEvent'; + static readonly listenToProductOfferingPriceCreateEventPath = '/productCatalogManagement/v4/listener/productOfferingPriceCreateEvent'; + static readonly listenToProductOfferingPriceDeleteEventPath = '/productCatalogManagement/v4/listener/productOfferingPriceDeleteEvent'; + static readonly listenToProductOfferingPriceStateChangeEventPath = '/productCatalogManagement/v4/listener/productOfferingPriceStateChangeEvent'; + static readonly listenToProductOfferingStateChangeEventPath = '/productCatalogManagement/v4/listener/productOfferingStateChangeEvent'; + static readonly listenToProductSpecificationCreateEventPath = '/productCatalogManagement/v4/listener/productSpecificationCreateEvent'; + static readonly listenToProductSpecificationDeleteEventPath = '/productCatalogManagement/v4/listener/productSpecificationDeleteEvent'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity CatalogBatchEvent + * + * Example of a client listener for receiving the notification CatalogBatchEvent + * @param data The event data + * @return OK or Notified + */ + listenToCatalogBatchEventResponse(data: CatalogBatchEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/catalogBatchEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CatalogBatchEvent + * + * Example of a client listener for receiving the notification CatalogBatchEvent + * @param data The event data + * @return OK or Notified + */ + listenToCatalogBatchEvent(data: CatalogBatchEvent): __Observable { + return this.listenToCatalogBatchEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity CatalogCreateEvent + * + * Example of a client listener for receiving the notification CatalogCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToCatalogCreateEventResponse(data: CatalogCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/catalogCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CatalogCreateEvent + * + * Example of a client listener for receiving the notification CatalogCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToCatalogCreateEvent(data: CatalogCreateEvent): __Observable { + return this.listenToCatalogCreateEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity CatalogDeleteEvent + * + * Example of a client listener for receiving the notification CatalogDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToCatalogDeleteEventResponse(data: CatalogDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/catalogDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CatalogDeleteEvent + * + * Example of a client listener for receiving the notification CatalogDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToCatalogDeleteEvent(data: CatalogDeleteEvent): __Observable { + return this.listenToCatalogDeleteEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity CategoryCreateEvent + * + * Example of a client listener for receiving the notification CategoryCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToCategoryCreateEventResponse(data: CategoryCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/categoryCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CategoryCreateEvent + * + * Example of a client listener for receiving the notification CategoryCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToCategoryCreateEvent(data: CategoryCreateEvent): __Observable { + return this.listenToCategoryCreateEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity CategoryDeleteEvent + * + * Example of a client listener for receiving the notification CategoryDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToCategoryDeleteEventResponse(data: CategoryDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/categoryDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CategoryDeleteEvent + * + * Example of a client listener for receiving the notification CategoryDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToCategoryDeleteEvent(data: CategoryDeleteEvent): __Observable { + return this.listenToCategoryDeleteEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductOfferingAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ProductOfferingAttributeValueChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingAttributeValueChangeEventResponse(data: ProductOfferingAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productOfferingAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductOfferingAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ProductOfferingAttributeValueChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingAttributeValueChangeEvent(data: ProductOfferingAttributeValueChangeEvent): __Observable { + return this.listenToProductOfferingAttributeValueChangeEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductOfferingCreateEvent + * + * Example of a client listener for receiving the notification ProductOfferingCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingCreateEventResponse(data: ProductOfferingCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productOfferingCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductOfferingCreateEvent + * + * Example of a client listener for receiving the notification ProductOfferingCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingCreateEvent(data: ProductOfferingCreateEvent): __Observable { + return this.listenToProductOfferingCreateEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductOfferingDeleteEvent + * + * Example of a client listener for receiving the notification ProductOfferingDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingDeleteEventResponse(data: ProductOfferingDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productOfferingDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductOfferingDeleteEvent + * + * Example of a client listener for receiving the notification ProductOfferingDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingDeleteEvent(data: ProductOfferingDeleteEvent): __Observable { + return this.listenToProductOfferingDeleteEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductOfferingPriceAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ProductOfferingPriceAttributeValueChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingPriceAttributeValueChangeEventResponse(data: ProductOfferingPriceAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productOfferingPriceAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductOfferingPriceAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ProductOfferingPriceAttributeValueChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingPriceAttributeValueChangeEvent(data: ProductOfferingPriceAttributeValueChangeEvent): __Observable { + return this.listenToProductOfferingPriceAttributeValueChangeEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductOfferingPriceCreateEvent + * + * Example of a client listener for receiving the notification ProductOfferingPriceCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingPriceCreateEventResponse(data: ProductOfferingPriceCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productOfferingPriceCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductOfferingPriceCreateEvent + * + * Example of a client listener for receiving the notification ProductOfferingPriceCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingPriceCreateEvent(data: ProductOfferingPriceCreateEvent): __Observable { + return this.listenToProductOfferingPriceCreateEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductOfferingPriceDeleteEvent + * + * Example of a client listener for receiving the notification ProductOfferingPriceDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingPriceDeleteEventResponse(data: ProductOfferingPriceDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productOfferingPriceDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductOfferingPriceDeleteEvent + * + * Example of a client listener for receiving the notification ProductOfferingPriceDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingPriceDeleteEvent(data: ProductOfferingPriceDeleteEvent): __Observable { + return this.listenToProductOfferingPriceDeleteEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductOfferingPriceStateChangeEvent + * + * Example of a client listener for receiving the notification ProductOfferingPriceStateChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingPriceStateChangeEventResponse(data: ProductOfferingPriceStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productOfferingPriceStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductOfferingPriceStateChangeEvent + * + * Example of a client listener for receiving the notification ProductOfferingPriceStateChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingPriceStateChangeEvent(data: ProductOfferingPriceStateChangeEvent): __Observable { + return this.listenToProductOfferingPriceStateChangeEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductOfferingStateChangeEvent + * + * Example of a client listener for receiving the notification ProductOfferingStateChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingStateChangeEventResponse(data: ProductOfferingStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productOfferingStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductOfferingStateChangeEvent + * + * Example of a client listener for receiving the notification ProductOfferingStateChangeEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductOfferingStateChangeEvent(data: ProductOfferingStateChangeEvent): __Observable { + return this.listenToProductOfferingStateChangeEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductSpecificationCreateEvent + * + * Example of a client listener for receiving the notification ProductSpecificationCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductSpecificationCreateEventResponse(data: ProductSpecificationCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productSpecificationCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductSpecificationCreateEvent + * + * Example of a client listener for receiving the notification ProductSpecificationCreateEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductSpecificationCreateEvent(data: ProductSpecificationCreateEvent): __Observable { + return this.listenToProductSpecificationCreateEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ProductSpecificationDeleteEvent + * + * Example of a client listener for receiving the notification ProductSpecificationDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductSpecificationDeleteEventResponse(data: ProductSpecificationDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/listener/productSpecificationDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ProductSpecificationDeleteEvent + * + * Example of a client listener for receiving the notification ProductSpecificationDeleteEvent + * @param data The event data + * @return OK or Notified + */ + listenToProductSpecificationDeleteEvent(data: ProductSpecificationDeleteEvent): __Observable { + return this.listenToProductSpecificationDeleteEventResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/productCatalogManagement/services/product-offering-price.service.ts b/src/app/openApis/productCatalogManagement/services/product-offering-price.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..88c3e511a4053caa2a894897e0bfb868bb208158 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/product-offering-price.service.ts @@ -0,0 +1,345 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ProductOfferingPrice } from '../models/product-offering-price'; +import { ProductOfferingPriceCreate } from '../models/product-offering-price-create'; +import { ProductOfferingPriceUpdate } from '../models/product-offering-price-update'; +@Injectable({ + providedIn: 'root', +}) +class ProductOfferingPriceService extends __BaseService { + static readonly listProductOfferingPricePath = '/productCatalogManagement/v4/productOfferingPrice'; + static readonly createProductOfferingPricePath = '/productCatalogManagement/v4/productOfferingPrice'; + static readonly retrieveProductOfferingPricePath = '/productCatalogManagement/v4/productOfferingPrice/{id}'; + static readonly deleteProductOfferingPricePath = '/productCatalogManagement/v4/productOfferingPrice/{id}'; + static readonly patchProductOfferingPricePath = '/productCatalogManagement/v4/productOfferingPrice/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ProductOfferingPrice objects + * + * This operation list or find ProductOfferingPrice entities + * @param params The `ProductOfferingPriceService.ListProductOfferingPriceParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listProductOfferingPriceResponse(params: ProductOfferingPriceService.ListProductOfferingPriceParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.allParams != null) __params = __params.set('allParams', params.allParams.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/productOfferingPrice`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ProductOfferingPrice objects + * + * This operation list or find ProductOfferingPrice entities + * @param params The `ProductOfferingPriceService.ListProductOfferingPriceParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * - `allParams`: allParams + * + * @return Success + */ + listProductOfferingPrice(params: ProductOfferingPriceService.ListProductOfferingPriceParams): __Observable> { + return this.listProductOfferingPriceResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ProductOfferingPrice + * + * This operation creates a ProductOfferingPrice entity. + * @param productOfferingPrice The ProductOfferingPrice to be created + * @return OK or Created + */ + createProductOfferingPriceResponse(productOfferingPrice: ProductOfferingPriceCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = productOfferingPrice; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/productOfferingPrice`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ProductOfferingPrice + * + * This operation creates a ProductOfferingPrice entity. + * @param productOfferingPrice The ProductOfferingPrice to be created + * @return OK or Created + */ + createProductOfferingPrice(productOfferingPrice: ProductOfferingPriceCreate): __Observable { + return this.createProductOfferingPriceResponse(productOfferingPrice).pipe( + __map(_r => _r.body as ProductOfferingPrice | ProductOfferingPrice) + ); + } + + /** + * Retrieves a ProductOfferingPrice by ID + * + * This operation retrieves a ProductOfferingPrice entity. Attribute selection is enabled for all first level attributes. + * @param params The `ProductOfferingPriceService.RetrieveProductOfferingPriceParams` containing the following parameters: + * + * - `id`: Identifier of the ProductOfferingPrice + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveProductOfferingPriceResponse(params: ProductOfferingPriceService.RetrieveProductOfferingPriceParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/productOfferingPrice/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ProductOfferingPrice by ID + * + * This operation retrieves a ProductOfferingPrice entity. Attribute selection is enabled for all first level attributes. + * @param params The `ProductOfferingPriceService.RetrieveProductOfferingPriceParams` containing the following parameters: + * + * - `id`: Identifier of the ProductOfferingPrice + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveProductOfferingPrice(params: ProductOfferingPriceService.RetrieveProductOfferingPriceParams): __Observable { + return this.retrieveProductOfferingPriceResponse(params).pipe( + __map(_r => _r.body as ProductOfferingPrice) + ); + } + + /** + * Deletes a ProductOfferingPrice + * + * This operation deletes a ProductOfferingPrice entity. + * @param id Identifier of the ProductOfferingPrice + * @return Deleted + */ + deleteProductOfferingPriceResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/productCatalogManagement/v4/productOfferingPrice/${encodeURIComponent(String(id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ProductOfferingPrice + * + * This operation deletes a ProductOfferingPrice entity. + * @param id Identifier of the ProductOfferingPrice + * @return Deleted + */ + deleteProductOfferingPrice(id: string): __Observable<{}> { + return this.deleteProductOfferingPriceResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ProductOfferingPrice + * + * This operation updates partially a ProductOfferingPrice entity. + * @param params The `ProductOfferingPriceService.PatchProductOfferingPriceParams` containing the following parameters: + * + * - `productOfferingPrice`: The ProductOfferingPrice to be updated + * + * - `id`: Identifier of the ProductOfferingPrice + * + * @return Updated + */ + patchProductOfferingPriceResponse(params: ProductOfferingPriceService.PatchProductOfferingPriceParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.productOfferingPrice; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/productCatalogManagement/v4/productOfferingPrice/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ProductOfferingPrice + * + * This operation updates partially a ProductOfferingPrice entity. + * @param params The `ProductOfferingPriceService.PatchProductOfferingPriceParams` containing the following parameters: + * + * - `productOfferingPrice`: The ProductOfferingPrice to be updated + * + * - `id`: Identifier of the ProductOfferingPrice + * + * @return Updated + */ + patchProductOfferingPrice(params: ProductOfferingPriceService.PatchProductOfferingPriceParams): __Observable { + return this.patchProductOfferingPriceResponse(params).pipe( + __map(_r => _r.body as ProductOfferingPrice) + ); + } +} + +module ProductOfferingPriceService { + + /** + * Parameters for listProductOfferingPrice + */ + export interface ListProductOfferingPriceParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + + /** + * allParams + */ + allParams?: string; + } + + /** + * Parameters for retrieveProductOfferingPrice + */ + export interface RetrieveProductOfferingPriceParams { + + /** + * Identifier of the ProductOfferingPrice + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchProductOfferingPrice + */ + export interface PatchProductOfferingPriceParams { + + /** + * The ProductOfferingPrice to be updated + */ + productOfferingPrice: ProductOfferingPriceUpdate; + + /** + * Identifier of the ProductOfferingPrice + */ + id: string; + } +} + +export { ProductOfferingPriceService } diff --git a/src/app/openApis/productCatalogManagement/services/product-offering.service.ts b/src/app/openApis/productCatalogManagement/services/product-offering.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..a8f45288c9efefc399e5ddb76773afc3d0adb90b --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/product-offering.service.ts @@ -0,0 +1,336 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ProductOffering } from '../models/product-offering'; +import { ProductOfferingCreate } from '../models/product-offering-create'; +import { Error } from '../models/error'; +import { ProductOfferingUpdate } from '../models/product-offering-update'; +@Injectable({ + providedIn: 'root', +}) +class ProductOfferingService extends __BaseService { + static readonly listProductOfferingPath = '/productCatalogManagement/v4/productOffering'; + static readonly createProductOfferingPath = '/productCatalogManagement/v4/productOffering'; + static readonly retrieveProductOfferingPath = '/productCatalogManagement/v4/productOffering/{id}'; + static readonly deleteProductOfferingPath = '/productCatalogManagement/v4/productOffering/{id}'; + static readonly patchProductOfferingPath = '/productCatalogManagement/v4/productOffering/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ProductOffering objects + * + * This operation list or find ProductOffering entities + * @param params The `ProductOfferingService.ListProductOfferingParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listProductOfferingResponse(params: ProductOfferingService.ListProductOfferingParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/productOffering`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ProductOffering objects + * + * This operation list or find ProductOffering entities + * @param params The `ProductOfferingService.ListProductOfferingParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listProductOffering(params: ProductOfferingService.ListProductOfferingParams): __Observable> { + return this.listProductOfferingResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ProductOffering + * + * This operation creates a ProductOffering entity. + * @param productOffering The ProductOffering to be created + * @return OK or Created + */ + createProductOfferingResponse(productOffering: ProductOfferingCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = productOffering; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/productOffering`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ProductOffering + * + * This operation creates a ProductOffering entity. + * @param productOffering The ProductOffering to be created + * @return OK or Created + */ + createProductOffering(productOffering: ProductOfferingCreate): __Observable { + return this.createProductOfferingResponse(productOffering).pipe( + __map(_r => _r.body as ProductOffering | ProductOffering) + ); + } + + /** + * Retrieves a ProductOffering by ID + * + * This operation retrieves a ProductOffering entity. Attribute selection is enabled for all first level attributes. + * @param params The `ProductOfferingService.RetrieveProductOfferingParams` containing the following parameters: + * + * - `id`: Identifier of the ProductOffering + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveProductOfferingResponse(params: ProductOfferingService.RetrieveProductOfferingParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/productOffering/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ProductOffering by ID + * + * This operation retrieves a ProductOffering entity. Attribute selection is enabled for all first level attributes. + * @param params The `ProductOfferingService.RetrieveProductOfferingParams` containing the following parameters: + * + * - `id`: Identifier of the ProductOffering + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveProductOffering(params: ProductOfferingService.RetrieveProductOfferingParams): __Observable { + return this.retrieveProductOfferingResponse(params).pipe( + __map(_r => _r.body as ProductOffering) + ); + } + + /** + * Deletes a ProductOffering + * + * This operation deletes a ProductOffering entity. + * @param id Identifier of the ProductOffering + * @return Deleted + */ + deleteProductOfferingResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/productCatalogManagement/v4/productOffering/${encodeURIComponent(String(id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ProductOffering + * + * This operation deletes a ProductOffering entity. + * @param id Identifier of the ProductOffering + * @return Deleted + */ + deleteProductOffering(id: string): __Observable { + return this.deleteProductOfferingResponse(id).pipe( + __map(_r => _r.body as Error) + ); + } + + /** + * Updates partially a ProductOffering + * + * This operation updates partially a ProductOffering entity. + * @param params The `ProductOfferingService.PatchProductOfferingParams` containing the following parameters: + * + * - `productOffering`: The ProductOffering to be updated + * + * - `id`: Identifier of the ProductOffering + * + * @return Updated + */ + patchProductOfferingResponse(params: ProductOfferingService.PatchProductOfferingParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.productOffering; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/productCatalogManagement/v4/productOffering/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ProductOffering + * + * This operation updates partially a ProductOffering entity. + * @param params The `ProductOfferingService.PatchProductOfferingParams` containing the following parameters: + * + * - `productOffering`: The ProductOffering to be updated + * + * - `id`: Identifier of the ProductOffering + * + * @return Updated + */ + patchProductOffering(params: ProductOfferingService.PatchProductOfferingParams): __Observable { + return this.patchProductOfferingResponse(params).pipe( + __map(_r => _r.body as ProductOffering) + ); + } +} + +module ProductOfferingService { + + /** + * Parameters for listProductOffering + */ + export interface ListProductOfferingParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveProductOffering + */ + export interface RetrieveProductOfferingParams { + + /** + * Identifier of the ProductOffering + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchProductOffering + */ + export interface PatchProductOfferingParams { + + /** + * The ProductOffering to be updated + */ + productOffering: ProductOfferingUpdate; + + /** + * Identifier of the ProductOffering + */ + id: string; + } +} + +export { ProductOfferingService } diff --git a/src/app/openApis/productCatalogManagement/services/product-specification.service.ts b/src/app/openApis/productCatalogManagement/services/product-specification.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ba9341862a124c31e8e7bbc9d438756b076bef30 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/services/product-specification.service.ts @@ -0,0 +1,335 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ProductSpecification } from '../models/product-specification'; +import { ProductSpecificationCreate } from '../models/product-specification-create'; +import { ProductSpecificationUpdate } from '../models/product-specification-update'; +@Injectable({ + providedIn: 'root', +}) +class ProductSpecificationService extends __BaseService { + static readonly listProductSpecificationPath = '/productCatalogManagement/v4/productSpecification'; + static readonly createProductSpecificationPath = '/productCatalogManagement/v4/productSpecification'; + static readonly retrieveProductSpecificationPath = '/productCatalogManagement/v4/productSpecification/{id}'; + static readonly deleteProductSpecificationPath = '/productCatalogManagement/v4/productSpecification/{id}'; + static readonly patchProductSpecificationPath = '/productCatalogManagement/v4/productSpecification/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ProductSpecification objects + * + * This operation list or find ProductSpecification entities + * @param params The `ProductSpecificationService.ListProductSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listProductSpecificationResponse(params: ProductSpecificationService.ListProductSpecificationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/productSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ProductSpecification objects + * + * This operation list or find ProductSpecification entities + * @param params The `ProductSpecificationService.ListProductSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listProductSpecification(params: ProductSpecificationService.ListProductSpecificationParams): __Observable> { + return this.listProductSpecificationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ProductSpecification + * + * This operation creates a ProductSpecification entity. + * @param productSpecification The ProductSpecification to be created + * @return OK or Created + */ + createProductSpecificationResponse(productSpecification: ProductSpecificationCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = productSpecification; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/productCatalogManagement/v4/productSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ProductSpecification + * + * This operation creates a ProductSpecification entity. + * @param productSpecification The ProductSpecification to be created + * @return OK or Created + */ + createProductSpecification(productSpecification: ProductSpecificationCreate): __Observable { + return this.createProductSpecificationResponse(productSpecification).pipe( + __map(_r => _r.body as ProductSpecification | ProductSpecification) + ); + } + + /** + * Retrieves a ProductSpecification by ID + * + * This operation retrieves a ProductSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ProductSpecificationService.RetrieveProductSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ProductSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveProductSpecificationResponse(params: ProductSpecificationService.RetrieveProductSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/productCatalogManagement/v4/productSpecification/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ProductSpecification by ID + * + * This operation retrieves a ProductSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ProductSpecificationService.RetrieveProductSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ProductSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveProductSpecification(params: ProductSpecificationService.RetrieveProductSpecificationParams): __Observable { + return this.retrieveProductSpecificationResponse(params).pipe( + __map(_r => _r.body as ProductSpecification) + ); + } + + /** + * Deletes a ProductSpecification + * + * This operation deletes a ProductSpecification entity. + * @param id Identifier of the ProductSpecification + * @return Deleted + */ + deleteProductSpecificationResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/productCatalogManagement/v4/productSpecification/${encodeURIComponent(String(id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ProductSpecification + * + * This operation deletes a ProductSpecification entity. + * @param id Identifier of the ProductSpecification + * @return Deleted + */ + deleteProductSpecification(id: string): __Observable<{}> { + return this.deleteProductSpecificationResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ProductSpecification + * + * This operation updates partially a ProductSpecification entity. + * @param params The `ProductSpecificationService.PatchProductSpecificationParams` containing the following parameters: + * + * - `productSpecification`: The ProductSpecification to be updated + * + * - `id`: Identifier of the ProductSpecification + * + * @return Updated + */ + patchProductSpecificationResponse(params: ProductSpecificationService.PatchProductSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.productSpecification; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/productCatalogManagement/v4/productSpecification/${encodeURIComponent(String(params.id))}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ProductSpecification + * + * This operation updates partially a ProductSpecification entity. + * @param params The `ProductSpecificationService.PatchProductSpecificationParams` containing the following parameters: + * + * - `productSpecification`: The ProductSpecification to be updated + * + * - `id`: Identifier of the ProductSpecification + * + * @return Updated + */ + patchProductSpecification(params: ProductSpecificationService.PatchProductSpecificationParams): __Observable { + return this.patchProductSpecificationResponse(params).pipe( + __map(_r => _r.body as ProductSpecification) + ); + } +} + +module ProductSpecificationService { + + /** + * Parameters for listProductSpecification + */ + export interface ListProductSpecificationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveProductSpecification + */ + export interface RetrieveProductSpecificationParams { + + /** + * Identifier of the ProductSpecification + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchProductSpecification + */ + export interface PatchProductSpecificationParams { + + /** + * The ProductSpecification to be updated + */ + productSpecification: ProductSpecificationUpdate; + + /** + * Identifier of the ProductSpecification + */ + id: string; + } +} + +export { ProductSpecificationService } diff --git a/src/app/openApis/productCatalogManagement/strict-http-response.ts b/src/app/openApis/productCatalogManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/productCatalogManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/resourceCatalogManagement/api-configuration.ts b/src/app/openApis/resourceCatalogManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/api.module.ts b/src/app/openApis/resourceCatalogManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a6a41d6d11bf14553b312f70a95a1fc2aed5e77 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/api.module.ts @@ -0,0 +1,50 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { ExportJobService } from './services/export-job.service'; +import { ImportJobService } from './services/import-job.service'; +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ResourceCandidateService } from './services/resource-candidate.service'; +import { ResourceCatalogService } from './services/resource-catalog.service'; +import { ResourceCategoryService } from './services/resource-category.service'; +import { ResourceSpecificationService } from './services/resource-specification.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + ExportJobService, + ImportJobService, + EventsSubscriptionService, + NotificationListenersClientSideService, + ResourceCandidateService, + ResourceCatalogService, + ResourceCategoryService, + ResourceSpecificationService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/resourceCatalogManagement/base-service.ts b/src/app/openApis/resourceCatalogManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/resourceCatalogManagement/models.ts b/src/app/openApis/resourceCatalogManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..b0eca1c8545a1ae4db113f00b5234b9e4da52844 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models.ts @@ -0,0 +1,77 @@ +export { Any } from './models/any'; +export { AttachmentRefOrValue } from './models/attachment-ref-or-value'; +export { ByteArrayResource } from './models/byte-array-resource'; +export { ConstraintRef } from './models/constraint-ref'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { ExportJob } from './models/export-job'; +export { ExportJobCreate } from './models/export-job-create'; +export { ExportJobCreateEvent } from './models/export-job-create-event'; +export { ExportJobCreateEventPayload } from './models/export-job-create-event-payload'; +export { ExportJobStateChangeEvent } from './models/export-job-state-change-event'; +export { ExportJobStateChangeEventPayload } from './models/export-job-state-change-event-payload'; +export { FeatureSpecificationCharacteristicRelationship } from './models/feature-specification-characteristic-relationship'; +export { FeatureSpecificationCharacteristicReq } from './models/feature-specification-characteristic-req'; +export { FeatureSpecificationCharacteristicRes } from './models/feature-specification-characteristic-res'; +export { FeatureSpecificationCharacteristicValue } from './models/feature-specification-characteristic-value'; +export { FeatureSpecificationRelationshipReq } from './models/feature-specification-relationship-req'; +export { FeatureSpecificationRelationshipRes } from './models/feature-specification-relationship-res'; +export { FeatureSpecificationReq } from './models/feature-specification-req'; +export { FeatureSpecificationRes } from './models/feature-specification-res'; +export { ImportJob } from './models/import-job'; +export { ImportJobCreate } from './models/import-job-create'; +export { ImportJobCreateEvent } from './models/import-job-create-event'; +export { ImportJobCreateEventPayload } from './models/import-job-create-event-payload'; +export { ImportJobStateChangeEvent } from './models/import-job-state-change-event'; +export { ImportJobStateChangeEventPayload } from './models/import-job-state-change-event-payload'; +export { InputStream } from './models/input-stream'; +export { JsonNode } from './models/json-node'; +export { Quantity } from './models/quantity'; +export { RelatedParty } from './models/related-party'; +export { ResourceCandidate } from './models/resource-candidate'; +export { ResourceCandidateChangeEvent } from './models/resource-candidate-change-event'; +export { ResourceCandidateChangeEventPayload } from './models/resource-candidate-change-event-payload'; +export { ResourceCandidateCreate } from './models/resource-candidate-create'; +export { ResourceCandidateCreateEvent } from './models/resource-candidate-create-event'; +export { ResourceCandidateCreateEventPayload } from './models/resource-candidate-create-event-payload'; +export { ResourceCandidateDeleteEvent } from './models/resource-candidate-delete-event'; +export { ResourceCandidateDeleteEventPayload } from './models/resource-candidate-delete-event-payload'; +export { ResourceCandidateRef } from './models/resource-candidate-ref'; +export { ResourceCandidateUpdate } from './models/resource-candidate-update'; +export { ResourceCatalog } from './models/resource-catalog'; +export { ResourceCatalogChangeEvent } from './models/resource-catalog-change-event'; +export { ResourceCatalogChangeEventPayload } from './models/resource-catalog-change-event-payload'; +export { ResourceCatalogCreate } from './models/resource-catalog-create'; +export { ResourceCatalogCreateEvent } from './models/resource-catalog-create-event'; +export { ResourceCatalogCreateEventPayload } from './models/resource-catalog-create-event-payload'; +export { ResourceCatalogDeleteEvent } from './models/resource-catalog-delete-event'; +export { ResourceCatalogDeleteEventPayload } from './models/resource-catalog-delete-event-payload'; +export { ResourceCatalogUpdate } from './models/resource-catalog-update'; +export { ResourceCategory } from './models/resource-category'; +export { ResourceCategoryChangeEvent } from './models/resource-category-change-event'; +export { ResourceCategoryChangeEventPayload } from './models/resource-category-change-event-payload'; +export { ResourceCategoryCreate } from './models/resource-category-create'; +export { ResourceCategoryCreateEvent } from './models/resource-category-create-event'; +export { ResourceCategoryCreateEventPayload } from './models/resource-category-create-event-payload'; +export { ResourceCategoryDeleteEvent } from './models/resource-category-delete-event'; +export { ResourceCategoryDeleteEventPayload } from './models/resource-category-delete-event-payload'; +export { ResourceCategoryRef } from './models/resource-category-ref'; +export { ResourceCategoryUpdate } from './models/resource-category-update'; +export { ResourceSpecCharRelationship } from './models/resource-spec-char-relationship'; +export { ResourceSpecification } from './models/resource-specification'; +export { ResourceSpecificationChangeEvent } from './models/resource-specification-change-event'; +export { ResourceSpecificationChangeEventPayload } from './models/resource-specification-change-event-payload'; +export { ResourceSpecificationCharacteristicReq } from './models/resource-specification-characteristic-req'; +export { ResourceSpecificationCharacteristicRes } from './models/resource-specification-characteristic-res'; +export { ResourceSpecificationCharacteristicValue } from './models/resource-specification-characteristic-value'; +export { ResourceSpecificationCreateEvent } from './models/resource-specification-create-event'; +export { ResourceSpecificationCreateEventPayload } from './models/resource-specification-create-event-payload'; +export { ResourceSpecificationDeleteEvent } from './models/resource-specification-delete-event'; +export { ResourceSpecificationDeleteEventPayload } from './models/resource-specification-delete-event-payload'; +export { ResourceSpecificationRef } from './models/resource-specification-ref'; +export { ResourceSpecificationRelationshipReq } from './models/resource-specification-relationship-req'; +export { ResourceSpecificationRelationshipRes } from './models/resource-specification-relationship-res'; +export { ResourceSpecificationUpdate } from './models/resource-specification-update'; +export { TargetResourceSchema } from './models/target-resource-schema'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/resourceCatalogManagement/models/any.ts b/src/app/openApis/resourceCatalogManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/attachment-ref-or-value.ts b/src/app/openApis/resourceCatalogManagement/models/attachment-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..97137fd2e81fc84cef7ca8d306526ca973d75130 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/attachment-ref-or-value.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture. + */ +export interface AttachmentRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Attachment type such as video, picture + */ + attachmentType?: string; + + /** + * The actual contents of the attachment object, if embedded, encoded as base64 + */ + content?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier for this particular attachment + */ + id?: string; + + /** + * Attachment mime type such as extension file for video, picture and document + */ + mimeType?: string; + + /** + * Name of the entity + */ + name?: string; + size?: Quantity; + + /** + * Uniform Resource Locator, is a web page address (a subset of URI) + */ + url?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/byte-array-resource.ts b/src/app/openApis/resourceCatalogManagement/models/byte-array-resource.ts new file mode 100644 index 0000000000000000000000000000000000000000..0e8dbaa9c10f5d3d78fb6aa96909150a5fce94d8 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/byte-array-resource.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { InputStream } from './input-stream'; +export interface ByteArrayResource { + byteArray?: string; + description?: string; + file?: Blob; + filename?: string; + inputStream?: InputStream; + open?: boolean; + readable?: boolean; + uri?: string; + url?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/constraint-ref.ts b/src/app/openApis/resourceCatalogManagement/models/constraint-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..6cc1b0a883bf3b1ae86d7689704371c4cc5bcd3f --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/constraint-ref.ts @@ -0,0 +1,45 @@ +/* tslint:disable */ + +/** + * Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec. + */ +export interface ConstraintRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The (class) type of the referred constraint + */ + atReferredType?: string; + + /** + * Hyperlink reference to the target constraint + */ + href?: string; + + /** + * reference id to the target constraint + */ + id: string; + + /** + * Name given to the constraint + */ + name?: string; + uuid?: string; + + /** + * constraint version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/error.ts b/src/app/openApis/resourceCatalogManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..f6d298516145874b7e3c138343a292ff8c308018 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/error.ts @@ -0,0 +1,50 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class. + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + atType?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: string; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/event-subscription-input.ts b/src/app/openApis/resourceCatalogManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/event-subscription.ts b/src/app/openApis/resourceCatalogManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/export-job-create-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/export-job-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..73d7cb0368ecb04a8213da0991bf749022b2db5f --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/export-job-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ExportJob } from './export-job'; + +/** + * The event data structure + */ +export interface ExportJobCreateEventPayload { + exportJob?: ExportJob; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/export-job-create-event.ts b/src/app/openApis/resourceCatalogManagement/models/export-job-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..a990172ec707dbb93857763c173ea02acd38c46b --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/export-job-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ExportJobCreateEventPayload } from './export-job-create-event-payload'; + +/** + * The notification data structure + */ +export interface ExportJobCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ExportJobCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/export-job-create.ts b/src/app/openApis/resourceCatalogManagement/models/export-job-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..2edab9d83756dc05f9fb1231b5166cdd598e1a67 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/export-job-create.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ + +/** + * Represents a task used to export resources to a file Skipped properties: id,href + */ +export interface ExportJobCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Data at which the job was completed + */ + completionDate?: string; + + /** + * The format of the exported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure + */ + errorLog?: string; + + /** + * URL of the root resource acting as the source for streaming content to the file specified by the export job + */ + path?: string; + + /** + * Used to scope the exported data + */ + query?: string; + status?: 'Failed' | 'Not Started' | 'Running' | 'Succeeded'; + + /** + * URL of the file containing the data to be exported + */ + url: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/export-job-state-change-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/export-job-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..e90553a93dc4b57c24184c8d3fdc7cc1ecb71f3c --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/export-job-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ExportJob } from './export-job'; + +/** + * The event data structure + */ +export interface ExportJobStateChangeEventPayload { + exportJob?: ExportJob; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/export-job-state-change-event.ts b/src/app/openApis/resourceCatalogManagement/models/export-job-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..6f493ae26275826d7c8c8d72cbcd602db4a82976 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/export-job-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ExportJobStateChangeEventPayload } from './export-job-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface ExportJobStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ExportJobStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/export-job.ts b/src/app/openApis/resourceCatalogManagement/models/export-job.ts new file mode 100644 index 0000000000000000000000000000000000000000..ba27d03efdf8031e533e177f08135a46b6ecafdb --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/export-job.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ + +/** + * Represents a task used to export resources to a file + */ +export interface ExportJob { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Data at which the job was completed + */ + completionDate?: string; + + /** + * The format of the exported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure + */ + errorLog?: string; + + /** + * Reference of the export job + */ + href?: string; + + /** + * Identifier of the export job + */ + id?: string; + + /** + * URL of the root resource acting as the source for streaming content to the file specified by the export job + */ + path?: string; + + /** + * Used to scope the exported data + */ + query?: string; + status?: 'Failed' | 'Not Started' | 'Running' | 'Succeeded'; + + /** + * URL of the file containing the data to be exported + */ + url?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-relationship.ts b/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..47263ee9e1b4ef01abd5198a343606ec223dc405 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-relationship.ts @@ -0,0 +1,56 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among FeatureSpecificationCharacteristics. + */ +export interface FeatureSpecificationCharacteristicRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique identifier of the characteristic within the the target feature specification + */ + characteristicId?: string; + + /** + * Unique identifier of the target feature specification within the resource specification. + */ + featureId?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the target characteristic + */ + name?: string; + + /** + * Type of relationship such as aggregation, migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + + /** + * Hyperlink reference to the resource specification containing the target feature and feature characteristic + */ + resourceSpecificationHref?: string; + + /** + * Unique identifier of the resource specification containing the target feature and feature characteristic + */ + resourceSpecificationId?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-req.ts b/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..36771688a349c02efd9e5d3995efc30158e0e6a8 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-req.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +import { FeatureSpecificationCharacteristicRelationship } from './feature-specification-characteristic-relationship'; +import { FeatureSpecificationCharacteristicValue } from './feature-specification-characteristic-value'; +import { TimePeriod } from './time-period'; + +/** + * Configuration feature characteristic specification. + */ +export interface FeatureSpecificationCharacteristicReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * This (optional) field provides a link to the schema describing the value type. + */ + atValueSchemaLocation?: string; + + /** + * True is the feature is configurable. + */ + configurable?: boolean; + + /** + * Description of this catalog + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a feature. + */ + extensible?: boolean; + + /** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among feature characteristics. + */ + featureSpecCharRelationship?: Array; + + /** + * Used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a FeatureCharacteristic object. + */ + featureSpecCharacteristicValue?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * An indicator that specifies if a value is unique for the specification. + */ + isUnique?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * The maximum number of instances a CharacteristicValue can take on. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. + */ + minCardinality?: number; + + /** + * This is the name for the feature charateristic. + */ + name: string; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value. + */ + regex?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on. + */ + valueType?: string; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-res.ts b/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..9e771ba853cbb2c8453a82dc59402c49beb0d2eb --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-res.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +import { FeatureSpecificationCharacteristicRelationship } from './feature-specification-characteristic-relationship'; +import { FeatureSpecificationCharacteristicValue } from './feature-specification-characteristic-value'; +import { TimePeriod } from './time-period'; + +/** + * Configuration feature characteristic specification. + */ +export interface FeatureSpecificationCharacteristicRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * This (optional) field provides a link to the schema describing the value type. + */ + atValueSchemaLocation?: string; + + /** + * True is the feature is configurable. + */ + configurable?: boolean; + + /** + * Description of this catalog + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a feature. + */ + extensible?: boolean; + + /** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among feature characteristics. + */ + featureSpecCharRelationship?: Array; + + /** + * Used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a FeatureCharacteristic object. + */ + featureSpecCharacteristicValue?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * An indicator that specifies if a value is unique for the specification. + */ + isUnique?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * The maximum number of instances a CharacteristicValue can take on. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. + */ + minCardinality?: number; + + /** + * This is the name for the feature charateristic. + */ + name: string; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value. + */ + regex?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on. + */ + valueType?: string; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-value.ts b/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..590b6e973420da855c375dc79074e58876c6fc33 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/feature-specification-characteristic-value.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; +import { Any } from './any'; + +/** + * A number or text that can be assigned to a FeatureSpecificationCharacteristic. + */ +export interface FeatureSpecificationCharacteristicValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * True if the value is the default value for a characteristic. + */ + isDefault?: boolean; + + /** + * Specifies the inclusion or exclusion of the valueFrom and valueTo attributes. + */ + rangeInterval?: string; + + /** + * A regular expression constraint for given value. + */ + regex?: string; + + /** + * A determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values. + */ + unitOfMeasure?: string; + uuid?: string; + validFor?: TimePeriod; + value?: Any; + + /** + * The low range value that a characteristic can take on. + */ + valueFrom?: number; + + /** + * The upper range value that a characteristic can take on. + */ + valueTo?: number; + + /** + * A kind of value that the characteristic value can take on. + */ + valueType: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/feature-specification-relationship-req.ts b/src/app/openApis/resourceCatalogManagement/models/feature-specification-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..b5a43891121956d1cfb82b7abe8abb847abaf8ae --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/feature-specification-relationship-req.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Configuration feature + */ +export interface FeatureSpecificationRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique identifier of the target feature specification. + */ + featureId?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * This is the name of the target feature specification. + */ + name: string; + + /** + * This is the type of the feature specification relationship. + */ + relationshipType: string; + + /** + * Hyperlink reference to the resource specification containing the target feature + */ + resourceSpecificationHref?: string; + + /** + * Unique identifier of the resource specification containing the target feature + */ + resourceSpecificationId?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/feature-specification-relationship-res.ts b/src/app/openApis/resourceCatalogManagement/models/feature-specification-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..094b1ef39d3ccae92dbbbe9a22f56235957e690f --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/feature-specification-relationship-res.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Configuration feature + */ +export interface FeatureSpecificationRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique identifier of the target feature specification. + */ + featureId?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * This is the name of the target feature specification. + */ + name: string; + + /** + * This is the type of the feature specification relationship. + */ + relationshipType: string; + + /** + * Hyperlink reference to the resource specification containing the target feature + */ + resourceSpecificationHref?: string; + + /** + * Unique identifier of the resource specification containing the target feature + */ + resourceSpecificationId?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/feature-specification-req.ts b/src/app/openApis/resourceCatalogManagement/models/feature-specification-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..a4ffcf1ab30d9a4f06108399e756b811e377ca93 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/feature-specification-req.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +import { ConstraintRef } from './constraint-ref'; +import { FeatureSpecificationCharacteristicReq } from './feature-specification-characteristic-req'; +import { FeatureSpecificationRelationshipReq } from './feature-specification-relationship-req'; +import { TimePeriod } from './time-period'; + +/** + * Specification for applicable configuration features for a resource specification. + */ +export interface FeatureSpecificationReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * This is a list of feature constraints + */ + constraint?: Array; + + /** + * This is a list of characteristics for a particular feature + */ + featureSpecCharacteristic?: Array; + + /** + * A dependency, exclusivity or aggratation relationship between/among feature specifications. + */ + featureSpecRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Identifier of the feature specification. Must be locally unique within the containing resource specification, thus allowing direct access to the feature spec. + */ + id?: string; + + /** + * A flag indicating if this is a feature group (true) or not (false) + */ + isBundle?: boolean; + + /** + * A flag indicating if the feature is enabled (true) or not (false) + */ + isEnabled?: boolean; + + /** + * Unique name given to the feature specification + */ + name?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * Version of the feature specification + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/feature-specification-res.ts b/src/app/openApis/resourceCatalogManagement/models/feature-specification-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..f0877cef69894a0c98f1fde169cdd6b1687f2c75 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/feature-specification-res.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +import { ConstraintRef } from './constraint-ref'; +import { FeatureSpecificationCharacteristicRes } from './feature-specification-characteristic-res'; +import { FeatureSpecificationRelationshipRes } from './feature-specification-relationship-res'; +import { TimePeriod } from './time-period'; + +/** + * Specification for applicable configuration features for a resource specification. + */ +export interface FeatureSpecificationRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * This is a list of feature constraints + */ + constraint?: Array; + + /** + * This is a list of characteristics for a particular feature + */ + featureSpecCharacteristic?: Array; + + /** + * A dependency, exclusivity or aggratation relationship between/among feature specifications. + */ + featureSpecRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Identifier of the feature specification. Must be locally unique within the containing resource specification, thus allowing direct access to the feature spec. + */ + id?: string; + + /** + * A flag indicating if this is a feature group (true) or not (false) + */ + isBundle?: boolean; + + /** + * A flag indicating if the feature is enabled (true) or not (false) + */ + isEnabled?: boolean; + + /** + * Unique name given to the feature specification + */ + name?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * Version of the feature specification + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/import-job-create-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/import-job-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..1506f33b1fc703137a21204b61b81a7cd94aabc6 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/import-job-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ImportJob } from './import-job'; + +/** + * The event data structure + */ +export interface ImportJobCreateEventPayload { + importJob?: ImportJob; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/import-job-create-event.ts b/src/app/openApis/resourceCatalogManagement/models/import-job-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..1c2ba4c6e4fc3b6e035ee3e5295b7b29dc2098a6 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/import-job-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ImportJobCreateEventPayload } from './import-job-create-event-payload'; + +/** + * The notification data structure + */ +export interface ImportJobCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ImportJobCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/import-job-create.ts b/src/app/openApis/resourceCatalogManagement/models/import-job-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..7d0b3057e18f8c135f677e85962799c9e271fddb --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/import-job-create.ts @@ -0,0 +1,56 @@ +/* tslint:disable */ + +/** + * Represents a task used to import resources from a file Skipped properties: id,href + */ +export interface ImportJobCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Date at which the job was completed + */ + completionDate?: string; + + /** + * Indicates the format of the imported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure if status is failed + */ + errorLog?: string; + + /** + * URL of the root resource where the content of the file specified by the import job must be applied + */ + path?: string; + status?: 'Failed' | 'Not Started' | 'Running' | 'Succeeded'; + + /** + * URL of the file containing the data to be imported + */ + url: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/import-job-state-change-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/import-job-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..130bd6db43c4663bad6adbb79dfc74cf8ed8dd48 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/import-job-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ImportJob } from './import-job'; + +/** + * The event data structure + */ +export interface ImportJobStateChangeEventPayload { + importJob?: ImportJob; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/import-job-state-change-event.ts b/src/app/openApis/resourceCatalogManagement/models/import-job-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..40f9c3f89ab995016c9a3b49f5427f646aa70484 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/import-job-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ImportJobStateChangeEventPayload } from './import-job-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface ImportJobStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ImportJobStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/import-job.ts b/src/app/openApis/resourceCatalogManagement/models/import-job.ts new file mode 100644 index 0000000000000000000000000000000000000000..6883d5eb2dcdd00ecbd75501432a9e7f1a3c58b8 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/import-job.ts @@ -0,0 +1,66 @@ +/* tslint:disable */ + +/** + * Represents a task used to import resources from a file + */ +export interface ImportJob { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Date at which the job was completed + */ + completionDate?: string; + + /** + * Indicates the format of the imported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure if status is failed + */ + errorLog?: string; + + /** + * Reference of the import job + */ + href?: string; + + /** + * Identifier of the import job + */ + id?: string; + + /** + * URL of the root resource where the content of the file specified by the import job must be applied + */ + path?: string; + status?: 'Failed' | 'Not Started' | 'Running' | 'Succeeded'; + + /** + * URL of the file containing the data to be imported + */ + url?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/input-stream.ts b/src/app/openApis/resourceCatalogManagement/models/input-stream.ts new file mode 100644 index 0000000000000000000000000000000000000000..094fd1ed3199a39fa421105fd60c2c30b0eac5b3 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/input-stream.ts @@ -0,0 +1,3 @@ +/* tslint:disable */ +export interface InputStream { +} diff --git a/src/app/openApis/resourceCatalogManagement/models/json-node.ts b/src/app/openApis/resourceCatalogManagement/models/json-node.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd5346f95b19dad8836b4f8718c7943110767ed8 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/json-node.ts @@ -0,0 +1,3 @@ +/* tslint:disable */ +export interface JsonNode { +} diff --git a/src/app/openApis/resourceCatalogManagement/models/quantity.ts b/src/app/openApis/resourceCatalogManagement/models/quantity.ts new file mode 100644 index 0000000000000000000000000000000000000000..d24c6b3f0543bd1702e42db0f4929b813bd165d8 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/quantity.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * An amount in a given unit + */ +export interface Quantity { + + /** + * Numeric value in a given unit + */ + amount?: number; + + /** + * Unit + */ + units?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/related-party.ts b/src/app/openApis/resourceCatalogManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..b80038dfc630f883910eac884192f0eb46d75199 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-change-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc32ec8768909799f5a3b9f8b17de1fb9cdd6297 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCandidate } from './resource-candidate'; + +/** + * The event data structure + */ +export interface ResourceCandidateChangeEventPayload { + resourceCandidate?: ResourceCandidate; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-change-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..8d6d2944797cd74fa627ff3514b77c39a93141c5 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCandidateChangeEventPayload } from './resource-candidate-change-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCandidateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCandidateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..3e1be0efcdbcfe8815604def21cafb8f1352759f --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCandidate } from './resource-candidate'; + +/** + * The event data structure + */ +export interface ResourceCandidateCreateEventPayload { + resourceCandidate?: ResourceCandidate; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..71517113eb76d966d736a063789d81e2dd1c80fa --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCandidateCreateEventPayload } from './resource-candidate-create-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCandidateCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCandidateCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..8e6457ddf745d8dc23f577a01b252ec2ff5b182f --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-create.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none. Skipped properties: id,href + */ +export interface ResourceCandidateCreate { + + /** + * The (immediate) base class type of this REST resource + */ + '@baseType'?: string; + + /** + * This field provides a link to the schema describing this REST resource + */ + '@schemaLocation'?: string; + + /** + * Class type of this REST resource + */ + '@type'?: string; + category?: Array; + + /** + * Description of this REST resource + */ + description?: string; + + /** + * Date and time of the last update of this REST resource + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status of the resource candidate. + */ + lifecycleStatus?: string; + + /** + * Name given to this REST resource + */ + name?: string; + resourceSpecification?: ResourceSpecificationRef; + + /** + * The period for which this REST resource is valid + */ + validFor?: TimePeriod; + + /** + * the version of resource candidate + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-delete-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..0f62755122129e7c710dc639daf9942941b77e83 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCandidate } from './resource-candidate'; + +/** + * The event data structure + */ +export interface ResourceCandidateDeleteEventPayload { + resourceCandidate?: ResourceCandidate; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-delete-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..5ba0604e6a80c836fc045f66ceac1ba3ba1de63b --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-delete-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCandidateDeleteEventPayload } from './resource-candidate-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCandidateDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCandidateDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-ref.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..06603d2324a7b34b3d88571907e18a2a7a613508 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none. + */ +export interface ResourceCandidateRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Reference of the resource candidate + */ + href?: string; + + /** + * Unique identifier of the resource candidate + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * Version of the resource candidate + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate-update.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..b3007cba74121872ece685dc67f6c610ae9db48c --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate-update.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none. Skipped properties: id,href + */ +export interface ResourceCandidateUpdate { + + /** + * The (immediate) base class type of this REST resource + */ + '@baseType'?: string; + + /** + * This field provides a link to the schema describing this REST resource + */ + '@schemaLocation'?: string; + + /** + * Class type of this REST resource + */ + '@type'?: string; + category?: Array; + + /** + * Description of this REST resource + */ + description?: string; + + /** + * Date and time of the last update of this REST resource + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status of the resource candidate. + */ + lifecycleStatus?: string; + + /** + * Name given to this REST resource + */ + name?: string; + resourceSpecification?: ResourceSpecificationRef; + + /** + * The period for which this REST resource is valid + */ + validFor?: TimePeriod; + + /** + * the version of resource candidate + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-candidate.ts b/src/app/openApis/resourceCatalogManagement/models/resource-candidate.ts new file mode 100644 index 0000000000000000000000000000000000000000..99f6da608c95afec701ffe4508916aa43ac63408 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-candidate.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none. + */ +export interface ResourceCandidate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The category specification implied by this candidate + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of this REST resource + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The resource specification implied by this candidate + */ + resourceSpecification?: ResourceSpecificationRef; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog-change-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..66409f324b96504f7b1f4a55273b601d24d6c00d --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCatalog } from './resource-catalog'; + +/** + * The event data structure + */ +export interface ResourceCatalogChangeEventPayload { + resourceCatalog?: ResourceCatalog; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog-change-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..6406911de817e308765ac7d5188b6b9159809134 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCatalogChangeEventPayload } from './resource-catalog-change-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCatalogChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCatalogChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..a1b0cccb8f691bc881ed9c11f5fee13e24f6aff4 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCatalog } from './resource-catalog'; + +/** + * The event data structure + */ +export interface ResourceCatalogCreateEventPayload { + resourceCatalog?: ResourceCatalog; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..5bda57f683db8cff8f828deb6cfdae2b80765f76 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCatalogCreateEventPayload } from './resource-catalog-create-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCatalogCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCatalogCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..8b8f4378ae0eb9768f3906ee2df98cab69889657 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-create.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * The root entity for resource catalog management. A resource catalog is a group of resource specifications made available through resource candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). Skipped properties: id,href + */ +export interface ResourceCatalogCreate { + + /** + * Indicates the base (class) type of this REST resource + */ + '@baseType'?: string; + + /** + * This field provides a link to the schema describing this REST resource + */ + '@schemaLocation'?: string; + + /** + * Indicates the (class) type of catalog. For resource catalogs, this will be 'ResourceCatalog'. + */ + '@type'?: string; + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the catalog + */ + name?: string; + relatedParty?: Array; + + /** + * The period for which the catalog is valid + */ + validFor?: TimePeriod; + + /** + * Catalog version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog-delete-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..9860f3412855fad59aba2498461f84206dac6746 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCatalog } from './resource-catalog'; + +/** + * The event data structure + */ +export interface ResourceCatalogDeleteEventPayload { + resourceCatalog?: ResourceCatalog; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog-delete-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..b606ecfd4e3cfb6457bf2a1a70b6a2b4033838eb --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-delete-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCatalogDeleteEventPayload } from './resource-catalog-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCatalogDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCatalogDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog-update.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..ad43cfcd007d33143356d6793dfb32a3204de801 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog-update.ts @@ -0,0 +1,52 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * The root entity for resource catalog management. A resource catalog is a group of resource specifications made available through resource candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). Skipped properties: id,href + */ +export interface ResourceCatalogUpdate { + + /** + * Indicates the base (class) type of this REST resource + */ + '@baseType'?: string; + + /** + * This field provides a link to the schema describing this REST resource + */ + '@schemaLocation'?: string; + + /** + * Indicates the (class) type of catalog. For resource catalogs, this will be 'ResourceCatalog'. + */ + '@type'?: string; + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the catalog + */ + name?: string; + relatedParty?: Array; + + /** + * The period for which the catalog is valid + */ + validFor?: TimePeriod; + + /** + * Catalog version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-catalog.ts b/src/app/openApis/resourceCatalogManagement/models/resource-catalog.ts new file mode 100644 index 0000000000000000000000000000000000000000..6b5fa3be26dc1c49e417fa28066e571d539a3b17 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-catalog.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * The root entity for resource catalog management. A resource catalog is a group of resource specifications made available through resource candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). + */ +export interface ResourceCatalog { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * List of service categories associated with this catalog + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the Catalog + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + relatedParty?: Array; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-change-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..12d2ad52b7747e6d10a6a15db9556ab66b6c8f5e --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCategory } from './resource-category'; + +/** + * The event data structure + */ +export interface ResourceCategoryChangeEventPayload { + resourceCategory?: ResourceCategory; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-change-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..1410dd68e4e1b5cd47b329942494b0cd9a34d705 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCategoryChangeEventPayload } from './resource-category-change-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCategoryChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCategoryChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-create-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..d73ec3e0b4312993ae965477ecf94fbd7b4a6d14 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCategory } from './resource-category'; + +/** + * The event data structure + */ +export interface ResourceCategoryCreateEventPayload { + resourceCategory?: ResourceCategory; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-create-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..2ff85ab19ffa8cba82644f45c73f98a1f5f67baf --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCategoryCreateEventPayload } from './resource-category-create-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCategoryCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCategoryCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-create.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..4409b890d649daa5fd65764c33489e6f4d42b82d --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-create.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { RelatedParty } from './related-party'; +import { ResourceCandidateRef } from './resource-candidate-ref'; +import { TimePeriod } from './time-period'; + +/** + * The (resource) category resource is used to group resource candidates in logical containers. Categories can contain other categories. Skipped properties: id,href + */ +export interface ResourceCategoryCreate { + + /** + * Immediate base class type of this category + */ + '@baseType'?: string; + + /** + * This field provides a link to the schema describing this REST resource + */ + '@schemalLocation'?: string; + + /** + * The (class) type of this category + */ + '@type'?: string; + category?: Array; + + /** + * Description of the category + */ + description?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the category + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + relatedParty?: Array; + resourceCandidate?: Array; + + /** + * The period for which the category is valid + */ + validFor?: TimePeriod; + + /** + * Category version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-delete-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..267905f7e05041e48bcc682dd23f454d359f9cb9 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceCategory } from './resource-category'; + +/** + * The event data structure + */ +export interface ResourceCategoryDeleteEventPayload { + resourceCategory?: ResourceCategory; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-delete-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..0378dd986cab2cf048f8e10f910ee9a2dff193d5 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-delete-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCategoryDeleteEventPayload } from './resource-category-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCategoryDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCategoryDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-ref.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..73ac6a325dff102d09fbadb4f830f39d7ebbed5a --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Category reference. The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. + */ +export interface ResourceCategoryRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique reference of the category + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * Category version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category-update.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..6d5f14c10dfbd45cc9038b26a858cbfdaa72e306 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category-update.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { RelatedParty } from './related-party'; +import { ResourceCandidateRef } from './resource-candidate-ref'; +import { TimePeriod } from './time-period'; + +/** + * The (resource) category resource is used to group resource candidates in logical containers. Categories can contain other categories. Skipped properties: id,href,id,href + */ +export interface ResourceCategoryUpdate { + + /** + * Immediate base class type of this category + */ + '@baseType'?: string; + + /** + * This field provides a link to the schema describing this REST resource + */ + '@schemalLocation'?: string; + + /** + * The (class) type of this category + */ + '@type'?: string; + category?: Array; + + /** + * Description of the category + */ + description?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the category + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + relatedParty?: Array; + resourceCandidate?: Array; + + /** + * The period for which the category is valid + */ + validFor?: TimePeriod; + + /** + * Category version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-category.ts b/src/app/openApis/resourceCatalogManagement/models/resource-category.ts new file mode 100644 index 0000000000000000000000000000000000000000..32ac5917658d405c3e54f8044b20387275b6815c --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-category.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +import { ResourceCategoryRef } from './resource-category-ref'; +import { ResourceCandidateRef } from './resource-candidate-ref'; +import { TimePeriod } from './time-period'; + +/** + * The (resource) category resource is used to group resource candidates in logical containers. Categories can contain other categories. + */ +export interface ResourceCategory { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * List of child categories in the tree for in this category + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the category + */ + id?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + + /** + * List of resource candidates associated with this category + */ + resourceCandidate?: Array; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-spec-char-relationship.ts b/src/app/openApis/resourceCatalogManagement/models/resource-spec-char-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..838147ec12e43bfeb5443c0938e38354fa2ab7d1 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-spec-char-relationship.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics. + */ +export interface ResourceSpecCharRelationship { + + /** + * class type of target specification + */ + '@type'?: string; + + /** + * Hyperlink reference to the target specification + */ + href?: string; + + /** + * Unique identifier of the target specification + */ + id?: string; + + /** + * Name of the target characteristic + */ + name?: string; + relationshipType?: string; + uuid?: string; + + /** + * The period for which the object is valid + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-change-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..02b619f870c884d42a665cd81f2711f2ef0c6003 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceSpecification } from './resource-specification'; + +/** + * The event data structure + */ +export interface ResourceSpecificationChangeEventPayload { + resourceSpecification?: ResourceSpecification; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-change-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..3b28e5778dc73441f19ddc828f468b8f63161f7c --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceSpecificationChangeEventPayload } from './resource-specification-change-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceSpecificationChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceSpecificationChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-req.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..f93082f25061bacca5bc47194ac247213a03b5bb --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-req.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +import { ResourceSpecCharRelationship } from './resource-spec-char-relationship'; +import { ResourceSpecificationCharacteristicValue } from './resource-specification-characteristic-value'; +import { TimePeriod } from './time-period'; + +/** + * This class defines the characteristic features of a resource specification. Every ResourceSpecification has a variety of important attributes, methods, constraints, and relationships, which distinguish a resource specification from other resource specifications. + */ +export interface ResourceSpecificationCharacteristicReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A link to the schema describing this characteristic specification + */ + '@schemaLocation'?: string; + + /** + * (Class) type of the ResourceSpecificationCharacteristic + */ + '@type'?: string; + + /** + * This (optional) field provides a link to the schema describing the value type + */ + '@valueSchemaLocation'?: string; + + /** + * If true, the Boolean indicates that the ResourceSpecificationCharacteristic is configurable + */ + configurable?: boolean; + + /** + * A narrative that explains the CharacteristicSpecification. + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource. + */ + extensible?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * An indicator that specifies if a value is unique for the specification. Possible values are; "unique while value is in effect" and "unique whether value is in effect or not" + */ + isUnique?: boolean; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality. + */ + minCardinality?: number; + + /** + * A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications. + */ + name?: string; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value. + */ + regex?: string; + resourceSpecCharRelationship?: Array; + resourceSpecificationCharacteristicValue?: Array; + uuid?: string; + + /** + * The period of time for which a characteristic is applicable. + */ + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-res.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..f25509c98880a376ea4bad50a9f3c98dbcf67b80 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-res.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +import { ResourceSpecCharRelationship } from './resource-spec-char-relationship'; +import { ResourceSpecificationCharacteristicValue } from './resource-specification-characteristic-value'; +import { TimePeriod } from './time-period'; + +/** + * This class defines the characteristic features of a resource specification. Every ResourceSpecification has a variety of important attributes, methods, constraints, and relationships, which distinguish a resource specification from other resource specifications. + */ +export interface ResourceSpecificationCharacteristicRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A link to the schema describing this characteristic specification + */ + '@schemaLocation'?: string; + + /** + * (Class) type of the ResourceSpecificationCharacteristic + */ + '@type'?: string; + + /** + * This (optional) field provides a link to the schema describing the value type + */ + '@valueSchemaLocation'?: string; + + /** + * If true, the Boolean indicates that the ResourceSpecificationCharacteristic is configurable + */ + configurable?: boolean; + + /** + * A narrative that explains the CharacteristicSpecification. + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource. + */ + extensible?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * An indicator that specifies if a value is unique for the specification. Possible values are; "unique while value is in effect" and "unique whether value is in effect or not" + */ + isUnique?: boolean; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality. + */ + minCardinality?: number; + + /** + * A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications. + */ + name?: string; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value. + */ + regex?: string; + resourceSpecCharRelationship?: Array; + resourceSpecCharacteristicValue?: Array; + uuid?: string; + + /** + * The period of time for which a characteristic is applicable. + */ + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-value.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..4806ccc14b93ce130edad26ce1805dee36f40c01 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-characteristic-value.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; +import { Any } from './any'; + +/** + * A number or text that can be assigned to a ResourceSpecCharacteristic. + */ +export interface ResourceSpecificationCharacteristicValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * This (optional) field provides a link to the schema describing the value type + */ + '@schemaLocation'?: string; + + /** + * The class type of a complex value type + */ + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * If true, the Boolean Indicates if the value is the default value for a characteristic + */ + isDefault?: boolean; + + /** + * An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are "open", "closed", "closedBottom" and "closedTop". + */ + rangeInterval?: string; + + /** + * A regular expression constraint for given value + */ + regex?: string; + + /** + * A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot. + */ + unitOfMeasure?: string; + uuid?: string; + + /** + * The period of time for which a value is applicable. + */ + validFor?: TimePeriod; + + /** + * The value that the characteristic can take on. If the value is a complex type, the definition of the type should be found by the link as defined in @schemaLocation + */ + value?: Any; + + /** + * The low range value that a characteristic can take on + */ + valueFrom?: number; + + /** + * The upper range value that a characteristic can take on + */ + valueTo?: number; + + /** + * A kind of value that the characteristic value can take on, such as numeric, text and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-create-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..1e2365f0acdd73d54d2aa9e427784b0f24f253a1 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceSpecification } from './resource-specification'; + +/** + * The event data structure + */ +export interface ResourceSpecificationCreateEventPayload { + resourceSpecification?: ResourceSpecification; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-create-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..ac16ecf775e8ca13caa865b3cfb2d0d4301cf10a --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceSpecificationCreateEventPayload } from './resource-specification-create-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceSpecificationCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceSpecificationCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-delete-event-payload.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..7cca1fcaf8c384ea485dcfe9264c60bcd977b62a --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceSpecification } from './resource-specification'; + +/** + * The event data structure + */ +export interface ResourceSpecificationDeleteEventPayload { + resourceSpecification?: ResourceSpecification; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-delete-event.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..a8fa02dc20e22693251c40cf2c3259a759bc7dc0 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-delete-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceSpecificationDeleteEventPayload } from './resource-specification-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceSpecificationDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceSpecificationDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-ref.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..ac9d833d3343e0a7dd31dc4ec63f55472683cd7a --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Resource Specification reference: The ResourceSpecification is required to realize a ProductSpecification. + */ +export interface ResourceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Resource specification version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-relationship-req.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..70d8ce0fc4d24fea3dc6b0fe15518163805f033d --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-relationship-req.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +import { ResourceSpecificationCharacteristicReq } from './resource-specification-characteristic-req'; +import { TimePeriod } from './time-period'; + +/** + * A migration, substitution, dependency or exclusivity relationship between/among resource specifications. + */ +export interface ResourceSpecificationRelationshipReq { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * The default number of the related resource that should be instantiated, for example a rack would typically have 4 cards, although it could support more. + */ + defaultQuantity?: number; + + /** + * Reference of the target ResourceSpecification + */ + href?: string; + + /** + * Unique identifier of target ResourceSpecification + */ + id?: string; + + /** + * The maximum number of the related resource that should be instantiated, for example a rack supports a maximum of 16 cards + */ + maximumQuantity?: number; + + /** + * The minimum number of the related resource that should be instantiated, for example a rack must have at least 1 card + */ + minimumQuantity?: number; + + /** + * The name given to the target resource specification instance + */ + name?: string; + + /** + * Type of relationship such as migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + + /** + * A characteristic that refines the relationship. For example, consider the relationship between a slot and a card. For a half-height card it is important to know the position at which the card is inserted, so a characteristic Position might be defined on the relationship to allow capturing of this in the inventory + */ + resourceSpecCharacteristic?: Array; + + /** + * The association role for this resource specification + */ + role?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-relationship-res.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..810ada44b8f923f713791a5046dbb9bb523e9f5c --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-relationship-res.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +import { ResourceSpecificationCharacteristicRes } from './resource-specification-characteristic-res'; +import { TimePeriod } from './time-period'; + +/** + * A migration, substitution, dependency or exclusivity relationship between/among resource specifications. + */ +export interface ResourceSpecificationRelationshipRes { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * The default number of the related resource that should be instantiated, for example a rack would typically have 4 cards, although it could support more. + */ + defaultQuantity?: number; + + /** + * Reference of the target ResourceSpecification + */ + href?: string; + + /** + * Unique identifier of target ResourceSpecification + */ + id?: string; + + /** + * The maximum number of the related resource that should be instantiated, for example a rack supports a maximum of 16 cards + */ + maximumQuantity?: number; + + /** + * The minimum number of the related resource that should be instantiated, for example a rack must have at least 1 card + */ + minimumQuantity?: number; + + /** + * The name given to the target resource specification instance + */ + name?: string; + + /** + * Type of relationship such as migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + + /** + * A characteristic that refines the relationship. For example, consider the relationship between a slot and a card. For a half-height card it is important to know the position at which the card is inserted, so a characteristic Position might be defined on the relationship to allow capturing of this in the inventory + */ + resourceSpecCharacteristic?: Array; + + /** + * The association role for this resource specification + */ + role?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification-update.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..fe953f593dd0821532b36153f5fdfb34baae0ca5 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification-update.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { FeatureSpecificationReq } from './feature-specification-req'; +import { RelatedParty } from './related-party'; +import { ResourceSpecificationCharacteristicReq } from './resource-specification-characteristic-req'; +import { ResourceSpecificationRelationshipReq } from './resource-specification-relationship-req'; +import { TargetResourceSchema } from './target-resource-schema'; +import { TimePeriod } from './time-period'; + +/** + * Resources are physical or non-physical components (or some combination of these) within an enterprise's infrastructure or inventory. They are typically consumed or used by services (for example a physical port assigned to a service) or contribute to the realization of a Product (for example, a SIM card). They can be drawn from the Application, Computing and Network domains, and include, for example, Network Elements, software, IT systems, content and information, and technology components. A ResourceSpecification is an abstract base class for representing a generic means for implementing a particular type of Resource. In essence, a ResourceSpecification defines the common attributes and relationships of a set of related Resources, while Resource defines a specific instance that is based on a particular ResourceSpecification. Skipped properties: id,href + */ +export interface ResourceSpecificationUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Complements the description of an element (for instance a resource) through video, pictures ... + */ + attachment?: Array; + + /** + * Category of the target resource like NetworkConnectivity, PhysicalLinks, Generic, L2Network and so on. + */ + category?: string; + + /** + * Description of this REST resource + */ + description?: string; + + /** + * A list of Features for this specification. + */ + featureSpecification?: Array; + + /** + * A flag indicates that if this resource specification is a bundled specification (true) or single (false). + */ + isBundle?: boolean; + + /** + * Used to indicate the current lifecycle status of the resource specification + */ + lifecycleStatus?: string; + + /** + * Name given to this REST resource + */ + name?: string; + + /** + * A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * A characteristic quality or distinctive feature of a ResourceSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process. + */ + resourceSpecCharacteristic?: Array; + + /** + * A migration, substitution, dependency or exclusivity relationship between/among resource specifications. + */ + resourceSpecRelationship?: Array; + targetResourceSchema?: TargetResourceSchema; + validFor?: TimePeriod; + + /** + * Resource Specification version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/resource-specification.ts b/src/app/openApis/resourceCatalogManagement/models/resource-specification.ts new file mode 100644 index 0000000000000000000000000000000000000000..18423a47e94922f4cdbf981f8bdb5a2923741b0a --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/resource-specification.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { FeatureSpecificationRes } from './feature-specification-res'; +import { RelatedParty } from './related-party'; +import { ResourceSpecificationCharacteristicRes } from './resource-specification-characteristic-res'; +import { ResourceSpecificationRelationshipRes } from './resource-specification-relationship-res'; +import { TargetResourceSchema } from './target-resource-schema'; +import { TimePeriod } from './time-period'; + +/** + * Resources are physical or non-physical components (or some combination of these) within an enterprise's infrastructure or inventory. They are typically consumed or used by services (for example a physical port assigned to a service) or contribute to the realization of a Product (for example, a SIM card). They can be drawn from the Application, Computing and Network domains, and include, for example, Network Elements, software, IT systems, content and information, and technology components. A ResourceSpecification is an abstract base class for representing a generic means for implementing a particular type of Resource. In essence, a ResourceSpecification defines the common attributes and relationships of a set of related Resources, while Resource defines a specific instance that is based on a particular ResourceSpecification. + */ +export interface ResourceSpecification { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * Complements the description of an element (for instance a resource) through video, pictures ... + */ + attachment?: Array; + + /** + * Category of the target resource like NetworkConnectivity, PhysicalLinks, Generic, L2Network and so on. + */ + category?: string; + + /** + * Description of this REST resource + */ + description?: string; + + /** + * A list of Features for this specification. + */ + featureSpecification?: Array; + + /** + * Hyperlink reference to this REST resource + */ + href?: string; + + /** + * Unique identifier of this REST resource + */ + id?: string; + + /** + * A flag indicates that if this resource specification is a bundled specification (true) or single (false). + */ + isBundle?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status of the resource specification + */ + lifecycleStatus?: string; + + /** + * Name given to this REST resource + */ + name?: string; + relatedParty?: Array; + + /** + * A characteristic quality or distinctive feature of a ResourceSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process. + */ + resourceSpecCharacteristic?: Array; + + /** + * A migration, substitution, dependency or exclusivity relationship between/among resource specifications. + */ + resourceSpecRelationship?: Array; + targetResourceSchema?: TargetResourceSchema; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Resource Specification version + */ + version?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/target-resource-schema.ts b/src/app/openApis/resourceCatalogManagement/models/target-resource-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..c14490b007138fd9dad8b81c80d77d78a1540915 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/target-resource-schema.ts @@ -0,0 +1,25 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target resource which is described by resource specification + */ +export interface TargetResourceSchema { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * This field provides a link to the schema describing the target resource + */ + atSchemaLocation: string; + + /** + * Class type of the target resource + */ + atType: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/models/time-period.ts b/src/app/openApis/resourceCatalogManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/resourceCatalogManagement/services.ts b/src/app/openApis/resourceCatalogManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..e5526bc58f90e81f60402089968e45c0ca7ad211 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services.ts @@ -0,0 +1,8 @@ +export { ExportJobService } from './services/export-job.service'; +export { ImportJobService } from './services/import-job.service'; +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ResourceCandidateService } from './services/resource-candidate.service'; +export { ResourceCatalogService } from './services/resource-catalog.service'; +export { ResourceCategoryService } from './services/resource-category.service'; +export { ResourceSpecificationService } from './services/resource-specification.service'; diff --git a/src/app/openApis/resourceCatalogManagement/services/events-subscription.service.ts b/src/app/openApis/resourceCatalogManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..d271be21fc26b0739c369ef3496b535cea63c922 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services/events-subscription.service.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener4Path = '/resourceCatalogManagement/v4/hub'; + static readonly unregisterListener4Path = '/resourceCatalogManagement/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener4Response(body: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener4(body: EventSubscriptionInput): __Observable { + return this.registerListener4Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return Deleted + */ + unregisterListener4Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourceCatalogManagement/v4/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return Deleted + */ + unregisterListener4(id: string): __Observable { + return this.unregisterListener4Response(id).pipe( + __map(_r => _r.body as Error) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/resourceCatalogManagement/services/export-job.service.ts b/src/app/openApis/resourceCatalogManagement/services/export-job.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..f31004b4a96a2167f9f7e4d6b5be81fa104d5d24 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services/export-job.service.ts @@ -0,0 +1,265 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ExportJob } from '../models/export-job'; +import { ExportJobCreate } from '../models/export-job-create'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class ExportJobService extends __BaseService { + static readonly listExportJob2Path = '/exportJob'; + static readonly createExportJob2Path = '/exportJob'; + static readonly retrieveExportJob2Path = '/exportJob/{id}'; + static readonly deleteExportJob2Path = '/exportJob/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ExportJob objects + * + * This operation list or find ExportJob entities + * @param params The `ExportJobService.ListExportJob2Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listExportJob2Response(params: ExportJobService.ListExportJob2Params): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/exportJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ExportJob objects + * + * This operation list or find ExportJob entities + * @param params The `ExportJobService.ListExportJob2Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listExportJob2(params: ExportJobService.ListExportJob2Params): __Observable> { + return this.listExportJob2Response(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ExportJob + * + * This operation creates a ExportJob entity. + * @param body The ExportJob to be created + * @return OK or Created + */ + createExportJob2Response(body: ExportJobCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/exportJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ExportJob + * + * This operation creates a ExportJob entity. + * @param body The ExportJob to be created + * @return OK or Created + */ + createExportJob2(body: ExportJobCreate): __Observable { + return this.createExportJob2Response(body).pipe( + __map(_r => _r.body as ExportJob | ExportJob) + ); + } + + /** + * Retrieves a ExportJob by ID + * + * This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ExportJobService.RetrieveExportJob2Params` containing the following parameters: + * + * - `id`: Identifier of the ExportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveExportJob2Response(params: ExportJobService.RetrieveExportJob2Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/exportJob/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ExportJob by ID + * + * This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ExportJobService.RetrieveExportJob2Params` containing the following parameters: + * + * - `id`: Identifier of the ExportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveExportJob2(params: ExportJobService.RetrieveExportJob2Params): __Observable { + return this.retrieveExportJob2Response(params).pipe( + __map(_r => _r.body as ExportJob) + ); + } + + /** + * Deletes a ExportJob + * + * This operation deletes a ExportJob entity. + * @param id Identifier of the ExportJob + * @return Deleted + */ + deleteExportJob2Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/exportJob/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ExportJob + * + * This operation deletes a ExportJob entity. + * @param id Identifier of the ExportJob + * @return Deleted + */ + deleteExportJob2(id: string): __Observable { + return this.deleteExportJob2Response(id).pipe( + __map(_r => _r.body as Error) + ); + } +} + +module ExportJobService { + + /** + * Parameters for listExportJob2 + */ + export interface ListExportJob2Params { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveExportJob2 + */ + export interface RetrieveExportJob2Params { + + /** + * Identifier of the ExportJob + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { ExportJobService } diff --git a/src/app/openApis/resourceCatalogManagement/services/import-job.service.ts b/src/app/openApis/resourceCatalogManagement/services/import-job.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..24b6d6b9ff6a7ddc35e614c965eb0f04f9f1a7fa --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services/import-job.service.ts @@ -0,0 +1,265 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ImportJob } from '../models/import-job'; +import { ImportJobCreate } from '../models/import-job-create'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class ImportJobService extends __BaseService { + static readonly listImportJob2Path = '/importJob'; + static readonly createImportJob2Path = '/importJob'; + static readonly retrieveImportJob2Path = '/importJob/{id}'; + static readonly deleteImportJob2Path = '/importJob/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ImportJob objects + * + * This operation list or find ImportJob entities + * @param params The `ImportJobService.ListImportJob2Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listImportJob2Response(params: ImportJobService.ListImportJob2Params): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/importJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ImportJob objects + * + * This operation list or find ImportJob entities + * @param params The `ImportJobService.ListImportJob2Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listImportJob2(params: ImportJobService.ListImportJob2Params): __Observable> { + return this.listImportJob2Response(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ImportJob + * + * This operation creates a ImportJob entity. + * @param body The ImportJob to be created + * @return OK or Created + */ + createImportJob2Response(body: ImportJobCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/importJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ImportJob + * + * This operation creates a ImportJob entity. + * @param body The ImportJob to be created + * @return OK or Created + */ + createImportJob2(body: ImportJobCreate): __Observable { + return this.createImportJob2Response(body).pipe( + __map(_r => _r.body as ImportJob | ImportJob) + ); + } + + /** + * Retrieves a ImportJob by ID + * + * This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ImportJobService.RetrieveImportJob2Params` containing the following parameters: + * + * - `id`: Identifier of the ImportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveImportJob2Response(params: ImportJobService.RetrieveImportJob2Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/importJob/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ImportJob by ID + * + * This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ImportJobService.RetrieveImportJob2Params` containing the following parameters: + * + * - `id`: Identifier of the ImportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveImportJob2(params: ImportJobService.RetrieveImportJob2Params): __Observable { + return this.retrieveImportJob2Response(params).pipe( + __map(_r => _r.body as ImportJob) + ); + } + + /** + * Deletes a ImportJob + * + * This operation deletes a ImportJob entity. + * @param id Identifier of the ImportJob + * @return Deleted + */ + deleteImportJob2Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/importJob/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ImportJob + * + * This operation deletes a ImportJob entity. + * @param id Identifier of the ImportJob + * @return Deleted + */ + deleteImportJob2(id: string): __Observable { + return this.deleteImportJob2Response(id).pipe( + __map(_r => _r.body as Error) + ); + } +} + +module ImportJobService { + + /** + * Parameters for listImportJob2 + */ + export interface ListImportJob2Params { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveImportJob2 + */ + export interface RetrieveImportJob2Params { + + /** + * Identifier of the ImportJob + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { ImportJobService } diff --git a/src/app/openApis/resourceCatalogManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/resourceCatalogManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8d769a6ecfbcc5b36001d42358b0d1fb702e8986 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,731 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { ExportJobCreateEvent } from '../models/export-job-create-event'; +import { ExportJobStateChangeEvent } from '../models/export-job-state-change-event'; +import { ImportJobCreateEvent } from '../models/import-job-create-event'; +import { ImportJobStateChangeEvent } from '../models/import-job-state-change-event'; +import { ResourceCandidateChangeEvent } from '../models/resource-candidate-change-event'; +import { ResourceCandidateCreateEvent } from '../models/resource-candidate-create-event'; +import { ResourceCandidateDeleteEvent } from '../models/resource-candidate-delete-event'; +import { ResourceCatalogChangeEvent } from '../models/resource-catalog-change-event'; +import { ResourceCatalogCreateEvent } from '../models/resource-catalog-create-event'; +import { ResourceCatalogDeleteEvent } from '../models/resource-catalog-delete-event'; +import { ResourceCategoryChangeEvent } from '../models/resource-category-change-event'; +import { ResourceCategoryCreateEvent } from '../models/resource-category-create-event'; +import { ResourceCategoryDeleteEvent } from '../models/resource-category-delete-event'; +import { ResourceSpecificationChangeEvent } from '../models/resource-specification-change-event'; +import { ResourceSpecificationCreateEvent } from '../models/resource-specification-create-event'; +import { ResourceSpecificationDeleteEvent } from '../models/resource-specification-delete-event'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToExportJobCreateEventPath = '/resourceCatalogManagement/v4/listener/exportJobCreateEvent'; + static readonly listenToExportJobStateChangeEventPath = '/resourceCatalogManagement/v4/listener/exportJobStateChangeEvent'; + static readonly listenToImportJobCreateEventPath = '/resourceCatalogManagement/v4/listener/importJobCreateEvent'; + static readonly listenToImportJobStateChangeEventPath = '/resourceCatalogManagement/v4/listener/importJobStateChangeEvent'; + static readonly listenToResourceCandidateChangeEventPath = '/resourceCatalogManagement/v4/listener/resourceCandidateChangeEvent'; + static readonly listenToResourceCandidateCreateEventPath = '/resourceCatalogManagement/v4/listener/resourceCandidateCreateEvent'; + static readonly listenToResourceCandidateDeleteEventPath = '/resourceCatalogManagement/v4/listener/resourceCandidateDeleteEvent'; + static readonly listenToResourceCatalogChangeEventPath = '/resourceCatalogManagement/v4/listener/resourceCatalogChangeEvent'; + static readonly listenToResourceCatalogCreateEventPath = '/resourceCatalogManagement/v4/listener/resourceCatalogCreateEvent'; + static readonly listenToResourceCatalogDeleteEventPath = '/resourceCatalogManagement/v4/listener/resourceCatalogDeleteEvent'; + static readonly listenToResourceCategoryChangeEventPath = '/resourceCatalogManagement/v4/listener/resourceCategoryChangeEvent'; + static readonly listenToResourceCategoryCreateEventPath = '/resourceCatalogManagement/v4/listener/resourceCategoryCreateEvent'; + static readonly listenToResourceCategoryDeleteEventPath = '/resourceCatalogManagement/v4/listener/resourceCategoryDeleteEvent'; + static readonly listenToResourceSpecificationChangeEventPath = '/resourceCatalogManagement/v4/listener/resourceSpecificationChangeEvent'; + static readonly listenToResourceSpecificationCreateEventPath = '/resourceCatalogManagement/v4/listener/resourceSpecificationCreateEvent'; + static readonly listenToResourceSpecificationDeleteEventPath = '/resourceCatalogManagement/v4/listener/resourceSpecificationDeleteEvent'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity ExportJobCreateEvent + * + * Example of a client listener for receiving the notification ExportJobCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToExportJobCreateEventResponse(body: ExportJobCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/exportJobCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ExportJobCreateEvent + * + * Example of a client listener for receiving the notification ExportJobCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToExportJobCreateEvent(body: ExportJobCreateEvent): __Observable { + return this.listenToExportJobCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ExportJobStateChangeEvent + * + * Example of a client listener for receiving the notification ExportJobStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToExportJobStateChangeEventResponse(body: ExportJobStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/exportJobStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ExportJobStateChangeEvent + * + * Example of a client listener for receiving the notification ExportJobStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToExportJobStateChangeEvent(body: ExportJobStateChangeEvent): __Observable { + return this.listenToExportJobStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ImportJobCreateEvent + * + * Example of a client listener for receiving the notification ImportJobCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToImportJobCreateEventResponse(body: ImportJobCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/importJobCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ImportJobCreateEvent + * + * Example of a client listener for receiving the notification ImportJobCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToImportJobCreateEvent(body: ImportJobCreateEvent): __Observable { + return this.listenToImportJobCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ImportJobStateChangeEvent + * + * Example of a client listener for receiving the notification ImportJobStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToImportJobStateChangeEventResponse(body: ImportJobStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/importJobStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ImportJobStateChangeEvent + * + * Example of a client listener for receiving the notification ImportJobStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToImportJobStateChangeEvent(body: ImportJobStateChangeEvent): __Observable { + return this.listenToImportJobStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCandidateChangeEvent + * + * Example of a client listener for receiving the notification ResourceCandidateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCandidateChangeEventResponse(body: ResourceCandidateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCandidateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCandidateChangeEvent + * + * Example of a client listener for receiving the notification ResourceCandidateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCandidateChangeEvent(body: ResourceCandidateChangeEvent): __Observable { + return this.listenToResourceCandidateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCandidateCreateEvent + * + * Example of a client listener for receiving the notification ResourceCandidateCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCandidateCreateEventResponse(body: ResourceCandidateCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCandidateCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCandidateCreateEvent + * + * Example of a client listener for receiving the notification ResourceCandidateCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCandidateCreateEvent(body: ResourceCandidateCreateEvent): __Observable { + return this.listenToResourceCandidateCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCandidateDeleteEvent + * + * Example of a client listener for receiving the notification ResourceCandidateDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCandidateDeleteEventResponse(body: ResourceCandidateDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCandidateDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCandidateDeleteEvent + * + * Example of a client listener for receiving the notification ResourceCandidateDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCandidateDeleteEvent(body: ResourceCandidateDeleteEvent): __Observable { + return this.listenToResourceCandidateDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCatalogChangeEvent + * + * Example of a client listener for receiving the notification ResourceCatalogChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCatalogChangeEventResponse(body: ResourceCatalogChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCatalogChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCatalogChangeEvent + * + * Example of a client listener for receiving the notification ResourceCatalogChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCatalogChangeEvent(body: ResourceCatalogChangeEvent): __Observable { + return this.listenToResourceCatalogChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCatalogCreateEvent + * + * Example of a client listener for receiving the notification ResourceCatalogCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCatalogCreateEventResponse(body: ResourceCatalogCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCatalogCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCatalogCreateEvent + * + * Example of a client listener for receiving the notification ResourceCatalogCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCatalogCreateEvent(body: ResourceCatalogCreateEvent): __Observable { + return this.listenToResourceCatalogCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCatalogDeleteEvent + * + * Example of a client listener for receiving the notification ResourceCatalogDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCatalogDeleteEventResponse(body: ResourceCatalogDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCatalogDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCatalogDeleteEvent + * + * Example of a client listener for receiving the notification ResourceCatalogDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCatalogDeleteEvent(body: ResourceCatalogDeleteEvent): __Observable { + return this.listenToResourceCatalogDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCategoryChangeEvent + * + * Example of a client listener for receiving the notification ResourceCategoryChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCategoryChangeEventResponse(body: ResourceCategoryChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCategoryChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCategoryChangeEvent + * + * Example of a client listener for receiving the notification ResourceCategoryChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCategoryChangeEvent(body: ResourceCategoryChangeEvent): __Observable { + return this.listenToResourceCategoryChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCategoryCreateEvent + * + * Example of a client listener for receiving the notification ResourceCategoryCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCategoryCreateEventResponse(body: ResourceCategoryCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCategoryCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCategoryCreateEvent + * + * Example of a client listener for receiving the notification ResourceCategoryCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCategoryCreateEvent(body: ResourceCategoryCreateEvent): __Observable { + return this.listenToResourceCategoryCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCategoryDeleteEvent + * + * Example of a client listener for receiving the notification ResourceCategoryDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCategoryDeleteEventResponse(body: ResourceCategoryDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceCategoryDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCategoryDeleteEvent + * + * Example of a client listener for receiving the notification ResourceCategoryDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCategoryDeleteEvent(body: ResourceCategoryDeleteEvent): __Observable { + return this.listenToResourceCategoryDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceSpecificationChangeEvent + * + * Example of a client listener for receiving the notification ResourceSpecificationChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceSpecificationChangeEventResponse(body: ResourceSpecificationChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceSpecificationChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceSpecificationChangeEvent + * + * Example of a client listener for receiving the notification ResourceSpecificationChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceSpecificationChangeEvent(body: ResourceSpecificationChangeEvent): __Observable { + return this.listenToResourceSpecificationChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceSpecificationCreateEvent + * + * Example of a client listener for receiving the notification ResourceSpecificationCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceSpecificationCreateEventResponse(body: ResourceSpecificationCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceSpecificationCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceSpecificationCreateEvent + * + * Example of a client listener for receiving the notification ResourceSpecificationCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceSpecificationCreateEvent(body: ResourceSpecificationCreateEvent): __Observable { + return this.listenToResourceSpecificationCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceSpecificationDeleteEvent + * + * Example of a client listener for receiving the notification ResourceSpecificationDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceSpecificationDeleteEventResponse(body: ResourceSpecificationDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/listener/resourceSpecificationDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceSpecificationDeleteEvent + * + * Example of a client listener for receiving the notification ResourceSpecificationDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceSpecificationDeleteEvent(body: ResourceSpecificationDeleteEvent): __Observable { + return this.listenToResourceSpecificationDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/resourceCatalogManagement/services/resource-candidate.service.ts b/src/app/openApis/resourceCatalogManagement/services/resource-candidate.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ef9e0e8e418344e0dcb46e08dce3470d73d6698f --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services/resource-candidate.service.ts @@ -0,0 +1,335 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ResourceCandidate } from '../models/resource-candidate'; +import { ResourceCandidateCreate } from '../models/resource-candidate-create'; +import { ResourceCandidateUpdate } from '../models/resource-candidate-update'; +@Injectable({ + providedIn: 'root', +}) +class ResourceCandidateService extends __BaseService { + static readonly listResourceCandidatePath = '/resourceCatalogManagement/v4/resourceCandidate'; + static readonly createResourceCandidatePath = '/resourceCatalogManagement/v4/resourceCandidate'; + static readonly retrieveResourceCandidatePath = '/resourceCatalogManagement/v4/resourceCandidate/{id}'; + static readonly deleteResourceCandidatePath = '/resourceCatalogManagement/v4/resourceCandidate/{id}'; + static readonly patchResourceCandidatePath = '/resourceCatalogManagement/v4/resourceCandidate/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ResourceCandidate objects + * + * This operation list or find ResourceCandidate entities + * @param params The `ResourceCandidateService.ListResourceCandidateParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceCandidateResponse(params: ResourceCandidateService.ListResourceCandidateParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCandidate`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ResourceCandidate objects + * + * This operation list or find ResourceCandidate entities + * @param params The `ResourceCandidateService.ListResourceCandidateParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceCandidate(params: ResourceCandidateService.ListResourceCandidateParams): __Observable> { + return this.listResourceCandidateResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ResourceCandidate + * + * This operation creates a ResourceCandidate entity. + * @param body The ResourceCandidate to be created + * @return OK or Created + */ + createResourceCandidateResponse(body: ResourceCandidateCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCandidate`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ResourceCandidate + * + * This operation creates a ResourceCandidate entity. + * @param body The ResourceCandidate to be created + * @return OK or Created + */ + createResourceCandidate(body: ResourceCandidateCreate): __Observable { + return this.createResourceCandidateResponse(body).pipe( + __map(_r => _r.body as ResourceCandidate | ResourceCandidate) + ); + } + + /** + * Retrieves a ResourceCandidate by ID + * + * This operation retrieves a ResourceCandidate entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceCandidateService.RetrieveResourceCandidateParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCandidate + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceCandidateResponse(params: ResourceCandidateService.RetrieveResourceCandidateParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCandidate/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ResourceCandidate by ID + * + * This operation retrieves a ResourceCandidate entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceCandidateService.RetrieveResourceCandidateParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCandidate + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceCandidate(params: ResourceCandidateService.RetrieveResourceCandidateParams): __Observable { + return this.retrieveResourceCandidateResponse(params).pipe( + __map(_r => _r.body as ResourceCandidate) + ); + } + + /** + * Deletes a ResourceCandidate + * + * This operation deletes a ResourceCandidate entity. + * @param id Identifier of the ResourceCandidate + * @return Deleted + */ + deleteResourceCandidateResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCandidate/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ResourceCandidate + * + * This operation deletes a ResourceCandidate entity. + * @param id Identifier of the ResourceCandidate + * @return Deleted + */ + deleteResourceCandidate(id: string): __Observable<{}> { + return this.deleteResourceCandidateResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ResourceCandidate + * + * This operation updates partially a ResourceCandidate entity. + * @param params The `ResourceCandidateService.PatchResourceCandidateParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCandidate + * + * - `body`: The ResourceCandidate to be updated + * + * @return Updated + */ + patchResourceCandidateResponse(params: ResourceCandidateService.PatchResourceCandidateParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCandidate/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ResourceCandidate + * + * This operation updates partially a ResourceCandidate entity. + * @param params The `ResourceCandidateService.PatchResourceCandidateParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCandidate + * + * - `body`: The ResourceCandidate to be updated + * + * @return Updated + */ + patchResourceCandidate(params: ResourceCandidateService.PatchResourceCandidateParams): __Observable { + return this.patchResourceCandidateResponse(params).pipe( + __map(_r => _r.body as ResourceCandidate) + ); + } +} + +module ResourceCandidateService { + + /** + * Parameters for listResourceCandidate + */ + export interface ListResourceCandidateParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveResourceCandidate + */ + export interface RetrieveResourceCandidateParams { + + /** + * Identifier of the ResourceCandidate + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchResourceCandidate + */ + export interface PatchResourceCandidateParams { + + /** + * Identifier of the ResourceCandidate + */ + id: string; + + /** + * The ResourceCandidate to be updated + */ + body: ResourceCandidateUpdate; + } +} + +export { ResourceCandidateService } diff --git a/src/app/openApis/resourceCatalogManagement/services/resource-catalog.service.ts b/src/app/openApis/resourceCatalogManagement/services/resource-catalog.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..d94af60cfb19b8d986175cdfb1dfca732a7433b8 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services/resource-catalog.service.ts @@ -0,0 +1,335 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ResourceCatalog } from '../models/resource-catalog'; +import { ResourceCatalogCreate } from '../models/resource-catalog-create'; +import { ResourceCatalogUpdate } from '../models/resource-catalog-update'; +@Injectable({ + providedIn: 'root', +}) +class ResourceCatalogService extends __BaseService { + static readonly listResourceCatalogPath = '/resourceCatalogManagement/v4/resourceCatalog'; + static readonly createResourceCatalogPath = '/resourceCatalogManagement/v4/resourceCatalog'; + static readonly retrieveResourceCatalogPath = '/resourceCatalogManagement/v4/resourceCatalog/{id}'; + static readonly deleteResourceCatalogPath = '/resourceCatalogManagement/v4/resourceCatalog/{id}'; + static readonly patchResourceCatalogPath = '/resourceCatalogManagement/v4/resourceCatalog/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ResourceCatalog objects + * + * This operation list or find ResourceCatalog entities + * @param params The `ResourceCatalogService.ListResourceCatalogParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceCatalogResponse(params: ResourceCatalogService.ListResourceCatalogParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCatalog`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ResourceCatalog objects + * + * This operation list or find ResourceCatalog entities + * @param params The `ResourceCatalogService.ListResourceCatalogParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceCatalog(params: ResourceCatalogService.ListResourceCatalogParams): __Observable> { + return this.listResourceCatalogResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ResourceCatalog + * + * This operation creates a ResourceCatalog entity. + * @param resourceCatalog The Resource Catalog to be created + * @return OK or Created + */ + createResourceCatalogResponse(resourceCatalog: ResourceCatalogCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = resourceCatalog; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCatalog`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ResourceCatalog + * + * This operation creates a ResourceCatalog entity. + * @param resourceCatalog The Resource Catalog to be created + * @return OK or Created + */ + createResourceCatalog(resourceCatalog: ResourceCatalogCreate): __Observable { + return this.createResourceCatalogResponse(resourceCatalog).pipe( + __map(_r => _r.body as ResourceCatalog | ResourceCatalog) + ); + } + + /** + * Retrieves a ResourceCatalog by ID + * + * This operation retrieves a ResourceCatalog entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceCatalogService.RetrieveResourceCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCatalog + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceCatalogResponse(params: ResourceCatalogService.RetrieveResourceCatalogParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCatalog/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ResourceCatalog by ID + * + * This operation retrieves a ResourceCatalog entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceCatalogService.RetrieveResourceCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCatalog + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceCatalog(params: ResourceCatalogService.RetrieveResourceCatalogParams): __Observable { + return this.retrieveResourceCatalogResponse(params).pipe( + __map(_r => _r.body as ResourceCatalog) + ); + } + + /** + * Deletes a ResourceCatalog + * + * This operation deletes a ResourceCatalog entity. + * @param id Identifier of the ResourceCatalog + * @return Deleted + */ + deleteResourceCatalogResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCatalog/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ResourceCatalog + * + * This operation deletes a ResourceCatalog entity. + * @param id Identifier of the ResourceCatalog + * @return Deleted + */ + deleteResourceCatalog(id: string): __Observable<{}> { + return this.deleteResourceCatalogResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ResourceCatalog + * + * This operation updates partially a ResourceCatalog entity. + * @param params The `ResourceCatalogService.PatchResourceCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCatalog + * + * - `body`: The ResourceCatalog to be updated + * + * @return Updated + */ + patchResourceCatalogResponse(params: ResourceCatalogService.PatchResourceCatalogParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCatalog/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ResourceCatalog + * + * This operation updates partially a ResourceCatalog entity. + * @param params The `ResourceCatalogService.PatchResourceCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCatalog + * + * - `body`: The ResourceCatalog to be updated + * + * @return Updated + */ + patchResourceCatalog(params: ResourceCatalogService.PatchResourceCatalogParams): __Observable { + return this.patchResourceCatalogResponse(params).pipe( + __map(_r => _r.body as ResourceCatalog) + ); + } +} + +module ResourceCatalogService { + + /** + * Parameters for listResourceCatalog + */ + export interface ListResourceCatalogParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveResourceCatalog + */ + export interface RetrieveResourceCatalogParams { + + /** + * Identifier of the ResourceCatalog + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchResourceCatalog + */ + export interface PatchResourceCatalogParams { + + /** + * Identifier of the ResourceCatalog + */ + id: string; + + /** + * The ResourceCatalog to be updated + */ + body: ResourceCatalogUpdate; + } +} + +export { ResourceCatalogService } diff --git a/src/app/openApis/resourceCatalogManagement/services/resource-category.service.ts b/src/app/openApis/resourceCatalogManagement/services/resource-category.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..5159ad2534e2166000dbf7fb16162f451c40e23e --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services/resource-category.service.ts @@ -0,0 +1,335 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ResourceCategory } from '../models/resource-category'; +import { ResourceCategoryCreate } from '../models/resource-category-create'; +import { ResourceCategoryUpdate } from '../models/resource-category-update'; +@Injectable({ + providedIn: 'root', +}) +class ResourceCategoryService extends __BaseService { + static readonly listResourceCategoryPath = '/resourceCatalogManagement/v4/resourceCategory'; + static readonly createResourceCategoryPath = '/resourceCatalogManagement/v4/resourceCategory'; + static readonly retrieveResourceCategoryPath = '/resourceCatalogManagement/v4/resourceCategory/{id}'; + static readonly deleteResourceCategoryPath = '/resourceCatalogManagement/v4/resourceCategory/{id}'; + static readonly patchResourceCategoryPath = '/resourceCatalogManagement/v4/resourceCategory/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ResourceCategory objects + * + * This operation list or find ResourceCategory entities + * @param params The `ResourceCategoryService.ListResourceCategoryParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceCategoryResponse(params: ResourceCategoryService.ListResourceCategoryParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCategory`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ResourceCategory objects + * + * This operation list or find ResourceCategory entities + * @param params The `ResourceCategoryService.ListResourceCategoryParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceCategory(params: ResourceCategoryService.ListResourceCategoryParams): __Observable> { + return this.listResourceCategoryResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ResourceCategory + * + * This operation creates a ResourceCategory entity. + * @param resCategory The ServiceCategory to be created + * @return OK or Created + */ + createResourceCategoryResponse(resCategory: ResourceCategoryCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = resCategory; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCategory`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ResourceCategory + * + * This operation creates a ResourceCategory entity. + * @param resCategory The ServiceCategory to be created + * @return OK or Created + */ + createResourceCategory(resCategory: ResourceCategoryCreate): __Observable { + return this.createResourceCategoryResponse(resCategory).pipe( + __map(_r => _r.body as ResourceCategory | ResourceCategory) + ); + } + + /** + * Retrieves a ResourceCategory by ID + * + * This operation retrieves a ResourceCategory entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceCategoryService.RetrieveResourceCategoryParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCategory + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceCategoryResponse(params: ResourceCategoryService.RetrieveResourceCategoryParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCategory/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ResourceCategory by ID + * + * This operation retrieves a ResourceCategory entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceCategoryService.RetrieveResourceCategoryParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceCategory + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceCategory(params: ResourceCategoryService.RetrieveResourceCategoryParams): __Observable { + return this.retrieveResourceCategoryResponse(params).pipe( + __map(_r => _r.body as ResourceCategory) + ); + } + + /** + * Deletes a ResourceCategory + * + * This operation deletes a ResourceCategory entity. + * @param id Identifier of the Resource Category + * @return Deleted + */ + deleteResourceCategoryResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCategory/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ResourceCategory + * + * This operation deletes a ResourceCategory entity. + * @param id Identifier of the Resource Category + * @return Deleted + */ + deleteResourceCategory(id: string): __Observable<{}> { + return this.deleteResourceCategoryResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ResourceCategory + * + * This operation updates partially a ResourceCategory entity. + * @param params The `ResourceCategoryService.PatchResourceCategoryParams` containing the following parameters: + * + * - `resourceCategory`: The ResourceCategory to be updated + * + * - `id`: Identifier of the ResourceCategory + * + * @return Updated + */ + patchResourceCategoryResponse(params: ResourceCategoryService.PatchResourceCategoryParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.resourceCategory; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/resourceCatalogManagement/v4/resourceCategory/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ResourceCategory + * + * This operation updates partially a ResourceCategory entity. + * @param params The `ResourceCategoryService.PatchResourceCategoryParams` containing the following parameters: + * + * - `resourceCategory`: The ResourceCategory to be updated + * + * - `id`: Identifier of the ResourceCategory + * + * @return Updated + */ + patchResourceCategory(params: ResourceCategoryService.PatchResourceCategoryParams): __Observable { + return this.patchResourceCategoryResponse(params).pipe( + __map(_r => _r.body as ResourceCategory) + ); + } +} + +module ResourceCategoryService { + + /** + * Parameters for listResourceCategory + */ + export interface ListResourceCategoryParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveResourceCategory + */ + export interface RetrieveResourceCategoryParams { + + /** + * Identifier of the ResourceCategory + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchResourceCategory + */ + export interface PatchResourceCategoryParams { + + /** + * The ResourceCategory to be updated + */ + resourceCategory: ResourceCategoryUpdate; + + /** + * Identifier of the ResourceCategory + */ + id: string; + } +} + +export { ResourceCategoryService } diff --git a/src/app/openApis/resourceCatalogManagement/services/resource-specification.service.ts b/src/app/openApis/resourceCatalogManagement/services/resource-specification.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..e3d3478dab4fb6be4bf50ecfbe884a59c4bf60e9 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/services/resource-specification.service.ts @@ -0,0 +1,562 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ResourceSpecification } from '../models/resource-specification'; +import { JsonNode } from '../models/json-node'; +import { ResourceSpecificationUpdate } from '../models/resource-specification-update'; +import { ByteArrayResource } from '../models/byte-array-resource'; +@Injectable({ + providedIn: 'root', +}) +class ResourceSpecificationService extends __BaseService { + static readonly listResourceSpecificationPath = '/resourceCatalogManagement/v4/resourceSpecification'; + static readonly createResourceSpecificationPath = '/resourceCatalogManagement/v4/resourceSpecification'; + static readonly retrieveResourceSpecificationPath = '/resourceCatalogManagement/v4/resourceSpecification/{id}'; + static readonly deleteResourceSpecificationPath = '/resourceCatalogManagement/v4/resourceSpecification/{id}'; + static readonly patchResourceSpecificationPath = '/resourceCatalogManagement/v4/resourceSpecification/{id}'; + static readonly addAttachmentToResourceSpecPath = '/resourceCatalogManagement/v4/resourceSpecification/{id}/attachment'; + static readonly getAttachment1Path = '/resourceCatalogManagement/v4/resourceSpecification/{id}/attachment/{attid}'; + static readonly getAttachmentWithFilename1Path = '/resourceCatalogManagement/v4/resourceSpecification/{id}/attachment/{attid}/{afilename}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ResourceSpecification objects + * + * This operation list or find ResourceSpecification entities + * @param params The `ResourceSpecificationService.ListResourceSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceSpecificationResponse(params: ResourceSpecificationService.ListResourceSpecificationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ResourceSpecification objects + * + * This operation list or find ResourceSpecification entities + * @param params The `ResourceSpecificationService.ListResourceSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceSpecification(params: ResourceSpecificationService.ListResourceSpecificationParams): __Observable> { + return this.listResourceSpecificationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ResourceSpecification + * + * This operation creates a ResourceSpecification entity. + * @param jsonNode The ResourceSpecification to be created + * @return OK or Created + */ + createResourceSpecificationResponse(jsonNode: JsonNode): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = jsonNode; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/resourceSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ResourceSpecification + * + * This operation creates a ResourceSpecification entity. + * @param jsonNode The ResourceSpecification to be created + * @return OK or Created + */ + createResourceSpecification(jsonNode: JsonNode): __Observable { + return this.createResourceSpecificationResponse(jsonNode).pipe( + __map(_r => _r.body as ResourceSpecification | ResourceSpecification) + ); + } + + /** + * Retrieves a ResourceSpecification by ID + * + * This operation retrieves a ResourceSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceSpecificationService.RetrieveResourceSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceSpecificationResponse(params: ResourceSpecificationService.RetrieveResourceSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ResourceSpecification by ID + * + * This operation retrieves a ResourceSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceSpecificationService.RetrieveResourceSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceSpecification(params: ResourceSpecificationService.RetrieveResourceSpecificationParams): __Observable { + return this.retrieveResourceSpecificationResponse(params).pipe( + __map(_r => _r.body as ResourceSpecification) + ); + } + + /** + * Deletes a ResourceSpecification + * + * This operation deletes a ResourceSpecification entity. + * @param id Identifier of the ResourceSpecification + * @return Deleted + */ + deleteResourceSpecificationResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourceCatalogManagement/v4/resourceSpecification/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ResourceSpecification + * + * This operation deletes a ResourceSpecification entity. + * @param id Identifier of the ResourceSpecification + * @return Deleted + */ + deleteResourceSpecification(id: string): __Observable<{}> { + return this.deleteResourceSpecificationResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ResourceSpecification + * + * This operation updates partially a ResourceSpecification entity. + * @param params The `ResourceSpecificationService.PatchResourceSpecificationParams` containing the following parameters: + * + * - `serviceSpecification`: The ResourceSpecification to be updated + * + * - `id`: Identifier of the ResourceSpecification + * + * @return Updated + */ + patchResourceSpecificationResponse(params: ResourceSpecificationService.PatchResourceSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.serviceSpecification; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/resourceCatalogManagement/v4/resourceSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ResourceSpecification + * + * This operation updates partially a ResourceSpecification entity. + * @param params The `ResourceSpecificationService.PatchResourceSpecificationParams` containing the following parameters: + * + * - `serviceSpecification`: The ResourceSpecification to be updated + * + * - `id`: Identifier of the ResourceSpecification + * + * @return Updated + */ + patchResourceSpecification(params: ResourceSpecificationService.PatchResourceSpecificationParams): __Observable { + return this.patchResourceSpecificationResponse(params).pipe( + __map(_r => _r.body as ResourceSpecification) + ); + } + + /** + * Adds an attachment to a 'ResourceSpecification' + * + * This operation adds an attachment to a ResourceSpecification + * @param params The `ResourceSpecificationService.AddAttachmentToResourceSpecParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceSpecification + * + * - `afile`: The Attachment file to be added + * + * @return OK or Created + */ + addAttachmentToResourceSpecResponse(params: ResourceSpecificationService.AddAttachmentToResourceSpecParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let __formData = new FormData(); + __body = __formData; + + // EDIT: editing auto-generated services from ng-swagger-gen + if (params.afile != null) { __formData.append('afile', params.afile as string | Blob);} + + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceCatalogManagement/v4/resourceSpecification/${encodeURIComponent(params.id)}/attachment`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Adds an attachment to a 'ResourceSpecification' + * + * This operation adds an attachment to a ResourceSpecification + * @param params The `ResourceSpecificationService.AddAttachmentToResourceSpecParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceSpecification + * + * - `afile`: The Attachment file to be added + * + * @return OK or Created + */ + addAttachmentToResourceSpec(params: ResourceSpecificationService.AddAttachmentToResourceSpecParams): __Observable { + return this.addAttachmentToResourceSpecResponse(params).pipe( + __map(_r => _r.body as ResourceSpecification | ResourceSpecification) + ); + } + + /** + * Get an attachment from a 'ResourceSpecification' + * + * This operation gets an attachment + * @param params The `ResourceSpecificationService.GetAttachment1Params` containing the following parameters: + * + * - `id`: Identifier of the ResourceSpecification + * + * - `attid`: Identifier of the Attachment + * + * @return Success + */ + getAttachment1Response(params: ResourceSpecificationService.GetAttachment1Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceSpecification/${encodeURIComponent(params.id)}/attachment/${encodeURIComponent(params.attid)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Get an attachment from a 'ResourceSpecification' + * + * This operation gets an attachment + * @param params The `ResourceSpecificationService.GetAttachment1Params` containing the following parameters: + * + * - `id`: Identifier of the ResourceSpecification + * + * - `attid`: Identifier of the Attachment + * + * @return Success + */ + getAttachment1(params: ResourceSpecificationService.GetAttachment1Params): __Observable { + return this.getAttachment1Response(params).pipe( + __map(_r => _r.body as ByteArrayResource) + ); + } + + /** + * Get an attachment from a 'ResourceSpecification' with filename + * + * This operation gets an attachment + * @param params The `ResourceSpecificationService.GetAttachmentWithFilename1Params` containing the following parameters: + * + * - `id`: Identifier of the ResourceSpecification + * + * - `attid`: Identifier of the Attachment + * + * - `afilename`: Identifier of the Filename + * + * @return Success + */ + getAttachmentWithFilename1Response(params: ResourceSpecificationService.GetAttachmentWithFilename1Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceCatalogManagement/v4/resourceSpecification/${encodeURIComponent(params.id)}/attachment/${encodeURIComponent(params.attid)}/${encodeURIComponent(params.afilename)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Get an attachment from a 'ResourceSpecification' with filename + * + * This operation gets an attachment + * @param params The `ResourceSpecificationService.GetAttachmentWithFilename1Params` containing the following parameters: + * + * - `id`: Identifier of the ResourceSpecification + * + * - `attid`: Identifier of the Attachment + * + * - `afilename`: Identifier of the Filename + * + * @return Success + */ + getAttachmentWithFilename1(params: ResourceSpecificationService.GetAttachmentWithFilename1Params): __Observable { + return this.getAttachmentWithFilename1Response(params).pipe( + __map(_r => _r.body as ByteArrayResource) + ); + } +} + +module ResourceSpecificationService { + + /** + * Parameters for listResourceSpecification + */ + export interface ListResourceSpecificationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveResourceSpecification + */ + export interface RetrieveResourceSpecificationParams { + + /** + * Identifier of the ResourceSpecification + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchResourceSpecification + */ + export interface PatchResourceSpecificationParams { + + /** + * The ResourceSpecification to be updated + */ + serviceSpecification: ResourceSpecificationUpdate; + + /** + * Identifier of the ResourceSpecification + */ + id: string; + } + + /** + * Parameters for addAttachmentToResourceSpec + */ + export interface AddAttachmentToResourceSpecParams { + + /** + * Identifier of the ResourceSpecification + */ + id: string; + + /** + * The Attachment file to be added + */ + + //EDIT: Manually editing auto-generated property + afile: Blob; + } + + /** + * Parameters for getAttachment1 + */ + export interface GetAttachment1Params { + + /** + * Identifier of the ResourceSpecification + */ + id: string; + + /** + * Identifier of the Attachment + */ + attid: string; + } + + /** + * Parameters for getAttachmentWithFilename1 + */ + export interface GetAttachmentWithFilename1Params { + + /** + * Identifier of the ResourceSpecification + */ + id: string; + + /** + * Identifier of the Attachment + */ + attid: string; + + /** + * Identifier of the Filename + */ + afilename: string; + } +} + +export { ResourceSpecificationService } diff --git a/src/app/openApis/resourceCatalogManagement/strict-http-response.ts b/src/app/openApis/resourceCatalogManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/resourceCatalogManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/resourceInventoryManagement/api-configuration.ts b/src/app/openApis/resourceInventoryManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/api.module.ts b/src/app/openApis/resourceInventoryManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..47b5058cf2293c04c8564aa1f26c605fd48462be --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/api.module.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ResourceService } from './services/resource.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + EventsSubscriptionService, + NotificationListenersClientSideService, + ResourceService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/resourceInventoryManagement/base-service.ts b/src/app/openApis/resourceInventoryManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/resourceInventoryManagement/models.ts b/src/app/openApis/resourceInventoryManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..d365e5e671ed4e4cc35d2f1d55157c0a19081e1b --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models.ts @@ -0,0 +1,40 @@ +export { Any } from './models/any'; +export { AttachmentRefOrValue } from './models/attachment-ref-or-value'; +export { Characteristic } from './models/characteristic'; +export { CharacteristicRelationship } from './models/characteristic-relationship'; +export { CharacteristicRelationshipReq } from './models/characteristic-relationship-req'; +export { CharacteristicRelationshipRes } from './models/characteristic-relationship-res'; +export { CharacteristicReq } from './models/characteristic-req'; +export { CharacteristicRes } from './models/characteristic-res'; +export { ConstraintRef } from './models/constraint-ref'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { Feature } from './models/feature'; +export { FeatureRelationship } from './models/feature-relationship'; +export { FeatureReq } from './models/feature-req'; +export { FeatureRes } from './models/feature-res'; +export { Note } from './models/note'; +export { Quantity } from './models/quantity'; +export { RelatedParty } from './models/related-party'; +export { RelatedPlaceRefOrValue } from './models/related-place-ref-or-value'; +export { Resource } from './models/resource'; +export { Resource0 } from './models/resource-0'; +export { ResourceAttributeValueChangeEvent } from './models/resource-attribute-value-change-event'; +export { ResourceAttributeValueChangeEventPayload } from './models/resource-attribute-value-change-event-payload'; +export { ResourceCreate } from './models/resource-create'; +export { ResourceCreateEvent } from './models/resource-create-event'; +export { ResourceCreateEventPayload } from './models/resource-create-event-payload'; +export { ResourceDeleteEvent } from './models/resource-delete-event'; +export { ResourceDeleteEventPayload } from './models/resource-delete-event-payload'; +export { ResourceRefOrValue } from './models/resource-ref-or-value'; +export { ResourceRefOrValueReq } from './models/resource-ref-or-value-req'; +export { ResourceRefOrValueRes } from './models/resource-ref-or-value-res'; +export { ResourceRelationship } from './models/resource-relationship'; +export { ResourceRelationshipReq } from './models/resource-relationship-req'; +export { ResourceRelationshipRes } from './models/resource-relationship-res'; +export { ResourceSpecificationRef } from './models/resource-specification-ref'; +export { ResourceStateChangeEvent } from './models/resource-state-change-event'; +export { ResourceStateChangeEventPayload } from './models/resource-state-change-event-payload'; +export { ResourceUpdate } from './models/resource-update'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/resourceInventoryManagement/models/any.ts b/src/app/openApis/resourceInventoryManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/attachment-ref-or-value.ts b/src/app/openApis/resourceInventoryManagement/models/attachment-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..97137fd2e81fc84cef7ca8d306526ca973d75130 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/attachment-ref-or-value.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture. + */ +export interface AttachmentRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Attachment type such as video, picture + */ + attachmentType?: string; + + /** + * The actual contents of the attachment object, if embedded, encoded as base64 + */ + content?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier for this particular attachment + */ + id?: string; + + /** + * Attachment mime type such as extension file for video, picture and document + */ + mimeType?: string; + + /** + * Name of the entity + */ + name?: string; + size?: Quantity; + + /** + * Uniform Resource Locator, is a web page address (a subset of URI) + */ + url?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship-req.ts b/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..d6b7c50beb6737f176867ac9ed30b2deb12536d8 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship-req.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * Another Characteristic that is related to the current Characteristic; + */ +export interface CharacteristicRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The type of relationship + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship-res.ts b/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..99272c9de7e36120a05900004f37f6902790d0a8 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship-res.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Another Characteristic that is related to the current Characteristic; + */ +export interface CharacteristicRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the characteristic + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The type of relationship + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship.ts b/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..caa59135d71126334ea0dc422bd3748a569de4ca --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/characteristic-relationship.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * Another Characteristic that is related to the current Characteristic; + */ +export interface CharacteristicRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The type of relationship + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/characteristic-req.ts b/src/app/openApis/resourceInventoryManagement/models/characteristic-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..78a61872d86a9f68de190c5e8acbef1e91197a36 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/characteristic-req.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ +import { CharacteristicRelationshipReq } from './characteristic-relationship-req'; +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface CharacteristicReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + characteristicRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the characteristic + */ + name: string; + uuid?: string; + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/characteristic-res.ts b/src/app/openApis/resourceInventoryManagement/models/characteristic-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebda0b18ebbaea200d64d0528a613f88895ea543 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/characteristic-res.ts @@ -0,0 +1,43 @@ +/* tslint:disable */ +import { CharacteristicRelationshipRes } from './characteristic-relationship-res'; +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface CharacteristicRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + characteristicRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the characteristic + */ + id?: string; + + /** + * Name of the characteristic + */ + name: string; + uuid?: string; + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/characteristic.ts b/src/app/openApis/resourceInventoryManagement/models/characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..834af69be12845e4302af9b288fffe006e48c49f --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/characteristic.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ +import { CharacteristicRelationship } from './characteristic-relationship'; +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface Characteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + characteristicRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the characteristic + */ + name: string; + uuid?: string; + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/constraint-ref.ts b/src/app/openApis/resourceInventoryManagement/models/constraint-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..336c0f92b9173b4ef38e05581d4896ba5d28fbb4 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/constraint-ref.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ + +/** + * Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec. + */ +export interface ConstraintRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + + /** + * Hyperlink reference + */ + href?: string; + + /** + * unique identifier + */ + id: string; + + /** + * Name of the related entity. + */ + name?: string; + uuid?: string; + + /** + * constraint version + */ + version?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/error.ts b/src/app/openApis/resourceInventoryManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..f6d298516145874b7e3c138343a292ff8c308018 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/error.ts @@ -0,0 +1,50 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class. + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + atType?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: string; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/event-subscription-input.ts b/src/app/openApis/resourceInventoryManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/event-subscription.ts b/src/app/openApis/resourceInventoryManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/feature-relationship.ts b/src/app/openApis/resourceInventoryManagement/models/feature-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..21c5939426a1651d7666946a4a4fa767540172f3 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/feature-relationship.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Configuration feature + */ +export interface FeatureRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the target feature. + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * This is the type of the feature relationship. + */ + relationshipType: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/feature-req.ts b/src/app/openApis/resourceInventoryManagement/models/feature-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..5c6ee7875b6242c085097eef8cac1cc0c043b6b3 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/feature-req.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +import { ConstraintRef } from './constraint-ref'; +import { CharacteristicReq } from './characteristic-req'; +import { FeatureRelationship } from './feature-relationship'; + +/** + * Configuration feature. + */ +export interface FeatureReq { + + /** + * This is a list of feature constraints. + */ + constraint?: Array; + + /** + * This is a list of Characteristics for a particular feature. + */ + featureCharacteristic: Array; + featureRelationship?: Array; + id?: string; + + /** + * True if this is a feature group. Default is false. + */ + isBundle?: boolean; + + /** + * True if this feature is enabled. Default is true. + */ + isEnabled?: boolean; + + /** + * This is the name for the feature. + */ + name: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/feature-res.ts b/src/app/openApis/resourceInventoryManagement/models/feature-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..fbbc1e7dd560908b184b4b95e9f1414a70fcd748 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/feature-res.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +import { ConstraintRef } from './constraint-ref'; +import { CharacteristicRes } from './characteristic-res'; +import { FeatureRelationship } from './feature-relationship'; + +/** + * Configuration feature. + */ +export interface FeatureRes { + + /** + * This is a list of feature constraints. + */ + constraint?: Array; + + /** + * This is a list of Characteristics for a particular feature. + */ + featureCharacteristic: Array; + featureRelationship?: Array; + + /** + * Unique identifier of the feature. + */ + id?: string; + + /** + * True if this is a feature group. Default is false. + */ + isBundle?: boolean; + + /** + * True if this feature is enabled. Default is true. + */ + isEnabled?: boolean; + + /** + * This is the name for the feature. + */ + name: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/feature.ts b/src/app/openApis/resourceInventoryManagement/models/feature.ts new file mode 100644 index 0000000000000000000000000000000000000000..bd43db8cb4488b09deb545fe9370fe59c90e431f --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/feature.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +import { ConstraintRef } from './constraint-ref'; +import { Characteristic } from './characteristic'; +import { FeatureRelationship } from './feature-relationship'; + +/** + * Configuration feature. + */ +export interface Feature { + + /** + * This is a list of feature constraints. + */ + constraint?: Array; + + /** + * This is a list of Characteristics for a particular feature. + */ + featureCharacteristic: Array; + featureRelationship?: Array; + id?: string; + + /** + * True if this is a feature group. Default is false. + */ + isBundle?: boolean; + + /** + * True if this feature is enabled. Default is true. + */ + isEnabled?: boolean; + + /** + * This is the name for the feature. + */ + name: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/note.ts b/src/app/openApis/resourceInventoryManagement/models/note.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd672c255fa68306e1d8d1783ba63ddfc52b3efe --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/note.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * Extra information about a given entity + */ +export interface Note { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Author of the note + */ + author?: string; + + /** + * Date of the note + */ + date?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Describes the system from which the action related to this note was done + */ + system?: string; + + /** + * Text of the note + */ + text?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/quantity.ts b/src/app/openApis/resourceInventoryManagement/models/quantity.ts new file mode 100644 index 0000000000000000000000000000000000000000..d24c6b3f0543bd1702e42db0f4929b813bd165d8 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/quantity.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * An amount in a given unit + */ +export interface Quantity { + + /** + * Numeric value in a given unit + */ + amount?: number; + + /** + * Unit + */ + units?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/related-party.ts b/src/app/openApis/resourceInventoryManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..b80038dfc630f883910eac884192f0eb46d75199 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/related-place-ref-or-value.ts b/src/app/openApis/resourceInventoryManagement/models/related-place-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..78c50e55bf9278b2898d17facb8861ad80e894d9 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/related-place-ref-or-value.ts @@ -0,0 +1,56 @@ +/* tslint:disable */ + +/** + * Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself + */ +export interface RelatedPlaceRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the place + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + role: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-0.ts b/src/app/openApis/resourceInventoryManagement/models/resource-0.ts new file mode 100644 index 0000000000000000000000000000000000000000..4120d350d4eabc71143b125039c1472b5dabaa0d --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-0.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { Feature } from './feature'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { Characteristic } from './characteristic'; +import { ResourceRelationship } from './resource-relationship'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources (e.g. TPE, EQUIPMENT) in the inventory. + */ +export interface Resource0 { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * The URI for the object itself. + */ + href: string; + id?: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-attribute-value-change-event-payload.ts b/src/app/openApis/resourceInventoryManagement/models/resource-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..c32763d888c0a7c65ebdc4e984fdcdc8255f6f96 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-attribute-value-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Resource } from './resource'; + +/** + * The event data structure + */ +export interface ResourceAttributeValueChangeEventPayload { + resource?: Resource; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-attribute-value-change-event.ts b/src/app/openApis/resourceInventoryManagement/models/resource-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..ff3a2eb98e096c8b4eef24bcbea7b1f9a1cd6793 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-attribute-value-change-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +import { ResourceAttributeValueChangeEventPayload } from './resource-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-create-event-payload.ts b/src/app/openApis/resourceInventoryManagement/models/resource-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..92da075bdb0c0488a08af4abef8619ead92cdf65 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Resource0 } from './resource-0'; + +/** + * The event data structure + */ +export interface ResourceCreateEventPayload { + resource?: Resource0; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-create-event.ts b/src/app/openApis/resourceInventoryManagement/models/resource-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..468e037b32c6ade29da79722a818858c880353d5 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-create-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +import { ResourceCreateEventPayload } from './resource-create-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-create.ts b/src/app/openApis/resourceInventoryManagement/models/resource-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..44ee54049953b48598a82b8a524ac0b759ed9373 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-create.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { FeatureReq } from './feature-req'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { CharacteristicReq } from './characteristic-req'; +import { ResourceRelationshipReq } from './resource-relationship-req'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources (e.g. TPE, EQUIPMENT) in the inventory. Skipped properties: id,href + */ +export interface ResourceCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-delete-event-payload.ts b/src/app/openApis/resourceInventoryManagement/models/resource-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..10c53a0f28f464f1518cc7ab340cea3f14007410 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Resource } from './resource'; + +/** + * The event data structure + */ +export interface ResourceDeleteEventPayload { + resource?: Resource; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-delete-event.ts b/src/app/openApis/resourceInventoryManagement/models/resource-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..7056e2e87625e27dd1b908ebcb58c9f37720fb0f --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-delete-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +import { ResourceDeleteEventPayload } from './resource-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value-req.ts b/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..fce1ab350654e3af81367d0b851b4538e6e1d9cc --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value-req.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { FeatureReq } from './feature-req'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { CharacteristicReq } from './characteristic-req'; +import { ResourceRelationshipReq } from './resource-relationship-req'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself + */ +export interface ResourceRefOrValueReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * The URI for the object itself. + */ + href: string; + id?: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value-res.ts b/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..96e2c27d23850024001090f9665b7ea6440e74ef --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value-res.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +import { FeatureRes } from './feature-res'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { CharacteristicRes } from './characteristic-res'; +import { ResourceRelationshipRes } from './resource-relationship-res'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself + */ +export interface ResourceRefOrValueRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * The URI for the object itself. + */ + href?: string; + + /** + * Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type. + */ + id: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value.ts b/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..6db555a423a9e90db27fd514440637bfd966c55a --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-ref-or-value.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { Feature } from './feature'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { Characteristic } from './characteristic'; +import { ResourceRelationship } from './resource-relationship'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself + */ +export interface ResourceRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * The URI for the object itself. + */ + href: string; + id?: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-relationship-req.ts b/src/app/openApis/resourceInventoryManagement/models/resource-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..bb9a4b891a57392c7e349a0e0bb032ca20c0c8a6 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-relationship-req.ts @@ -0,0 +1,32 @@ +/* tslint:disable */ +import { ResourceRefOrValueReq } from './resource-ref-or-value-req'; + +/** + * Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ +export interface ResourceRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ + relationshipType: string; + resource: ResourceRefOrValueReq; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-relationship-res.ts b/src/app/openApis/resourceInventoryManagement/models/resource-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a6bab14458400154b397376511d293a34aa9f30 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-relationship-res.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +import { ResourceRefOrValueRes } from './resource-ref-or-value-res'; + +/** + * Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ +export interface ResourceRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * unique identifier + */ + id?: string; + + /** + * Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ + relationshipType: string; + resource: ResourceRefOrValueRes; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-relationship.ts b/src/app/openApis/resourceInventoryManagement/models/resource-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..eac6593a0c9f92626add5f0edc7415e3473ce807 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-relationship.ts @@ -0,0 +1,32 @@ +/* tslint:disable */ +import { ResourceRefOrValue } from './resource-ref-or-value'; + +/** + * Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ +export interface ResourceRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ + relationshipType: string; + resource: ResourceRefOrValue; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-specification-ref.ts b/src/app/openApis/resourceInventoryManagement/models/resource-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3d5ab64def54a2ab8ee843a19c7c28883119e91 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-specification-ref.ts @@ -0,0 +1,45 @@ +/* tslint:disable */ + +/** + * Resources are physical or non-physical components (or some combination of these) within an enterprise's infrastructure or inventory. They are typically consumed or used by services (for example a physical port assigned to a service) or contribute to the realization of a Product (for example, a SIM card). They can be drawn from the Application, Computing and Network domains, and include, for example, Network Elements, software, IT systems, content and information, and technology components. A ResourceSpecification is an abstract base class for representing a generic means for implementing a particular type of Resource. In essence, a ResourceSpecification defines the common attributes and relationships of a set of related Resources, while Resource defines a specific instance that is based on a particular ResourceSpecification. + */ +export interface ResourceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * unique identifier + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * Resource Specification version + */ + version?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-state-change-event-payload.ts b/src/app/openApis/resourceInventoryManagement/models/resource-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..64750a33ede84652536b95ee3bb6f45272c6ed43 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Resource } from './resource'; + +/** + * The event data structure + */ +export interface ResourceStateChangeEventPayload { + resource?: Resource; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-state-change-event.ts b/src/app/openApis/resourceInventoryManagement/models/resource-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..d538c953654cf731888ef9c7f8a8988deac35b31 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-state-change-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +import { ResourceStateChangeEventPayload } from './resource-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource-update.ts b/src/app/openApis/resourceInventoryManagement/models/resource-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..d8476fbce414507f3e05cd50a7165667fbefb3b3 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource-update.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { FeatureReq } from './feature-req'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { CharacteristicReq } from './characteristic-req'; +import { ResourceRelationshipReq } from './resource-relationship-req'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources (e.g. TPE, EQUIPMENT) in the inventory. Skipped properties: id,href + */ +export interface ResourceUpdate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/resource.ts b/src/app/openApis/resourceInventoryManagement/models/resource.ts new file mode 100644 index 0000000000000000000000000000000000000000..fd6a0feda692b0ba66ea257de161461c3c7b6663 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/resource.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +import { FeatureRes } from './feature-res'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { CharacteristicRes } from './characteristic-res'; +import { ResourceRelationshipRes } from './resource-relationship-res'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources (e.g. TPE, EQUIPMENT) in the inventory. + */ +export interface Resource { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * The URI for the object itself. + */ + href?: string; + + /** + * Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type. + */ + id: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; + uuid?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/models/time-period.ts b/src/app/openApis/resourceInventoryManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/resourceInventoryManagement/services.ts b/src/app/openApis/resourceInventoryManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..1541d0883abeb7e2ac6f09d88a7ee2932b649743 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/services.ts @@ -0,0 +1,3 @@ +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ResourceService } from './services/resource.service'; diff --git a/src/app/openApis/resourceInventoryManagement/services/events-subscription.service.ts b/src/app/openApis/resourceInventoryManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..bd3d2550d3c3ebbb66107a3999dec5f27aeac839 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/services/events-subscription.service.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener6Path = '/hub'; + static readonly unregisterListener6Path = '/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener6Response(body: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener6(body: EventSubscriptionInput): __Observable { + return this.registerListener6Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return Deleted + */ + unregisterListener6Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return Deleted + */ + unregisterListener6(id: string): __Observable { + return this.unregisterListener6Response(id).pipe( + __map(_r => _r.body as Error) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/resourceInventoryManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/resourceInventoryManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..fb1d19f12e970673490f1337c91f157b9213cec7 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,203 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { ResourceAttributeValueChangeEvent } from '../models/resource-attribute-value-change-event'; +import { ResourceCreateEvent } from '../models/resource-create-event'; +import { ResourceDeleteEvent } from '../models/resource-delete-event'; +import { ResourceStateChangeEvent } from '../models/resource-state-change-event'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToResourceAttributeValueChangeEventPath = '/listener/resourceAttributeValueChangeEvent'; + static readonly listenToResourceCreateEventPath = '/listener/resourceCreateEvent'; + static readonly listenToResourceDeleteEventPath = '/listener/resourceDeleteEvent'; + static readonly listenToResourceStateChangeEventPath = '/listener/resourceStateChangeEvent'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity ResourceAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ResourceAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceAttributeValueChangeEventResponse(body: ResourceAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/resourceAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ResourceAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceAttributeValueChangeEvent(body: ResourceAttributeValueChangeEvent): __Observable { + return this.listenToResourceAttributeValueChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceCreateEvent + * + * Example of a client listener for receiving the notification ResourceCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCreateEventResponse(body: ResourceCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/resourceCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceCreateEvent + * + * Example of a client listener for receiving the notification ResourceCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceCreateEvent(body: ResourceCreateEvent): __Observable { + return this.listenToResourceCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceDeleteEvent + * + * Example of a client listener for receiving the notification ResourceDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceDeleteEventResponse(body: ResourceDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/resourceDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceDeleteEvent + * + * Example of a client listener for receiving the notification ResourceDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceDeleteEvent(body: ResourceDeleteEvent): __Observable { + return this.listenToResourceDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceStateChangeEvent + * + * Example of a client listener for receiving the notification ResourceStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceStateChangeEventResponse(body: ResourceStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/listener/resourceStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceStateChangeEvent + * + * Example of a client listener for receiving the notification ResourceStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceStateChangeEvent(body: ResourceStateChangeEvent): __Observable { + return this.listenToResourceStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/resourceInventoryManagement/services/resource.service.ts b/src/app/openApis/resourceInventoryManagement/services/resource.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2333925cfa298dcd4d9a8b18a3b41598d0ed9ae3 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/services/resource.service.ts @@ -0,0 +1,376 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Resource } from '../models/resource'; +import { ResourceCreate } from '../models/resource-create'; +import { ResourceUpdate } from '../models/resource-update'; +@Injectable({ + providedIn: 'root', +}) +class ResourceService extends __BaseService { + static readonly listResourcePath = '/resourceInventoryManagement/v4/resource'; + static readonly createResourcePath = '/resourceInventoryManagement/v4/resource'; + static readonly retrieveResourcePath = '/resourceInventoryManagement/v4/resource/{id}'; + static readonly deleteResourcePath = '/resourceInventoryManagement/v4/resource/{id}'; + static readonly patchResourcePath = '/resourceInventoryManagement/v4/resource/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find Resource objects + * + * This operation list or find Resource entities + * @param params The `ResourceService.ListResourceParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `name`: + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceResponse(params: ResourceService.ListResourceParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.name != null) __params = __params.set('name', params.name.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceInventoryManagement/v4/resource`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find Resource objects + * + * This operation list or find Resource entities + * @param params The `ResourceService.ListResourceParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `name`: + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResource(params: ResourceService.ListResourceParams): __Observable> { + return this.listResourceResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a Resource + * + * This operation creates a Resource entity. + * @param params The `ResourceService.CreateResourceParams` containing the following parameters: + * + * - `resource`: The Resource to be created + * + * - `name`: + * + * @return OK or Created + */ + createResourceResponse(params: ResourceService.CreateResourceParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.resource; + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourceInventoryManagement/v4/resource`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a Resource + * + * This operation creates a Resource entity. + * @param params The `ResourceService.CreateResourceParams` containing the following parameters: + * + * - `resource`: The Resource to be created + * + * - `name`: + * + * @return OK or Created + */ + createResource(params: ResourceService.CreateResourceParams): __Observable { + return this.createResourceResponse(params).pipe( + __map(_r => _r.body as Resource | Resource) + ); + } + + /** + * Retrieves a Resource by ID + * + * This operation retrieves a Resource entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceService.RetrieveResourceParams` containing the following parameters: + * + * - `id`: Identifier of the Resource + * + * - `name`: + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceResponse(params: ResourceService.RetrieveResourceParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.name != null) __params = __params.set('name', params.name.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourceInventoryManagement/v4/resource/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a Resource by ID + * + * This operation retrieves a Resource entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceService.RetrieveResourceParams` containing the following parameters: + * + * - `id`: Identifier of the Resource + * + * - `name`: + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResource(params: ResourceService.RetrieveResourceParams): __Observable { + return this.retrieveResourceResponse(params).pipe( + __map(_r => _r.body as Resource) + ); + } + + /** + * Deletes a Resource + * + * This operation deletes a Resource entity. + * @param id Identifier of the Resource + * @return Deleted + */ + deleteResourceResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourceInventoryManagement/v4/resource/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a Resource + * + * This operation deletes a Resource entity. + * @param id Identifier of the Resource + * @return Deleted + */ + deleteResource(id: string): __Observable<{}> { + return this.deleteResourceResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a Resource + * + * This operation updates partially a Resource entity. + * @param params The `ResourceService.PatchResourceParams` containing the following parameters: + * + * - `resource`: The Resource to be updated + * + * - `id`: Identifier of the Resource + * + * - `name`: + * + * @return Updated + */ + patchResourceResponse(params: ResourceService.PatchResourceParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.resource; + + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/resourceInventoryManagement/v4/resource/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a Resource + * + * This operation updates partially a Resource entity. + * @param params The `ResourceService.PatchResourceParams` containing the following parameters: + * + * - `resource`: The Resource to be updated + * + * - `id`: Identifier of the Resource + * + * - `name`: + * + * @return Updated + */ + patchResource(params: ResourceService.PatchResourceParams): __Observable { + return this.patchResourceResponse(params).pipe( + __map(_r => _r.body as Resource) + ); + } +} + +module ResourceService { + + /** + * Parameters for listResource + */ + export interface ListResourceParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + name?: string; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for createResource + */ + export interface CreateResourceParams { + + /** + * The Resource to be created + */ + resource: ResourceCreate; + name?: string; + } + + /** + * Parameters for retrieveResource + */ + export interface RetrieveResourceParams { + + /** + * Identifier of the Resource + */ + id: string; + name?: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchResource + */ + export interface PatchResourceParams { + + /** + * The Resource to be updated + */ + resource: ResourceUpdate; + + /** + * Identifier of the Resource + */ + id: string; + name?: string; + } +} + +export { ResourceService } diff --git a/src/app/openApis/resourceInventoryManagement/strict-http-response.ts b/src/app/openApis/resourceInventoryManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/resourceInventoryManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/resourceOrderManagement/api-configuration.ts b/src/app/openApis/resourceOrderManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..7b7804c8c4faf3b87b14124c31bd22f366e88863 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/api.module.ts b/src/app/openApis/resourceOrderManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..d3b6a96c58530f33cdf08f9fa3640f59eb758437 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/api.module.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { CancelResourceOrderService } from './services/cancel-resource-order.service'; +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ResourceOrderService } from './services/resource-order.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + CancelResourceOrderService, + EventsSubscriptionService, + NotificationListenersClientSideService, + ResourceOrderService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/resourceOrderManagement/base-service.ts b/src/app/openApis/resourceOrderManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/resourceOrderManagement/models.ts b/src/app/openApis/resourceOrderManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..cec0bf979ae32d0ba77571a936d3fca3d8afcb4e --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models.ts @@ -0,0 +1,53 @@ +export { Any } from './models/any'; +export { AppointmentRef } from './models/appointment-ref'; +export { AttachmentRefOrValue } from './models/attachment-ref-or-value'; +export { CancelResourceOrder } from './models/cancel-resource-order'; +export { CancelResourceOrderCreate } from './models/cancel-resource-order-create'; +export { CancelResourceOrderCreateEvent } from './models/cancel-resource-order-create-event'; +export { CancelResourceOrderCreateEventPayload } from './models/cancel-resource-order-create-event-payload'; +export { CancelResourceOrderInformationRequiredEvent } from './models/cancel-resource-order-information-required-event'; +export { CancelResourceOrderInformationRequiredEventPayload } from './models/cancel-resource-order-information-required-event-payload'; +export { CancelResourceOrderStateChangeEvent } from './models/cancel-resource-order-state-change-event'; +export { CancelResourceOrderStateChangeEventPayload } from './models/cancel-resource-order-state-change-event-payload'; +export { CharacteristicRelationshipReq } from './models/characteristic-relationship-req'; +export { CharacteristicRelationshipRes } from './models/characteristic-relationship-res'; +export { CharacteristicReq } from './models/characteristic-req'; +export { CharacteristicRes } from './models/characteristic-res'; +export { ConstraintRef } from './models/constraint-ref'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { ExternalId } from './models/external-id'; +export { FeatureRelationship } from './models/feature-relationship'; +export { FeatureReq } from './models/feature-req'; +export { FeatureRes } from './models/feature-res'; +export { Note } from './models/note'; +export { Quantity } from './models/quantity'; +export { RelatedParty } from './models/related-party'; +export { RelatedPlaceRefOrValue } from './models/related-place-ref-or-value'; +export { ResourceOrder } from './models/resource-order'; +export { ResourceOrderAttributeValueChangeEvent } from './models/resource-order-attribute-value-change-event'; +export { ResourceOrderAttributeValueChangeEventPayload } from './models/resource-order-attribute-value-change-event-payload'; +export { ResourceOrderCreate } from './models/resource-order-create'; +export { ResourceOrderCreateEvent } from './models/resource-order-create-event'; +export { ResourceOrderCreateEventPayload } from './models/resource-order-create-event-payload'; +export { ResourceOrderDeleteEvent } from './models/resource-order-delete-event'; +export { ResourceOrderDeleteEventPayload } from './models/resource-order-delete-event-payload'; +export { ResourceOrderInformationRequiredEvent } from './models/resource-order-information-required-event'; +export { ResourceOrderInformationRequiredEventPayload } from './models/resource-order-information-required-event-payload'; +export { ResourceOrderItemRef } from './models/resource-order-item-ref'; +export { ResourceOrderItemRelationship } from './models/resource-order-item-relationship'; +export { ResourceOrderItemReq } from './models/resource-order-item-req'; +export { ResourceOrderItemRes } from './models/resource-order-item-res'; +export { ResourceOrderRef } from './models/resource-order-ref'; +export { ResourceOrderStateChangeEvent } from './models/resource-order-state-change-event'; +export { ResourceOrderStateChangeEventPayload } from './models/resource-order-state-change-event-payload'; +export { ResourceOrderUpdate } from './models/resource-order-update'; +export { ResourceRefOrValueReq } from './models/resource-ref-or-value-req'; +export { ResourceRefOrValueRes } from './models/resource-ref-or-value-res'; +export { ResourceRelationshipReq } from './models/resource-relationship-req'; +export { ResourceRelationshipRes } from './models/resource-relationship-res'; +export { ResourceSpecificationRef } from './models/resource-specification-ref'; +export { StackTraceElement } from './models/stack-trace-element'; +export { Throwable } from './models/throwable'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/resourceOrderManagement/models/any.ts b/src/app/openApis/resourceOrderManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/appointment-ref.ts b/src/app/openApis/resourceOrderManagement/models/appointment-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..0858c979124f410fd9225f90fb7e3f02bf847037 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/appointment-ref.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ + +/** + * Refers an appointment, such as a Customer presentation or internal meeting or site visit + */ +export interface AppointmentRef { + '@baseType'?: string; + '@referredType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * An explanatory text regarding the appointment made with a party + */ + description?: string; + + /** + * The reference of the appointment + */ + href?: string; + + /** + * The identifier of the referred appointment + */ + id: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/attachment-ref-or-value.ts b/src/app/openApis/resourceOrderManagement/models/attachment-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..97137fd2e81fc84cef7ca8d306526ca973d75130 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/attachment-ref-or-value.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture. + */ +export interface AttachmentRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Attachment type such as video, picture + */ + attachmentType?: string; + + /** + * The actual contents of the attachment object, if embedded, encoded as base64 + */ + content?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier for this particular attachment + */ + id?: string; + + /** + * Attachment mime type such as extension file for video, picture and document + */ + mimeType?: string; + + /** + * Name of the entity + */ + name?: string; + size?: Quantity; + + /** + * Uniform Resource Locator, is a web page address (a subset of URI) + */ + url?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create-event-payload.ts b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..72a03cdfb9d013b877fcff7b9960fa1b23668769 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { CancelResourceOrder } from './cancel-resource-order'; + +/** + * The event data structure + */ +export interface CancelResourceOrderCreateEventPayload { + cancelResourceOrder?: CancelResourceOrder; +} diff --git a/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create-event.ts b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..caab58b32753e721cf08837c76371f1661065b53 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { CancelResourceOrderCreateEventPayload } from './cancel-resource-order-create-event-payload'; + +/** + * The notification data structure + */ +export interface CancelResourceOrderCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: CancelResourceOrderCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create.ts b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..0670d0cf4c8d18e1fb4609d70c5e700b9b855b73 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-create.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +import { ResourceOrderRef } from './resource-order-ref'; + +/** + * Request for cancellation an existing resource order Skipped properties: id,href,state,effectiveCancellationDate + */ +export interface CancelResourceOrderCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reason why the order is cancelled. + */ + cancellationReason?: string; + + /** + * Date when the submitter wants the order to be cancelled + */ + requestedCancellationDate?: string; + resourceOrder: ResourceOrderRef; +} diff --git a/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-information-required-event-payload.ts b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-information-required-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..9af6e4267cff3479934b6ac81edbc11acc564707 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-information-required-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { CancelResourceOrder } from './cancel-resource-order'; + +/** + * The event data structure + */ +export interface CancelResourceOrderInformationRequiredEventPayload { + cancelResourceOrder?: CancelResourceOrder; +} diff --git a/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-information-required-event.ts b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-information-required-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..3ce8fa8c86f88b0bb9bb9c4a3eaf2459e38b2920 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-information-required-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +import { CancelResourceOrderInformationRequiredEventPayload } from './cancel-resource-order-information-required-event-payload'; + +/** + * The notification data structure + */ +export interface CancelResourceOrderInformationRequiredEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: CancelResourceOrderInformationRequiredEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-state-change-event-payload.ts b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..3fb4eb9bbadc4de5637c3cecd83969837febe90f --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { CancelResourceOrder } from './cancel-resource-order'; + +/** + * The event data structure + */ +export interface CancelResourceOrderStateChangeEventPayload { + cancelResourceOrder?: CancelResourceOrder; +} diff --git a/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-state-change-event.ts b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..ccd76dabd81236a2e960e1b058ca181dd0600400 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { CancelResourceOrderStateChangeEventPayload } from './cancel-resource-order-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface CancelResourceOrderStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: CancelResourceOrderStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/cancel-resource-order.ts b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..556eebd6d5f02ccd7a0f4e699fa9b6fe3145bd71 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/cancel-resource-order.ts @@ -0,0 +1,53 @@ +/* tslint:disable */ +import { ResourceOrderRef } from './resource-order-ref'; + +/** + * Request for cancellation an existing resource order + */ +export interface CancelResourceOrder { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Reason why the order is cancelled. + */ + cancellationReason?: string; + + /** + * Date when the order is cancelled. + */ + effectiveCancellationDate?: string; + + /** + * Hyperlink to access the cancellation request + */ + href?: string; + + /** + * id of the cancellation request (this is not an order id) + */ + id?: string; + + /** + * Date when the submitter wants the order to be cancelled + */ + requestedCancellationDate?: string; + resourceOrder: ResourceOrderRef; + state?: 'acknowledged' | 'done' | 'inProgress' | 'terminatedWithError'; +} diff --git a/src/app/openApis/resourceOrderManagement/models/characteristic-relationship-req.ts b/src/app/openApis/resourceOrderManagement/models/characteristic-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..d6b7c50beb6737f176867ac9ed30b2deb12536d8 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/characteristic-relationship-req.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * Another Characteristic that is related to the current Characteristic; + */ +export interface CharacteristicRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The type of relationship + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/characteristic-relationship-res.ts b/src/app/openApis/resourceOrderManagement/models/characteristic-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..99272c9de7e36120a05900004f37f6902790d0a8 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/characteristic-relationship-res.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Another Characteristic that is related to the current Characteristic; + */ +export interface CharacteristicRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the characteristic + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The type of relationship + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/characteristic-req.ts b/src/app/openApis/resourceOrderManagement/models/characteristic-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..78a61872d86a9f68de190c5e8acbef1e91197a36 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/characteristic-req.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ +import { CharacteristicRelationshipReq } from './characteristic-relationship-req'; +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface CharacteristicReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + characteristicRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the characteristic + */ + name: string; + uuid?: string; + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/characteristic-res.ts b/src/app/openApis/resourceOrderManagement/models/characteristic-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebda0b18ebbaea200d64d0528a613f88895ea543 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/characteristic-res.ts @@ -0,0 +1,43 @@ +/* tslint:disable */ +import { CharacteristicRelationshipRes } from './characteristic-relationship-res'; +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface CharacteristicRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + characteristicRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the characteristic + */ + id?: string; + + /** + * Name of the characteristic + */ + name: string; + uuid?: string; + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/constraint-ref.ts b/src/app/openApis/resourceOrderManagement/models/constraint-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..336c0f92b9173b4ef38e05581d4896ba5d28fbb4 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/constraint-ref.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ + +/** + * Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec. + */ +export interface ConstraintRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + + /** + * Hyperlink reference + */ + href?: string; + + /** + * unique identifier + */ + id: string; + + /** + * Name of the related entity. + */ + name?: string; + uuid?: string; + + /** + * constraint version + */ + version?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/error.ts b/src/app/openApis/resourceOrderManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..d6c6f98546b4cdbc1e760ede230465700045fe02 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/error.ts @@ -0,0 +1,10 @@ +/* tslint:disable */ +import { Throwable } from './throwable'; +import { StackTraceElement } from './stack-trace-element'; +export interface Error { + cause?: Throwable; + localizedMessage?: string; + message?: string; + stackTrace?: Array; + suppressed?: Array; +} diff --git a/src/app/openApis/resourceOrderManagement/models/event-subscription-input.ts b/src/app/openApis/resourceOrderManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/event-subscription.ts b/src/app/openApis/resourceOrderManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/external-id.ts b/src/app/openApis/resourceOrderManagement/models/external-id.ts new file mode 100644 index 0000000000000000000000000000000000000000..7380241898bccd307d07d6ccf885defe32b27af2 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/external-id.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ + +/** + * An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list. + */ +export interface ExternalId { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Type of the entity within the external system + */ + entityType: string; + + /** + * ID of the entity within the external system. + */ + id: string; + + /** + * Name of the external system that owns the entity. + */ + owner: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/feature-relationship.ts b/src/app/openApis/resourceOrderManagement/models/feature-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..21c5939426a1651d7666946a4a4fa767540172f3 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/feature-relationship.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * Configuration feature + */ +export interface FeatureRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the target feature. + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * This is the type of the feature relationship. + */ + relationshipType: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourceOrderManagement/models/feature-req.ts b/src/app/openApis/resourceOrderManagement/models/feature-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..5c6ee7875b6242c085097eef8cac1cc0c043b6b3 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/feature-req.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +import { ConstraintRef } from './constraint-ref'; +import { CharacteristicReq } from './characteristic-req'; +import { FeatureRelationship } from './feature-relationship'; + +/** + * Configuration feature. + */ +export interface FeatureReq { + + /** + * This is a list of feature constraints. + */ + constraint?: Array; + + /** + * This is a list of Characteristics for a particular feature. + */ + featureCharacteristic: Array; + featureRelationship?: Array; + id?: string; + + /** + * True if this is a feature group. Default is false. + */ + isBundle?: boolean; + + /** + * True if this feature is enabled. Default is true. + */ + isEnabled?: boolean; + + /** + * This is the name for the feature. + */ + name: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/feature-res.ts b/src/app/openApis/resourceOrderManagement/models/feature-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..fbbc1e7dd560908b184b4b95e9f1414a70fcd748 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/feature-res.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +import { ConstraintRef } from './constraint-ref'; +import { CharacteristicRes } from './characteristic-res'; +import { FeatureRelationship } from './feature-relationship'; + +/** + * Configuration feature. + */ +export interface FeatureRes { + + /** + * This is a list of feature constraints. + */ + constraint?: Array; + + /** + * This is a list of Characteristics for a particular feature. + */ + featureCharacteristic: Array; + featureRelationship?: Array; + + /** + * Unique identifier of the feature. + */ + id?: string; + + /** + * True if this is a feature group. Default is false. + */ + isBundle?: boolean; + + /** + * True if this feature is enabled. Default is true. + */ + isEnabled?: boolean; + + /** + * This is the name for the feature. + */ + name: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/note.ts b/src/app/openApis/resourceOrderManagement/models/note.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd672c255fa68306e1d8d1783ba63ddfc52b3efe --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/note.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * Extra information about a given entity + */ +export interface Note { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Author of the note + */ + author?: string; + + /** + * Date of the note + */ + date?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Describes the system from which the action related to this note was done + */ + system?: string; + + /** + * Text of the note + */ + text?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/quantity.ts b/src/app/openApis/resourceOrderManagement/models/quantity.ts new file mode 100644 index 0000000000000000000000000000000000000000..d24c6b3f0543bd1702e42db0f4929b813bd165d8 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/quantity.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * An amount in a given unit + */ +export interface Quantity { + + /** + * Numeric value in a given unit + */ + amount?: number; + + /** + * Unit + */ + units?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/related-party.ts b/src/app/openApis/resourceOrderManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..b80038dfc630f883910eac884192f0eb46d75199 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/related-place-ref-or-value.ts b/src/app/openApis/resourceOrderManagement/models/related-place-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..78c50e55bf9278b2898d17facb8861ad80e894d9 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/related-place-ref-or-value.ts @@ -0,0 +1,56 @@ +/* tslint:disable */ + +/** + * Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself + */ +export interface RelatedPlaceRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the place + */ + id?: string; + + /** + * Name of the entity + */ + name?: string; + role: string; + uuid?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-attribute-value-change-event-payload.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c6e9b3837451ff02350db6af07305a843f6fc2d --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-attribute-value-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceOrder } from './resource-order'; + +/** + * The event data structure + */ +export interface ResourceOrderAttributeValueChangeEventPayload { + resourceOrder?: ResourceOrder; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-attribute-value-change-event.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..99095b2bda191fc3977403c4463aedaef5cf2602 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-attribute-value-change-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +import { ResourceOrderAttributeValueChangeEventPayload } from './resource-order-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceOrderAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceOrderAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-create-event-payload.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..945fcb1588f85c1687a6708ba19f46743c5bbd70 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceOrder } from './resource-order'; + +/** + * The event data structure + */ +export interface ResourceOrderCreateEventPayload { + resourceOrder?: ResourceOrder; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-create-event.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..7db61f8e9971db61db598006e765a9f55a602434 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-create-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceOrderCreateEventPayload } from './resource-order-create-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceOrderCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceOrderCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-create.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..e82cd08385c546c60d30e205e82be8d638661cbe --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-create.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +import { ExternalId } from './external-id'; +import { Note } from './note'; +import { ResourceOrderItemReq } from './resource-order-item-req'; +import { RelatedParty } from './related-party'; + +/** + * A Resource Order is a request to provision a set of Resources (logical and physical) triggered by the request to provision a Service through a Service Order Skipped properties: id,href + */ +export interface ResourceOrderCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Used to categorize the order from a business perspective that can be useful for the OM system. + */ + category?: string; + + /** + * Date when the order was completed + */ + completionDate?: string; + + /** + * free-text description of the Resource Order + */ + description?: string; + + /** + * Date when the order was completed + */ + expectedCompletionDate?: string; + + /** + * DEPRECATED: Use externalReference Instead. ID given by the consumer (to facilitate searches afterwards) + */ + externalId?: string; + externalReference?: Array; + + /** + * A string used to give a name to the Resource Order + */ + name?: string; + note?: Array; + + /** + * Date when the order was created + */ + orderDate?: string; + orderItem?: Array; + + /** + * Name of the Resource Order type + */ + orderType?: string; + + /** + * A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest) + */ + priority?: number; + relatedParty?: Array; + + /** + * Requested delivery date from the requestor perspective + */ + requestedCompletionDate?: string; + + /** + * Order start date wished by the requestor + */ + requestedStartDate?: string; + + /** + * Date when the order was actually started + */ + startDate?: string; + + /** + * The life cycle state of the resource. + */ + state?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-delete-event-payload.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..3ee490c2b676c62fe1a5bbf09447638e5b016488 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceOrder } from './resource-order'; + +/** + * The event data structure + */ +export interface ResourceOrderDeleteEventPayload { + resourceOrder?: ResourceOrder; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-delete-event.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..47c8fb15d2034612a81021a5ebf6738c09d48494 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-delete-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceOrderDeleteEventPayload } from './resource-order-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceOrderDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceOrderDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-information-required-event-payload.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-information-required-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..a4b6fc0acf495041f7e1bd19fc7810bd885f532d --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-information-required-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceOrder } from './resource-order'; + +/** + * The event data structure + */ +export interface ResourceOrderInformationRequiredEventPayload { + resourceOrder?: ResourceOrder; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-information-required-event.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-information-required-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..2a3978b062d270d74d75c81a8cf4bd92b3cdea8c --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-information-required-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +import { ResourceOrderInformationRequiredEventPayload } from './resource-order-information-required-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceOrderInformationRequiredEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceOrderInformationRequiredEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-item-ref.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-item-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f51eb3e9f91ce0207de30715c3c0f8b3f11c974 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-item-ref.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +export interface ResourceOrderItemRef { + '@baseType'?: string; + '@referredType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Identifier of the line item + */ + itemId?: string; + + /** + * Link to the order to which this item belongs to + */ + resourceOrderHref?: string; + + /** + * Identifier of the order that this item belongs to + */ + resourceOrderId?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-item-relationship.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-item-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..b50f01cc84c567a40999321ef4ce671ca51ab6c0 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-item-relationship.ts @@ -0,0 +1,28 @@ +/* tslint:disable */ +import { ResourceOrderItemRef } from './resource-order-item-ref'; +export interface ResourceOrderItemRelationship { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + orderItem?: ResourceOrderItemRef; + + /** + * Type of the order item relationship + */ + relationshipType?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-item-req.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-item-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..ae5bda82735d7484f623bebcc383ca2fbb71dc94 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-item-req.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +import { AppointmentRef } from './appointment-ref'; +import { ResourceOrderItemRelationship } from './resource-order-item-relationship'; +import { ResourceRefOrValueReq } from './resource-ref-or-value-req'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * An identified part of the order. A resource order is decomposed into one or more order items. + */ +export interface ResourceOrderItemReq { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Can be "add" / "modify" / "no_change"/ "delete" + */ + action?: string; + appointment?: AppointmentRef; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Identifier of the line item (generally it is a sequence number 01, 02, 03, ...) + */ + id?: string; + orderItemRelationship?: Array; + + /** + * Quantity ordered + */ + quantity?: number; + resource?: ResourceRefOrValueReq; + resourceRefOrValue?: ResourceRefOrValueReq; + resourceSpecification?: ResourceSpecificationRef; + + /** + * State of the order item : described in the state machine diagram + */ + state?: 'ACKNOWLEDGED' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'HELD' | 'INITIAL' | 'INPROGRESS' | 'PARTIAL' | 'PENDING' | 'REJECTED'; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-item-res.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-item-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..f1905b800a462c4802ce9b0a0cdb2fa2b975f013 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-item-res.ts @@ -0,0 +1,53 @@ +/* tslint:disable */ +import { AppointmentRef } from './appointment-ref'; +import { ResourceOrderItemRelationship } from './resource-order-item-relationship'; +import { ResourceRefOrValueRes } from './resource-ref-or-value-res'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * An identified part of the order. A resource order is decomposed into one or more order items. + */ +export interface ResourceOrderItemRes { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Can be "add" / "modify" / "no_change"/ "delete" + */ + action?: string; + appointment?: AppointmentRef; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Identifier of the line item (generally it is a sequence number 01, 02, 03, ...) + */ + id?: string; + orderItemRelationship?: Array; + + /** + * Quantity ordered + */ + quantity?: number; + resource?: ResourceRefOrValueRes; + resourceSpecification?: ResourceSpecificationRef; + + /** + * State of the order item : described in the state machine diagram + */ + state?: 'ACKNOWLEDGED' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'HELD' | 'INITIAL' | 'INPROGRESS' | 'PARTIAL' | 'PENDING' | 'REJECTED'; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-ref.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..7014877f086d14470cecb78725cd454b9e494a37 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-ref.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +export interface ResourceOrderRef { + '@baseType'?: string; + '@referredType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Hyperlink to access the related Resource Order + */ + href?: string; + + /** + * The unique identifier of the related resource order + */ + id: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-state-change-event-payload.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-state-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..5269e4b2400eb0c1c4c99ae960be201fa950c949 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-state-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ResourceOrder } from './resource-order'; + +/** + * The event data structure + */ +export interface ResourceOrderStateChangeEventPayload { + resourceOrder?: ResourceOrder; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-state-change-event.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..39f545e4d6bd5176b17f7dc24a6c6f3f61f0f5f7 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-state-change-event.ts @@ -0,0 +1,64 @@ +/* tslint:disable */ +import { ResourceOrderStateChangeEventPayload } from './resource-order-state-change-event-payload'; + +/** + * The notification data structure + */ +export interface ResourceOrderStateChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ResourceOrderStateChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * Reference of the ProcessFlow + */ + href?: string; + + /** + * Identifier of the Process flow + */ + id?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order-update.ts b/src/app/openApis/resourceOrderManagement/models/resource-order-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..5862156eac582bf8114f3be03cd1c05587242591 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order-update.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +import { ExternalId } from './external-id'; +import { Note } from './note'; +import { ResourceOrderItemReq } from './resource-order-item-req'; +import { RelatedParty } from './related-party'; + +/** + * A Resource Order is a request to provision a set of Resources (logical and physical) triggered by the request to provision a Service through a Service Order Skipped properties: id,href,completionDate,orderDate + */ +export interface ResourceOrderUpdate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Used to categorize the order from a business perspective that can be useful for the OM system. + */ + category?: string; + + /** + * free-text description of the Resource Order + */ + description?: string; + + /** + * Date when the order was completed + */ + expectedCompletionDate?: string; + + /** + * DEPRECATED: Use externalReference Instead. ID given by the consumer (to facilitate searches afterwards) + */ + externalId?: string; + externalReference?: Array; + + /** + * A string used to give a name to the Resource Order + */ + name?: string; + note?: Array; + orderItem?: Array; + + /** + * Name of the Resource Order type + */ + orderType?: string; + + /** + * A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest) + */ + priority?: number; + relatedParty?: Array; + + /** + * Requested delivery date from the requestor perspective + */ + requestedCompletionDate?: string; + + /** + * Order start date wished by the requestor + */ + requestedStartDate?: string; + + /** + * Date when the order was actually started + */ + startDate?: string; + + /** + * The life cycle state of the resource. + */ + state?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-order.ts b/src/app/openApis/resourceOrderManagement/models/resource-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..1bcea44beaf0d50d277991552aa8afb190719a79 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-order.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +import { ExternalId } from './external-id'; +import { Note } from './note'; +import { ResourceOrderItemRes } from './resource-order-item-res'; +import { RelatedParty } from './related-party'; + +/** + * A Resource Order is a request to provision a set of Resources (logical and physical) triggered by the request to provision a Service through a Service Order + */ +export interface ResourceOrder { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * Used to categorize the order from a business perspective that can be useful for the OM system. + */ + category?: string; + + /** + * Effective delivery date amended by the provider + */ + completionDate?: string; + + /** + * free-text description of the Resource Order + */ + description?: string; + + /** + * Expected delivery date amended by the provider + */ + expectedCompletionDate?: string; + + /** + * DEPRECATED: Use externalReference Instead. ID given by the consumer (to facilitate searches afterwards) + */ + externalId?: string; + externalReference?: Array; + + /** + * Hyperlink to access the order + */ + href?: string; + + /** + * Identifier of an instance of the Resource Order. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type. + */ + id?: string; + + /** + * A string used to give a name to the Resource Order + */ + name?: string; + note?: Array; + orderDate?: string; + orderItem?: Array; + + /** + * Name of the Resource Order type + */ + orderType?: string; + + /** + * A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest) + */ + priority?: number; + relatedParty?: Array; + + /** + * Requested delivery date from the requestor perspective + */ + requestedCompletionDate?: string; + + /** + * Order start date wished by the requestor + */ + requestedStartDate?: string; + + /** + * Date when the order was started for processing + */ + startDate?: string; + + /** + * The life cycle state of the resource. + */ + state?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-ref-or-value-req.ts b/src/app/openApis/resourceOrderManagement/models/resource-ref-or-value-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..4a2f561dad94806c525a8ede778e0f7464db34e3 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-ref-or-value-req.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +import { FeatureReq } from './feature-req'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { CharacteristicReq } from './characteristic-req'; +import { ResourceRelationshipReq } from './resource-relationship-req'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself + */ +export interface ResourceRefOrValueReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * The URI for the object itself. + */ + href: string; + + /** + * Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type. + */ + id: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-ref-or-value-res.ts b/src/app/openApis/resourceOrderManagement/models/resource-ref-or-value-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..78edab409d21dd7aa31a5aba2e53f6eb2eeb324a --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-ref-or-value-res.ts @@ -0,0 +1,82 @@ +/* tslint:disable */ +import { FeatureRes } from './feature-res'; +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { Note } from './note'; +import { RelatedPlaceRefOrValue } from './related-place-ref-or-value'; +import { RelatedParty } from './related-party'; +import { CharacteristicRes } from './characteristic-res'; +import { ResourceRelationshipRes } from './resource-relationship-res'; +import { ResourceSpecificationRef } from './resource-specification-ref'; + +/** + * Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself + */ +export interface ResourceRefOrValueRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Configuration features + */ + activationFeature?: Array; + administrativeState?: 'locked' | 'shutdown' | 'unlocked'; + attachment?: Array; + + /** + * Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource + */ + category?: string; + + /** + * free-text description of the resource + */ + description?: string; + + /** + * A date time( DateTime). The date till the resource is operating + */ + endOperatingDate?: string; + + /** + * The URI for the object itself. + */ + href: string; + + /** + * Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type. + */ + id: string; + + /** + * A string used to give a name to the resource + */ + name?: string; + note?: Array; + operationalState?: 'disable' | 'enable'; + place?: RelatedPlaceRefOrValue; + relatedParty?: Array; + resourceCharacteristic?: Array; + resourceRelationship?: Array; + resourceSpecification?: ResourceSpecificationRef; + resourceStatus?: 'alarm' | 'available' | 'reserved' | 'standby' | 'suspended' | 'unknown'; + + /** + * A field that identifies the specific version of an instance of a resource. + */ + resourceVersion?: string; + + /** + * A date time( DateTime). The date from which the resource is operating + */ + startOperatingDate?: string; + usageState?: 'active' | 'busy' | 'idle'; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-relationship-req.ts b/src/app/openApis/resourceOrderManagement/models/resource-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..bb9a4b891a57392c7e349a0e0bb032ca20c0c8a6 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-relationship-req.ts @@ -0,0 +1,32 @@ +/* tslint:disable */ +import { ResourceRefOrValueReq } from './resource-ref-or-value-req'; + +/** + * Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ +export interface ResourceRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ + relationshipType: string; + resource: ResourceRefOrValueReq; + uuid?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-relationship-res.ts b/src/app/openApis/resourceOrderManagement/models/resource-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a6bab14458400154b397376511d293a34aa9f30 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-relationship-res.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +import { ResourceRefOrValueRes } from './resource-ref-or-value-res'; + +/** + * Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ +export interface ResourceRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * unique identifier + */ + id?: string; + + /** + * Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful + */ + relationshipType: string; + resource: ResourceRefOrValueRes; + uuid?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/resource-specification-ref.ts b/src/app/openApis/resourceOrderManagement/models/resource-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..ac9d833d3343e0a7dd31dc4ec63f55472683cd7a --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/resource-specification-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Resource Specification reference: The ResourceSpecification is required to realize a ProductSpecification. + */ +export interface ResourceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Resource specification version + */ + version?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/models/stack-trace-element.ts b/src/app/openApis/resourceOrderManagement/models/stack-trace-element.ts new file mode 100644 index 0000000000000000000000000000000000000000..4a746f15535f1ff10eea93e7ff435eeb6370e364 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/stack-trace-element.ts @@ -0,0 +1,11 @@ +/* tslint:disable */ +export interface StackTraceElement { + classLoaderName?: string; + className?: string; + fileName?: string; + lineNumber?: number; + methodName?: string; + moduleName?: string; + moduleVersion?: string; + nativeMethod?: boolean; +} diff --git a/src/app/openApis/resourceOrderManagement/models/throwable.ts b/src/app/openApis/resourceOrderManagement/models/throwable.ts new file mode 100644 index 0000000000000000000000000000000000000000..74a9a16c1397fccef44931d8f1a98667c760b0ff --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/throwable.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { StackTraceElement } from './stack-trace-element'; +export interface Throwable { + cause?: Throwable; + localizedMessage?: string; + message?: string; + stackTrace?: Array; + suppressed?: Array; +} diff --git a/src/app/openApis/resourceOrderManagement/models/time-period.ts b/src/app/openApis/resourceOrderManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/resourceOrderManagement/services.ts b/src/app/openApis/resourceOrderManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..e63791584dc96dfdb5d859c0fbbf76139cab81d4 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/services.ts @@ -0,0 +1,4 @@ +export { CancelResourceOrderService } from './services/cancel-resource-order.service'; +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ResourceOrderService } from './services/resource-order.service'; diff --git a/src/app/openApis/resourceOrderManagement/services/cancel-resource-order.service.ts b/src/app/openApis/resourceOrderManagement/services/cancel-resource-order.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..7ee098eb8d5a1fbefafbc8a2cb4bdbfce4b06e98 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/services/cancel-resource-order.service.ts @@ -0,0 +1,221 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { CancelResourceOrder } from '../models/cancel-resource-order'; +import { CancelResourceOrderCreate } from '../models/cancel-resource-order-create'; +@Injectable({ + providedIn: 'root', +}) +class CancelResourceOrderService extends __BaseService { + static readonly listCancelResourceOrderPath = '/tmf-api/cancelResourceOrder'; + static readonly createCancelResourceOrderPath = '/tmf-api/cancelResourceOrder'; + static readonly retrieveCancelResourceOrderPath = '/tmf-api/cancelResourceOrder/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find CancelResourceOrder objects + * + * This operation list or find CancelResourceOrder entities + * @param params The `CancelResourceOrderService.ListCancelResourceOrderParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listCancelResourceOrderResponse(params: CancelResourceOrderService.ListCancelResourceOrderParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/tmf-api/cancelResourceOrder`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find CancelResourceOrder objects + * + * This operation list or find CancelResourceOrder entities + * @param params The `CancelResourceOrderService.ListCancelResourceOrderParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listCancelResourceOrder(params: CancelResourceOrderService.ListCancelResourceOrderParams): __Observable> { + return this.listCancelResourceOrderResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a CancelResourceOrder + * + * This operation creates a CancelResourceOrder entity. + * @param body The CancelResourceOrder to be created + * @return OK or Created + */ + createCancelResourceOrderResponse(body: CancelResourceOrderCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/cancelResourceOrder`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a CancelResourceOrder + * + * This operation creates a CancelResourceOrder entity. + * @param body The CancelResourceOrder to be created + * @return OK or Created + */ + createCancelResourceOrder(body: CancelResourceOrderCreate): __Observable { + return this.createCancelResourceOrderResponse(body).pipe( + __map(_r => _r.body as CancelResourceOrder | CancelResourceOrder) + ); + } + + /** + * Retrieves a CancelResourceOrder by ID + * + * This operation retrieves a CancelResourceOrder entity. Attribute selection is enabled for all first level attributes. + * @param params The `CancelResourceOrderService.RetrieveCancelResourceOrderParams` containing the following parameters: + * + * - `id`: Identifier of the CancelResourceOrder + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveCancelResourceOrderResponse(params: CancelResourceOrderService.RetrieveCancelResourceOrderParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/tmf-api/cancelResourceOrder/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a CancelResourceOrder by ID + * + * This operation retrieves a CancelResourceOrder entity. Attribute selection is enabled for all first level attributes. + * @param params The `CancelResourceOrderService.RetrieveCancelResourceOrderParams` containing the following parameters: + * + * - `id`: Identifier of the CancelResourceOrder + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveCancelResourceOrder(params: CancelResourceOrderService.RetrieveCancelResourceOrderParams): __Observable { + return this.retrieveCancelResourceOrderResponse(params).pipe( + __map(_r => _r.body as CancelResourceOrder) + ); + } +} + +module CancelResourceOrderService { + + /** + * Parameters for listCancelResourceOrder + */ + export interface ListCancelResourceOrderParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveCancelResourceOrder + */ + export interface RetrieveCancelResourceOrderParams { + + /** + * Identifier of the CancelResourceOrder + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { CancelResourceOrderService } diff --git a/src/app/openApis/resourceOrderManagement/services/events-subscription.service.ts b/src/app/openApis/resourceOrderManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..d69c6b97fc41d13f3169b655ca08342408d3b9cb --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/services/events-subscription.service.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener10Path = '/tmf-api/resourceOrderingManagement/v4/hub'; + static readonly unregisterListener10Path = '/tmf-api/resourceOrderingManagement/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener10Response(body: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener10(body: EventSubscriptionInput): __Observable { + return this.registerListener10Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return Deleted + */ + unregisterListener10Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return Deleted + */ + unregisterListener10(id: string): __Observable { + return this.unregisterListener10Response(id).pipe( + __map(_r => _r.body as Error) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/resourceOrderManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/resourceOrderManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2649b73e860570f095697572688026bfda363615 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,379 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { CancelResourceOrderCreateEvent } from '../models/cancel-resource-order-create-event'; +import { CancelResourceOrderInformationRequiredEvent } from '../models/cancel-resource-order-information-required-event'; +import { CancelResourceOrderStateChangeEvent } from '../models/cancel-resource-order-state-change-event'; +import { ResourceOrderAttributeValueChangeEvent } from '../models/resource-order-attribute-value-change-event'; +import { ResourceOrderCreateEvent } from '../models/resource-order-create-event'; +import { ResourceOrderDeleteEvent } from '../models/resource-order-delete-event'; +import { ResourceOrderInformationRequiredEvent } from '../models/resource-order-information-required-event'; +import { ResourceOrderStateChangeEvent } from '../models/resource-order-state-change-event'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToCancelResourceOrderCreateEventPath = '/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderCreateEvent'; + static readonly listenToCancelResourceOrderInformationRequiredEventPath = '/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderInformationRequiredEvent'; + static readonly listenToCancelResourceOrderStateChangeEventPath = '/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderStateChangeEvent'; + static readonly listenToResourceOrderAttributeValueChangeEventPath = '/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderAttributeValueChangeEvent'; + static readonly listenToResourceOrderCreateEventPath = '/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderCreateEvent'; + static readonly listenToResourceOrderDeleteEventPath = '/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderDeleteEvent'; + static readonly listenToResourceOrderInformationRequiredEventPath = '/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderInformationRequiredEvent'; + static readonly listenToResourceOrderStateChangeEventPath = '/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderStateChangeEvent'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity CancelResourceOrderCreateEvent + * + * Example of a client listener for receiving the notification CancelResourceOrderCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToCancelResourceOrderCreateEventResponse(body: CancelResourceOrderCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CancelResourceOrderCreateEvent + * + * Example of a client listener for receiving the notification CancelResourceOrderCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToCancelResourceOrderCreateEvent(body: CancelResourceOrderCreateEvent): __Observable { + return this.listenToCancelResourceOrderCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity CancelResourceOrderInformationRequiredEvent + * + * Example of a client listener for receiving the notification CancelResourceOrderInformationRequiredEvent + * @param body The event data + * @return OK or Notified + */ + listenToCancelResourceOrderInformationRequiredEventResponse(body: CancelResourceOrderInformationRequiredEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderInformationRequiredEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CancelResourceOrderInformationRequiredEvent + * + * Example of a client listener for receiving the notification CancelResourceOrderInformationRequiredEvent + * @param body The event data + * @return OK or Notified + */ + listenToCancelResourceOrderInformationRequiredEvent(body: CancelResourceOrderInformationRequiredEvent): __Observable { + return this.listenToCancelResourceOrderInformationRequiredEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity CancelResourceOrderStateChangeEvent + * + * Example of a client listener for receiving the notification CancelResourceOrderStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToCancelResourceOrderStateChangeEventResponse(body: CancelResourceOrderStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity CancelResourceOrderStateChangeEvent + * + * Example of a client listener for receiving the notification CancelResourceOrderStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToCancelResourceOrderStateChangeEvent(body: CancelResourceOrderStateChangeEvent): __Observable { + return this.listenToCancelResourceOrderStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceOrderAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ResourceOrderAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderAttributeValueChangeEventResponse(body: ResourceOrderAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceOrderAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ResourceOrderAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderAttributeValueChangeEvent(body: ResourceOrderAttributeValueChangeEvent): __Observable { + return this.listenToResourceOrderAttributeValueChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceOrderCreateEvent + * + * Example of a client listener for receiving the notification ResourceOrderCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderCreateEventResponse(body: ResourceOrderCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceOrderCreateEvent + * + * Example of a client listener for receiving the notification ResourceOrderCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderCreateEvent(body: ResourceOrderCreateEvent): __Observable { + return this.listenToResourceOrderCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceOrderDeleteEvent + * + * Example of a client listener for receiving the notification ResourceOrderDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderDeleteEventResponse(body: ResourceOrderDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceOrderDeleteEvent + * + * Example of a client listener for receiving the notification ResourceOrderDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderDeleteEvent(body: ResourceOrderDeleteEvent): __Observable { + return this.listenToResourceOrderDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceOrderInformationRequiredEvent + * + * Example of a client listener for receiving the notification ResourceOrderInformationRequiredEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderInformationRequiredEventResponse(body: ResourceOrderInformationRequiredEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderInformationRequiredEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceOrderInformationRequiredEvent + * + * Example of a client listener for receiving the notification ResourceOrderInformationRequiredEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderInformationRequiredEvent(body: ResourceOrderInformationRequiredEvent): __Observable { + return this.listenToResourceOrderInformationRequiredEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ResourceOrderStateChangeEvent + * + * Example of a client listener for receiving the notification ResourceOrderStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderStateChangeEventResponse(body: ResourceOrderStateChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderStateChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ResourceOrderStateChangeEvent + * + * Example of a client listener for receiving the notification ResourceOrderStateChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToResourceOrderStateChangeEvent(body: ResourceOrderStateChangeEvent): __Observable { + return this.listenToResourceOrderStateChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/resourceOrderManagement/services/resource-order.service.ts b/src/app/openApis/resourceOrderManagement/services/resource-order.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..e7cb0e388397ca37de1eb3dbf639ae6f5166dd80 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/services/resource-order.service.ts @@ -0,0 +1,359 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ResourceOrder } from '../models/resource-order'; +import { ResourceOrderCreate } from '../models/resource-order-create'; +import { Error } from '../models/error'; +import { ResourceOrderUpdate } from '../models/resource-order-update'; +@Injectable({ + providedIn: 'root', +}) +class ResourceOrderService extends __BaseService { + static readonly listResourceOrderPath = '/tmf-api/resourceOrderingManagement/v4/resourceOrder'; + static readonly createResourceOrderPath = '/tmf-api/resourceOrderingManagement/v4/resourceOrder'; + static readonly retrieveResourceOrderPath = '/tmf-api/resourceOrderingManagement/v4/resourceOrder/{id}'; + static readonly deleteResourceOrderPath = '/tmf-api/resourceOrderingManagement/v4/resourceOrder/{id}'; + static readonly patchResourceOrderPath = '/tmf-api/resourceOrderingManagement/v4/resourceOrder/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ResourceOrder objects + * + * This operation list or find ResourceOrder entities + * @param params The `ResourceOrderService.ListResourceOrderParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceOrderResponse(params: ResourceOrderService.ListResourceOrderParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/resourceOrder`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ResourceOrder objects + * + * This operation list or find ResourceOrder entities + * @param params The `ResourceOrderService.ListResourceOrderParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourceOrder(params: ResourceOrderService.ListResourceOrderParams): __Observable> { + return this.listResourceOrderResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ResourceOrder + * + * This operation creates a ResourceOrder entity. + * @param params The `ResourceOrderService.CreateResourceOrderParams` containing the following parameters: + * + * - `roCreate`: The ResourceOrder to be created + * + * - `name`: + * + * @return OK or Created + */ + createResourceOrderResponse(params: ResourceOrderService.CreateResourceOrderParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.roCreate; + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'POST', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/resourceOrder`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ResourceOrder + * + * This operation creates a ResourceOrder entity. + * @param params The `ResourceOrderService.CreateResourceOrderParams` containing the following parameters: + * + * - `roCreate`: The ResourceOrder to be created + * + * - `name`: + * + * @return OK or Created + */ + createResourceOrder(params: ResourceOrderService.CreateResourceOrderParams): __Observable { + return this.createResourceOrderResponse(params).pipe( + __map(_r => _r.body as ResourceOrder | ResourceOrder) + ); + } + + /** + * Retrieves a ResourceOrder by ID + * + * This operation retrieves a ResourceOrder entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceOrderService.RetrieveResourceOrderParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceOrder + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceOrderResponse(params: ResourceOrderService.RetrieveResourceOrderParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/resourceOrder/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ResourceOrder by ID + * + * This operation retrieves a ResourceOrder entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourceOrderService.RetrieveResourceOrderParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceOrder + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourceOrder(params: ResourceOrderService.RetrieveResourceOrderParams): __Observable { + return this.retrieveResourceOrderResponse(params).pipe( + __map(_r => _r.body as ResourceOrder) + ); + } + + /** + * Deletes a ResourceOrder + * + * This operation deletes a ResourceOrder entity. + * @param id Identifier of the ResourceOrder + * @return Deleted + */ + deleteResourceOrderResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/resourceOrder/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ResourceOrder + * + * This operation deletes a ResourceOrder entity. + * @param id Identifier of the ResourceOrder + * @return Deleted + */ + deleteResourceOrder(id: string): __Observable { + return this.deleteResourceOrderResponse(id).pipe( + __map(_r => _r.body as Error) + ); + } + + /** + * Updates partially a ResourceOrder + * + * This operation updates partially a ResourceOrder entity. + * @param params The `ResourceOrderService.PatchResourceOrderParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceOrder + * + * - `body`: The ResourceOrder to be updated + * + * @return Updated + */ + patchResourceOrderResponse(params: ResourceOrderService.PatchResourceOrderParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/tmf-api/resourceOrderingManagement/v4/resourceOrder/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ResourceOrder + * + * This operation updates partially a ResourceOrder entity. + * @param params The `ResourceOrderService.PatchResourceOrderParams` containing the following parameters: + * + * - `id`: Identifier of the ResourceOrder + * + * - `body`: The ResourceOrder to be updated + * + * @return Updated + */ + patchResourceOrder(params: ResourceOrderService.PatchResourceOrderParams): __Observable { + return this.patchResourceOrderResponse(params).pipe( + __map(_r => _r.body as ResourceOrder) + ); + } +} + +module ResourceOrderService { + + /** + * Parameters for listResourceOrder + */ + export interface ListResourceOrderParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for createResourceOrder + */ + export interface CreateResourceOrderParams { + + /** + * The ResourceOrder to be created + */ + roCreate: ResourceOrderCreate; + name?: string; + } + + /** + * Parameters for retrieveResourceOrder + */ + export interface RetrieveResourceOrderParams { + + /** + * Identifier of the ResourceOrder + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchResourceOrder + */ + export interface PatchResourceOrderParams { + + /** + * Identifier of the ResourceOrder + */ + id: string; + + /** + * The ResourceOrder to be updated + */ + body: ResourceOrderUpdate; + } +} + +export { ResourceOrderService } diff --git a/src/app/openApis/resourceOrderManagement/strict-http-response.ts b/src/app/openApis/resourceOrderManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/resourceOrderManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/resourcePoolManagement/api-configuration.ts b/src/app/openApis/resourcePoolManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..7b7804c8c4faf3b87b14124c31bd22f366e88863 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/api.module.ts b/src/app/openApis/resourcePoolManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..d4d83da76222ff32c4330134e8d2aff65449413c --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/api.module.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { AvailabilityCheckService } from './services/availability-check.service'; +import { ExtractService } from './services/extract.service'; +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { PushService } from './services/push.service'; +import { ReservationService } from './services/reservation.service'; +import { ResourcePoolService } from './services/resource-pool.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + AvailabilityCheckService, + ExtractService, + EventsSubscriptionService, + PushService, + ReservationService, + ResourcePoolService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/resourcePoolManagement/base-service.ts b/src/app/openApis/resourcePoolManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/resourcePoolManagement/models.ts b/src/app/openApis/resourcePoolManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..6b0e4df90cb315ae9bd7ac3b7aa3727dd9aac6bc --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models.ts @@ -0,0 +1,24 @@ +export { ApplicableTimePeriod } from './models/applicable-time-period'; +export { AppliedCapacityAmount } from './models/applied-capacity-amount'; +export { AvailabilityCheck } from './models/availability-check'; +export { AvailabilityCheckCreate } from './models/availability-check-create'; +export { Capacity } from './models/capacity'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { ExtractCreate } from './models/extract-create'; +export { PlaceRef } from './models/place-ref'; +export { PushCreate } from './models/push-create'; +export { RelatedParty } from './models/related-party'; +export { Reservation } from './models/reservation'; +export { ReservationCreate } from './models/reservation-create'; +export { ReservationItem } from './models/reservation-item'; +export { ReservationUpdate } from './models/reservation-update'; +export { ResourceCapacityDemand } from './models/resource-capacity-demand'; +export { ResourcePool } from './models/resource-pool'; +export { ResourcePoolCreate } from './models/resource-pool-create'; +export { ResourcePoolRef } from './models/resource-pool-ref'; +export { ResourcePoolUpdate } from './models/resource-pool-update'; +export { ResourceRef } from './models/resource-ref'; +export { ServiceOrderRef } from './models/service-order-ref'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/resourcePoolManagement/models/applicable-time-period.ts b/src/app/openApis/resourcePoolManagement/models/applicable-time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..5fed749f57365bf81444221b25a5d1ff4c0a4bcb --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/applicable-time-period.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * The period of time for which Capacity or CapacityDemand applies. + */ +export interface ApplicableTimePeriod { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + + /** + * A day or days representing when the schedule is applicable. For example 2, 3 represent Monday and Tuesday. + */ + dayOfWeek?: string; + + /** + * The period of time for which the schedule is applicable. Instance values are mutually exclusive with daysOfWeek values. + */ + endDateTime?: string; + + /** + * The period of time for which the schedule is applicable. Instance values are mutually exclusive with daysOfWeek values. + */ + fromDateTime?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * An indicator that specifies the inclusion or exclusion of the from and to DateTime attributes. Possible values are "open", "closed", "closedBottom" and "closedTop". + */ + rangeInterval?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/applied-capacity-amount.ts b/src/app/openApis/resourcePoolManagement/models/applied-capacity-amount.ts new file mode 100644 index 0000000000000000000000000000000000000000..71ddd8f549a07696cb5f5a40356c95d36f787388 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/applied-capacity-amount.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +import { ResourceRef } from './resource-ref'; +import { ResourceCapacityDemand } from './resource-capacity-demand'; + +/** + * The amount of CapcityDemand applied to a CapacityAmount. + */ +export interface AppliedCapacityAmount { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + + /** + * An amount of demand applied to a CapacityAmount. Note that this is a composite attribute defined by CapacityAmount. + */ + appliedDemandAmount?: number; + + /** + * Unique reference of the entity + */ + href?: string; + resource?: Array; + resourceCapacityDemand?: ResourceCapacityDemand; + resources?: Array; + uuid?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/availability-check-create.ts b/src/app/openApis/resourcePoolManagement/models/availability-check-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..46f1e334458efb240469622711ea53768f9f5492 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/availability-check-create.ts @@ -0,0 +1,27 @@ +/* tslint:disable */ +import { ResourceCapacityDemand } from './resource-capacity-demand'; + +/** + * the availabilityCheck task resource for resource pool management Skipped properties: id,href + */ +export interface AvailabilityCheckCreate { + "@baseType"?: string; + "@schemaLocation"?: string; + "@type"?: string; + + /** + * The base type for use in polymorphic collections + */ + atBaseType?: string; + + /** + * A link to the schema describing a resource (for type extension). + */ + atSchemaLocation?: string; + + /** + * The class type of the actual resource (for type extension). + */ + atType?: string; + resourceCapacityDemand?: ResourceCapacityDemand; +} diff --git a/src/app/openApis/resourcePoolManagement/models/availability-check.ts b/src/app/openApis/resourcePoolManagement/models/availability-check.ts new file mode 100644 index 0000000000000000000000000000000000000000..faa5d8202d358e1a04f71d947f99343154733ed1 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/availability-check.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ +import { ResourceRef } from './resource-ref'; +import { ResourceCapacityDemand } from './resource-capacity-demand'; + +/** + * the availabilityCheck task resource for resource pool management + */ +export interface AvailabilityCheck { + "@baseType"?: string; + "@schemaLocation"?: string; + "@type"?: string; + + /** + * The base type for use in polymorphic collections + */ + atBaseType?: string; + + /** + * A link to the schema describing a resource (for type extension). + */ + atSchemaLocation?: string; + + /** + * The class type of the actual resource (for type extension). + */ + atType?: string; + availableResources?: Array; + + /** + * A string. Hyperlink to access the availabilityCheck task for resource pool Management + */ + href?: string; + + /** + * A string. Identifier of an instance of the availabilityCheck task for resource pool Management + */ + id?: string; + resourceCapacityDemand?: ResourceCapacityDemand; +} diff --git a/src/app/openApis/resourcePoolManagement/models/capacity.ts b/src/app/openApis/resourcePoolManagement/models/capacity.ts new file mode 100644 index 0000000000000000000000000000000000000000..f0c3e261072a8773ffac15946b9616b89a10f90c --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/capacity.ts @@ -0,0 +1,29 @@ +/* tslint:disable */ +import { AppliedCapacityAmount } from './applied-capacity-amount'; +import { PlaceRef } from './place-ref'; +import { RelatedParty } from './related-party'; +import { ResourceRef } from './resource-ref'; +export interface Capacity { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + appliedCapacityAmount?: Array; + capacityAmount?: number; + + /** + * Unique reference of the entity + */ + href?: string; + place?: PlaceRef; + relatedParty?: RelatedParty; + resources?: Array; + uuid?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/error.ts b/src/app/openApis/resourcePoolManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..8812fb10926a0da80e91a2852ffa504ec860860a --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/error.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +export interface Error { + "@schemaLocation"?: string; + "@type"?: string; + + /** + * (optional) A link to the schema describing a REST resource. + */ + atSchemaLocation?: string; + + /** + * (optional) The class type of a REST resource. + */ + atType?: string; + + /** + * Application related code. + */ + code: number; + + /** + * (optional) Text that provide more details and corrective actions related to the error. + */ + message?: string; + + /** + * Text that explains the reason for error. + */ + reason: number; + + /** + * (optional) A URL to online documentation that provides more information about the error. + */ + referenceError?: string; + + /** + * (optional) http error code extension like 400-2 + */ + status?: number; +} diff --git a/src/app/openApis/resourcePoolManagement/models/event-subscription-input.ts b/src/app/openApis/resourcePoolManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..c9800c11020e78b3523785cb90f5dfe5d9afdcb7 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/event-subscription-input.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/event-subscription.ts b/src/app/openApis/resourcePoolManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..c4dcf13c0380b4fa8a8d98f39a8b1e8c20c7aeed --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/event-subscription.ts @@ -0,0 +1,18 @@ +/* tslint:disable */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/extract-create.ts b/src/app/openApis/resourcePoolManagement/models/extract-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..735a3a1193ebbf10831864e026ac4751adaa0526 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/extract-create.ts @@ -0,0 +1,29 @@ +/* tslint:disable */ +import { Capacity } from './capacity'; +import { ResourcePoolRef } from './resource-pool-ref'; + +/** + * the extract task resource for resource pool management Skipped properties: id,href + */ +export interface ExtractCreate { + "@baseType"?: string; + "@schemaLocation"?: string; + "@type"?: string; + + /** + * The base type for use in polymorphic collections + */ + atBaseType?: string; + + /** + * A link to the schema describing a resource (for type extension). + */ + atSchemaLocation?: string; + + /** + * The class type of the actual resource (for type extension). + */ + atType?: string; + capacity?: Capacity; + resourcePool?: ResourcePoolRef; +} diff --git a/src/app/openApis/resourcePoolManagement/models/place-ref.ts b/src/app/openApis/resourcePoolManagement/models/place-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..5b88feb9c7dbaabb1d332c653fd76982cfc97679 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/place-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Place reference. PlaceRef defines the placeRefs where the products are sold or delivered. + */ +export interface PlaceRef { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + "@referredType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a related entity. + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/push-create.ts b/src/app/openApis/resourcePoolManagement/models/push-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..d9ce6d35cd64855181867e9dfe8393a9bd910690 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/push-create.ts @@ -0,0 +1,29 @@ +/* tslint:disable */ +import { Capacity } from './capacity'; +import { ResourcePoolRef } from './resource-pool-ref'; + +/** + * the push task resource for resource pool management Skipped properties: id,href + */ +export interface PushCreate { + "@baseType"?: string; + "@schemaLocation"?: string; + "@type"?: string; + + /** + * The base type for use in polymorphic collections + */ + atBaseType?: string; + + /** + * A link to the schema describing a resource (for type extension). + */ + atSchemaLocation?: string; + + /** + * The class type of the actual resource (for type extension). + */ + atType?: string; + capacity?: Capacity; + resourcePool?: ResourcePoolRef; +} diff --git a/src/app/openApis/resourcePoolManagement/models/related-party.ts b/src/app/openApis/resourcePoolManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..09a508b0055d173ec2df1a1dec60606c7b8918a6 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + "@referredType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/reservation-create.ts b/src/app/openApis/resourcePoolManagement/models/reservation-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..f9e47fcf3ecab34e69a62cbe98159bf9273a75d4 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/reservation-create.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { RelatedParty } from './related-party'; +import { ReservationItem } from './reservation-item'; +import { ServiceOrderRef } from './service-order-ref'; +import { TimePeriod } from './time-period'; + +/** + * reservation api resource Skipped properties: id,href + */ +export interface ReservationCreate { + "@baseType"?: string; + "@schemaLocation"?: string; + "@type"?: string; + atBaseType?: string; + + /** + * A string. Generic attribute containing the link to the schema that defines the structure of the class type of the current object. + */ + atSchemaLocation?: string; + + /** + * A string. Indicates the (class) type of reservation. Ex. serviceItemReservation, resourceItemReservation + */ + atType?: string; + + /** + * A string. free-text description of the reservation. + */ + name?: string; + description?: string; + relatedParty?: RelatedParty; + requestedPeriodEndDateTime?: string; + requestedPeriodStartDateTime?: string; + reservationItem?: Array; + + /** + * A string. The life cycle state of the reservation. + */ + reservationState?: string; + serviceOrderRef?: ServiceOrderRef; + + /** + * The period of time for which the reservation is applicable. + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourcePoolManagement/models/reservation-item.ts b/src/app/openApis/resourcePoolManagement/models/reservation-item.ts new file mode 100644 index 0000000000000000000000000000000000000000..fcf9557dd9e9046912014d86a8f8e81ed4ade320 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/reservation-item.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { AppliedCapacityAmount } from './applied-capacity-amount'; +import { ResourceCapacityDemand } from './resource-capacity-demand'; + +/** + * An identified part of the reservation. A reservation is decomposed into one or more reservation items. + */ +export interface ReservationItem { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + appliedCapacityAmount?: AppliedCapacityAmount; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Represents the number of reservationItems that make up the reservation. + */ + quantity?: number; + resourceCapacity?: ResourceCapacityDemand; + + /** + * A string. The life cycle state of the each reservation item. + */ + subReservationState?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/reservation-update.ts b/src/app/openApis/resourcePoolManagement/models/reservation-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..030c382f75e6d11402325fc68c538ac6ffae63f5 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/reservation-update.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { RelatedParty } from './related-party'; +import { ReservationItem } from './reservation-item'; +import { ServiceOrderRef } from './service-order-ref'; +import { TimePeriod } from './time-period'; + +/** + * reservation api resource Skipped properties: id,href + */ +export interface ReservationUpdate { + "@baseType"?: string; + "@schemaLocation"?: string; + "@type"?: string; + atBaseType?: string; + + /** + * A string. Generic attribute containing the link to the schema that defines the structure of the class type of the current object. + */ + atSchemaLocation?: string; + + /** + * A string. Indicates the (class) type of reservation. Ex. serviceItemReservation, resourceItemReservation + */ + atType?: string; + + /** + * A string. free-text description of the reservation. + */ + name?: string; + description?: string; + relatedParty?: RelatedParty; + requestedPeriodEndDateTime?: string; + requestedPeriodStartDateTime?: string; + reservationItem?: Array; + + /** + * A string. The life cycle state of the reservation. + */ + reservationState?: string; + serviceOrderRef?: ServiceOrderRef; + + /** + * The period of time for which the reservation is applicable. + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/resourcePoolManagement/models/reservation.ts b/src/app/openApis/resourcePoolManagement/models/reservation.ts new file mode 100644 index 0000000000000000000000000000000000000000..27337c1392195048e9573b2774d2f8080fb6b633 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/reservation.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +import { RelatedParty } from './related-party'; +import { ReservationItem } from './reservation-item'; +import { ServiceOrderRef } from './service-order-ref'; +import { TimePeriod } from './time-period'; + +/** + * reservation api resource + */ +export interface Reservation { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * A string. Identifier of an instance of the Reservation. + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + relatedParty?: RelatedParty; + + /** + * End of the time period, using IETC-RFC-3339 format + */ + requestedPeriodEndDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + requestedPeriodStartDateTime?: string; + reservationItem?: Array; + + /** + * A string. The life cycle state of the reservation. + */ + reservationState?: string; + serviceOrderRef?: ServiceOrderRef; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/resource-capacity-demand.ts b/src/app/openApis/resourcePoolManagement/models/resource-capacity-demand.ts new file mode 100644 index 0000000000000000000000000000000000000000..267ee415c33bfc56208aef92effffb0539928346 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/resource-capacity-demand.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +import { ApplicableTimePeriod } from './applicable-time-period'; +import { PlaceRef } from './place-ref'; +import { ResourcePoolRef } from './resource-pool-ref'; +import { ResourceRef } from './resource-ref'; + +/** + * the amount of capacity that is planned to be consumed or has been consumed. + */ +export interface ResourceCapacityDemand { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + applicableTimePeriod?: ApplicableTimePeriod; + + /** + * A value and units that define the CapacityDemand, such as 10000 ea, 10B Mb. Instance values are mutually exclusive with From and To capacityDemandAmounts and range interval. + */ + capacityDemandAmount?: number; + + /** + * Unique reference of the entity + */ + href?: string; + place?: PlaceRef; + resourcePool?: ResourcePoolRef; + resources?: Array; + uuid?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/resource-pool-create.ts b/src/app/openApis/resourcePoolManagement/models/resource-pool-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebf313aead8632c98c15431e646a461cd12d3560 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/resource-pool-create.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { Capacity } from './capacity'; + +/** + * manages resource capacity with the resource state Skipped properties: id,href + */ +export interface ResourcePoolCreate { + "@baseType"?: string; + "@schemaLocation"?: string; + "@type"?: string; + + /** + * A string. Generic attribute indicating the base class type of the extension class of the current object. Useful only when the class type of the current object is unknown to the implementation. + */ + atBaseType?: string; + + /** + * A string. Generic attribute containing the link to the schema that defines the structure of the class type of the current object. + */ + atSchemaLocation?: string; + + /** + * A string. Generic attribute containing the name of the resource class type. + */ + atType?: string; + capacity?: Capacity; + + /** + * A string. free-text description of the Resource Pool. + */ + description?: string; + name?: string; + + /** + * A related party defines party or party role linked to a specific entity, who uses the resource of Resource Pool. + */ + relatedParty?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/resource-pool-ref.ts b/src/app/openApis/resourcePoolManagement/models/resource-pool-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..5cfed78d5b4cad1a5826ac561721b6e16ab3de4e --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/resource-pool-ref.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +import { ResourceRef } from './resource-ref'; + +/** + * manages resource capacity with the resource state + */ +export interface ResourcePoolRef { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + "@referredType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + + /** + * A string. Indicates the type of the referred object. This attribute is to be used when the object is representing a reference to an existing object instead of the of the object itself. + */ + atReferredType?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * A string. Identifier of an instance of the Resource Pool. + */ + id?: string; + resources?: Array; +} diff --git a/src/app/openApis/resourcePoolManagement/models/resource-pool-update.ts b/src/app/openApis/resourcePoolManagement/models/resource-pool-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..a11512ac215e0197663dead215fcd5ec46f09e5f --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/resource-pool-update.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { Capacity } from './capacity'; + +/** + * manages resource capacity with the resource state Skipped properties: id,href + */ +export interface ResourcePoolUpdate { + "@baseType"?: string; + "@schemaLocation"?: string; + "@type"?: string; + + /** + * A string. Generic attribute indicating the base class type of the extension class of the current object. Useful only when the class type of the current object is unknown to the implementation. + */ + atBaseType?: string; + + /** + * A string. Generic attribute containing the link to the schema that defines the structure of the class type of the current object. + */ + atSchemaLocation?: string; + + /** + * A string. Generic attribute containing the name of the resource class type. + */ + atType?: string; + capacity?: Capacity; + + /** + * A string. free-text description of the Resource Pool. + */ + description?: string; + name?: string; + + /** + * A related party defines party or party role linked to a specific entity, who uses the resource of Resource Pool. + */ + relatedParty?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/resource-pool.ts b/src/app/openApis/resourcePoolManagement/models/resource-pool.ts new file mode 100644 index 0000000000000000000000000000000000000000..9529d44330cdf6a410d28924166e695f2ed0053f --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/resource-pool.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +import { Capacity } from './capacity'; +import { TimePeriod } from './time-period'; + +/** + * manages resource capacity with the resource state + */ +export interface ResourcePool { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + capacity?: Capacity; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of this REST resource + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/resource-ref.ts b/src/app/openApis/resourcePoolManagement/models/resource-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..d9b3a47fde3b01176a890f0c2c7d8ccd4e47cc8a --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/resource-ref.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +export interface ResourceRef { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + "@referredType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the supporting resource + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/service-order-ref.ts b/src/app/openApis/resourcePoolManagement/models/service-order-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..4b00de0a840f7b47f7a336aa862b925ed58fb673 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/service-order-ref.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ + +/** + * Service Order reference. Useful to understand the which was the Service order through which the service was instantiated in the service inventory + */ +export interface ServiceOrderRef { + + /** + * When sub-classing, this defines the super-class + */ + "@baseType"?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + "@referredType"?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + "@schemaLocation"?: string; + "@type"?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the Service Order + */ + id: string; + + /** + * Unique identifier of the Service Order Item within a service order, not populated if this is a reference to a service order + */ + serviceOrderItemId?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/models/time-period.ts b/src/app/openApis/resourcePoolManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/resourcePoolManagement/services.ts b/src/app/openApis/resourcePoolManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..50038ced314d92e83870d59dcd449873c5862872 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/services.ts @@ -0,0 +1,6 @@ +export { AvailabilityCheckService } from './services/availability-check.service'; +export { ExtractService } from './services/extract.service'; +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { PushService } from './services/push.service'; +export { ReservationService } from './services/reservation.service'; +export { ResourcePoolService } from './services/resource-pool.service'; diff --git a/src/app/openApis/resourcePoolManagement/services/availability-check.service.ts b/src/app/openApis/resourcePoolManagement/services/availability-check.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8285a778d5702e64f0a8e5eca1e4a50d96c1db4a --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/services/availability-check.service.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { AvailabilityCheck } from '../models/availability-check'; +import { AvailabilityCheckCreate } from '../models/availability-check-create'; +@Injectable({ + providedIn: 'root', +}) +class AvailabilityCheckService extends __BaseService { + static readonly createAvailabilityCheckPath = '/resourcePoolManagement/v1/availabilityCheck'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Creates a 'AvailabilityCheck' + * + * This operation executes task to retrieve available Resource entities or to check resource pool has available Resource capacity. + * @param body The Availability Check to be created + * @return OK or Created + */ + createAvailabilityCheckResponse(body: AvailabilityCheckCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourcePoolManagement/v1/availabilityCheck`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a 'AvailabilityCheck' + * + * This operation executes task to retrieve available Resource entities or to check resource pool has available Resource capacity. + * @param body The Availability Check to be created + * @return OK or Created + */ + createAvailabilityCheck(body: AvailabilityCheckCreate): __Observable { + return this.createAvailabilityCheckResponse(body).pipe( + __map(_r => _r.body as AvailabilityCheck | AvailabilityCheck) + ); + } +} + +module AvailabilityCheckService { +} + +export { AvailabilityCheckService } diff --git a/src/app/openApis/resourcePoolManagement/services/events-subscription.service.ts b/src/app/openApis/resourcePoolManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..e6a09bdb918efb349264bd4d11a3432d9755e9af --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/services/events-subscription.service.ts @@ -0,0 +1,115 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +import { Error } from '../models/error'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener15Path = '/resourcePoolManagement/v1/hub'; + static readonly unregisterListener15Path = '/resourcePoolManagement/v1/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener15Response(body: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourcePoolManagement/v1/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener15(body: EventSubscriptionInput): __Observable { + return this.registerListener15Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return Deleted + */ + unregisterListener15Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourcePoolManagement/v1/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + * @return Deleted + */ + unregisterListener15(id: string): __Observable { + return this.unregisterListener15Response(id).pipe( + __map(_r => _r.body as Error) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/resourcePoolManagement/services/extract.service.ts b/src/app/openApis/resourcePoolManagement/services/extract.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..a62e8c86787692499b7443a10d42d739480e0660 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/services/extract.service.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ResourcePool } from '../models/resource-pool'; +import { ExtractCreate } from '../models/extract-create'; +@Injectable({ + providedIn: 'root', +}) +class ExtractService extends __BaseService { + static readonly createExtractPath = '/resourcePoolManagement/v1/extract'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Creates an 'Extract' action and modifies a pool + * + * In this operation, TASK is executed to extract the capacity of the resource from the resource pool to another pool. + * @param body The Extract to be performed + * @return OK or Created + */ + createExtractResponse(body: ExtractCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourcePoolManagement/v1/extract`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates an 'Extract' action and modifies a pool + * + * In this operation, TASK is executed to extract the capacity of the resource from the resource pool to another pool. + * @param body The Extract to be performed + * @return OK or Created + */ + createExtract(body: ExtractCreate): __Observable { + return this.createExtractResponse(body).pipe( + __map(_r => _r.body as ResourcePool | ResourcePool) + ); + } +} + +module ExtractService { +} + +export { ExtractService } diff --git a/src/app/openApis/resourcePoolManagement/services/push.service.ts b/src/app/openApis/resourcePoolManagement/services/push.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ecb4fcd3aec13eb4818762fb5758613bebfa47dc --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/services/push.service.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ResourcePool } from '../models/resource-pool'; +import { PushCreate } from '../models/push-create'; +@Injectable({ + providedIn: 'root', +}) +class PushService extends __BaseService { + static readonly createPushPath = '/resourcePoolManagement/v1/push'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Creates a 'Push' action and modifies a Pool + * + * This operation runs TASK, which adds the capacity of the new resource to the resource pool. + * @param body The Push to be performed + * @return OK or Created + */ + createPushResponse(body: PushCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourcePoolManagement/v1/push`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a 'Push' action and modifies a Pool + * + * This operation runs TASK, which adds the capacity of the new resource to the resource pool. + * @param body The Push to be performed + * @return OK or Created + */ + createPush(body: PushCreate): __Observable { + return this.createPushResponse(body).pipe( + __map(_r => _r.body as ResourcePool | ResourcePool) + ); + } +} + +module PushService { +} + +export { PushService } diff --git a/src/app/openApis/resourcePoolManagement/services/reservation.service.ts b/src/app/openApis/resourcePoolManagement/services/reservation.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..63b0931d43725dec2eee03c51d60966a2adbef3b --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/services/reservation.service.ts @@ -0,0 +1,371 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Reservation } from '../models/reservation'; +import { ReservationCreate } from '../models/reservation-create'; +import { ReservationUpdate } from '../models/reservation-update'; +@Injectable({ + providedIn: 'root', +}) +class ReservationService extends __BaseService { + static readonly listReservationPath = 'resourcePoolManagement/v1/reservation'; + static readonly createReservationPath = '/resourcePoolManagement/v1/reservation'; + static readonly retrieveReservationPath = '/resourcePoolManagement/v1/reservation/{id}'; + static readonly patchReservationPath = '/resourcePoolManagement/v1/reservation/{id}'; + static readonly deleteReservationPoolPath = '/resourcePoolManagement/v1/reservation/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find 'Reservation' objects + * @param params The `ReservationService.ListReservationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `name`: + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma separated properties to display in response + * + * @return Ok + */ + listReservationResponse(params: ReservationService.ListReservationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.name != null) __params = __params.set('name', params.name.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourcePoolManagement/v1/reservation`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find 'Reservation' objects + * @param params The `ReservationService.ListReservationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `name`: + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma separated properties to display in response + * + * @return Ok + */ + listReservation(params: ReservationService.ListReservationParams): __Observable> { + return this.listReservationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a 'Reservation' + * @param params The `ReservationService.CreateReservationParams` containing the following parameters: + * + * - `body`: The Reservation to be created + * + * - `name`: + * + * @return OK or Created + */ + createReservationResponse(params: ReservationService.CreateReservationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.body; + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourcePoolManagement/v1/reservation`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a 'Reservation' + * @param params The `ReservationService.CreateReservationParams` containing the following parameters: + * + * - `body`: The Reservation to be created + * + * - `name`: + * + * @return OK or Created + */ + createReservation(params: ReservationService.CreateReservationParams): __Observable { + return this.createReservationResponse(params).pipe( + __map(_r => _r.body as Reservation | Reservation) + ); + } + + /** + * Retrieves a 'Reservation' by Id + * @param params The `ReservationService.RetrieveReservationParams` containing the following parameters: + * + * - `id`: Identifier of the Reservation + * + * - `name`: + * + * @return Ok + */ + retrieveReservationResponse(params: ReservationService.RetrieveReservationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourcePoolManagement/v1/reservation/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * Retrieves a 'Reservation' by Id + * @param params The `ReservationService.RetrieveReservationParams` containing the following parameters: + * + * - `id`: Identifier of the Reservation + * + * - `name`: + * + * @return Ok + */ + retrieveReservation(params: ReservationService.RetrieveReservationParams): __Observable< Reservation> { + return this.retrieveReservationResponse(params).pipe( + __map(_r => _r.body as Reservation) + ); + } + + /** + * Updates partially a 'Reservation' by Id + * @param params The `ReservationService.PatchReservationParams` containing the following parameters: + * + * - `id`: Identifier of the Reservation + * + * - `body`: The Reservation to be updated + * + * - `name`: + * + * @return Updated + */ + patchReservationResponse(params: ReservationService.PatchReservationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/resourcePoolManagement/v1/reservation/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a 'Reservation' by Id + * @param params The `ReservationService.PatchReservationParams` containing the following parameters: + * + * - `id`: Identifier of the Reservation + * + * - `body`: The Reservation to be updated + * + * - `name`: + * + * @return Updated + */ + patchReservation(params: ReservationService.PatchReservationParams): __Observable { + return this.patchReservationResponse(params).pipe( + __map(_r => _r.body as Reservation) + ); + } + + + + /** + * Deletes a 'Reservation' by Id + * @param params The `ReservationService.DeleteReservationParams` containing the following parameters: + * + * - `id`: Identifier of the Resource Pool + * + * - `name`: + * + * @return Deleted + */ + deleteReservationResponse(params: ReservationService.DeleteReservationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourcePoolManagement/v1/reservation/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a 'Reservation' by Id + * @param params The `ReservationService.DeleteReservationParams` containing the following parameters: + * + * - `id`: Identifier of the Resource Pool + * + * - `name`: + * + * @return Deleted + */ + deleteReservation(params: ReservationService.DeleteReservationParams): __Observable { + return this.deleteReservationResponse(params).pipe( + __map(_r => _r.body as Error) + ); + } +} + +module ReservationService { + + /** + * Parameters for listReservation + */ + export interface ListReservationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + name?: string; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma separated properties to display in response + */ + fields?: string; + } + + /** + * Parameters for createReservation + */ + export interface CreateReservationParams { + + /** + * The Reservation to be created + */ + body: ReservationCreate; + name?: string; + } + + /** + * Parameters for retrieveReservation + */ + export interface RetrieveReservationParams { + + /** + * Identifier of the Reservation + */ + id: string; + name?: string; + } + + /** + * Parameters for deleteReservation + */ + export interface DeleteReservationParams { + + /** + * Identifier of the Reservation + */ + id: string; + name?: string; + } + + /** + * Parameters for patchReservation + */ + export interface PatchReservationParams { + + /** + * Identifier of the Reservation + */ + id: string; + + /** + * The Reservation to be updated + */ + body: ReservationUpdate; + name?: string; + } +} + +export { ReservationService } diff --git a/src/app/openApis/resourcePoolManagement/services/resource-pool.service.ts b/src/app/openApis/resourcePoolManagement/services/resource-pool.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..4bb742b5de388a74d5115af7bbf10a06e1f50c40 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/services/resource-pool.service.ts @@ -0,0 +1,388 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ResourcePool } from '../models/resource-pool'; +import { ResourcePoolCreate } from '../models/resource-pool-create'; +import { Error } from '../models/error'; +import { ResourcePoolUpdate } from '../models/resource-pool-update'; +@Injectable({ + providedIn: 'root', +}) +class ResourcePoolService extends __BaseService { + static readonly listResourcePoolPath = '/resourcePoolManagement/v1/resourcePool'; + static readonly createResourcePoolPath = '/resourcePoolManagement/v1/resourcePool'; + static readonly retrieveResourcePoolPath = '/resourcePoolManagement/v1/resourcePool/{id}'; + static readonly deleteResourcePoolPath = '/resourcePoolManagement/v1/resourcePool/{id}'; + static readonly patchResourcePoolPath = '/resourcePoolManagement/v1/resourcePool/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ResourcePool objects + * + * This operation list or find ResourcePool entities + * @param params The `ResourcePoolService.ListResourcePoolParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `name`: + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourcePoolResponse(params: ResourcePoolService.ListResourcePoolParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.name != null) __params = __params.set('name', params.name.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourcePoolManagement/v1/resourcePool`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ResourcePool objects + * + * This operation list or find ResourcePool entities + * @param params The `ResourcePoolService.ListResourcePoolParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `name`: + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listResourcePool(params: ResourcePoolService.ListResourcePoolParams): __Observable> { + return this.listResourcePoolResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a 'ResourcePool' + * @param params The `ResourcePoolService.CreateResourcePoolParams` containing the following parameters: + * + * - `body`: The Resource Pool to be created + * + * - `name`: + * + * @return OK or Created + */ + createResourcePoolResponse(params: ResourcePoolService.CreateResourcePoolParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.body; + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'POST', + this.rootUrl + `/resourcePoolManagement/v1/resourcePool`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a 'ResourcePool' + * @param params The `ResourcePoolService.CreateResourcePoolParams` containing the following parameters: + * + * - `body`: The Resource Pool to be created + * + * - `name`: + * + * @return OK or Created + */ + createResourcePool(params: ResourcePoolService.CreateResourcePoolParams): __Observable { + return this.createResourcePoolResponse(params).pipe( + __map(_r => _r.body as ResourcePool | ResourcePool) + ); + } + + /** + * Retrieves a ResourcePool by ID + * + * This operation retrieves a ResourcePool entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourcePoolService.RetrieveResourcePoolParams` containing the following parameters: + * + * - `id`: Identifier of the ResourcePool + * + * - `name`: + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourcePoolResponse(params: ResourcePoolService.RetrieveResourcePoolParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.name != null) __params = __params.set('name', params.name.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/resourcePoolManagement/v1/resourcePool/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ResourcePool by ID + * + * This operation retrieves a ResourcePool entity. Attribute selection is enabled for all first level attributes. + * @param params The `ResourcePoolService.RetrieveResourcePoolParams` containing the following parameters: + * + * - `id`: Identifier of the ResourcePool + * + * - `name`: + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveResourcePool(params: ResourcePoolService.RetrieveResourcePoolParams): __Observable { + return this.retrieveResourcePoolResponse(params).pipe( + __map(_r => _r.body as ResourcePool) + ); + } + + /** + * Deletes a 'ResourcePool' by Id + * @param params The `ResourcePoolService.DeleteResourcePoolParams` containing the following parameters: + * + * - `id`: Identifier of the Resource Pool + * + * - `name`: + * + * @return Deleted + */ + deleteResourcePoolResponse(params: ResourcePoolService.DeleteResourcePoolParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/resourcePoolManagement/v1/resourcePool/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a 'ResourcePool' by Id + * @param params The `ResourcePoolService.DeleteResourcePoolParams` containing the following parameters: + * + * - `id`: Identifier of the Resource Pool + * + * - `name`: + * + * @return Deleted + */ + deleteResourcePool(params: ResourcePoolService.DeleteResourcePoolParams): __Observable { + return this.deleteResourcePoolResponse(params).pipe( + __map(_r => _r.body as Error) + ); + } + + /** + * Updates partially a 'ResourcePool' by Id + * @param params The `ResourcePoolService.PatchResourcePoolParams` containing the following parameters: + * + * - `id`: Identifier of the Resource Pool + * + * - `body`: The Resource Pool to be updated + * + * - `name`: + * + * @return Updated + */ + patchResourcePoolResponse(params: ResourcePoolService.PatchResourcePoolParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + __body = params.body; + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/resourcePoolManagement/v1/resourcePool/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a 'ResourcePool' by Id + * @param params The `ResourcePoolService.PatchResourcePoolParams` containing the following parameters: + * + * - `id`: Identifier of the Resource Pool + * + * - `body`: The Resource Pool to be updated + * + * - `name`: + * + * @return Updated + */ + patchResourcePool(params: ResourcePoolService.PatchResourcePoolParams): __Observable { + return this.patchResourcePoolResponse(params).pipe( + __map(_r => _r.body as ResourcePool) + ); + } +} + +module ResourcePoolService { + + /** + * Parameters for listResourcePool + */ + export interface ListResourcePoolParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + name?: string; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for createResourcePool + */ + export interface CreateResourcePoolParams { + + /** + * The Resource Pool to be created + */ + body: ResourcePoolCreate; + name?: string; + } + + /** + * Parameters for retrieveResourcePool + */ + export interface RetrieveResourcePoolParams { + + /** + * Identifier of the ResourcePool + */ + id: string; + name?: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for deleteResourcePool + */ + export interface DeleteResourcePoolParams { + + /** + * Identifier of the Resource Pool + */ + id: string; + name?: string; + } + + /** + * Parameters for patchResourcePool + */ + export interface PatchResourcePoolParams { + + /** + * Identifier of the Resource Pool + */ + id: string; + + /** + * The Resource Pool to be updated + */ + body: ResourcePoolUpdate; + name?: string; + } +} + +export { ResourcePoolService } diff --git a/src/app/openApis/resourcePoolManagement/strict-http-response.ts b/src/app/openApis/resourcePoolManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/resourcePoolManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/api-configuration.ts b/src/app/openApis/serviceActivationAndConfiguration/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/api.module.ts b/src/app/openApis/serviceActivationAndConfiguration/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..e33215cf59322dede46baab2962f79eb6a21d241 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/api.module.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ServiceService } from './services/service.service'; +import { MonitorService } from './services/monitor.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + EventsSubscriptionService, + NotificationListenersClientSideService, + ServiceService, + MonitorService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/base-service.ts b/src/app/openApis/serviceActivationAndConfiguration/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models.ts b/src/app/openApis/serviceActivationAndConfiguration/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f4b43df7b3db88d8496d2d997e97f2ab4603252 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models.ts @@ -0,0 +1,37 @@ +export { Any } from './models/any'; +export { Characteristic } from './models/characteristic'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { HeaderItem } from './models/header-item'; +export { Monitor } from './models/monitor'; +export { MonitorAttributeValueChangeEvent } from './models/monitor-attribute-value-change-event'; +export { MonitorAttributeValueChangeNotification } from './models/monitor-attribute-value-change-notification'; +export { MonitorCreateEvent } from './models/monitor-create-event'; +export { MonitorCreateNotification } from './models/monitor-create-notification'; +export { MonitorDeleteEvent } from './models/monitor-delete-event'; +export { MonitorDeleteNotification } from './models/monitor-delete-notification'; +export { MonitorStateChangeEvent } from './models/monitor-state-change-event'; +export { MonitorStateChangeNotification } from './models/monitor-state-change-notification'; +export { Note } from './models/note'; +export { Place } from './models/place'; +export { RelatedParty } from './models/related-party'; +export { Request } from './models/request'; +export { ResourceRef } from './models/resource-ref'; +export { Response } from './models/response'; +export { Service } from './models/service'; +export { ServiceAttributeValueChangeEvent } from './models/service-attribute-value-change-event'; +export { ServiceAttributeValueChangeNotification } from './models/service-attribute-value-change-notification'; +export { ServiceCreate } from './models/service-create'; +export { ServiceCreateEvent } from './models/service-create-event'; +export { ServiceCreateNotification } from './models/service-create-notification'; +export { ServiceDeleteEvent } from './models/service-delete-event'; +export { ServiceDeleteNotification } from './models/service-delete-notification'; +export { ServiceOrderRef } from './models/service-order-ref'; +export { ServiceRef } from './models/service-ref'; +export { ServiceRelationship } from './models/service-relationship'; +export { ServiceSpecificationRef } from './models/service-specification-ref'; +export { ServiceStateChangeEvent } from './models/service-state-change-event'; +export { ServiceStateChangeNotification } from './models/service-state-change-notification'; +export { ServiceUpdate } from './models/service-update'; +export { TargetServiceSchema } from './models/target-service-schema'; diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/any.ts b/src/app/openApis/serviceActivationAndConfiguration/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/characteristic.ts b/src/app/openApis/serviceActivationAndConfiguration/models/characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c66ffdc5e25b6b3ace4d40b1c4b12b966ac75f4 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/characteristic.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface Characteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The value of the characteristic + */ + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/error.ts b/src/app/openApis/serviceActivationAndConfiguration/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..55d5a0a7c1fcac41a6b8bd98a5d0c112367572e7 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/error.ts @@ -0,0 +1,47 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + + /** + * When sub-classing, this defines the super-class. + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + '@type'?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: number; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: number; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/event-subscription-input.ts b/src/app/openApis/serviceActivationAndConfiguration/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/event-subscription.ts b/src/app/openApis/serviceActivationAndConfiguration/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/header-item.ts b/src/app/openApis/serviceActivationAndConfiguration/models/header-item.ts new file mode 100644 index 0000000000000000000000000000000000000000..cf6bff1a4de4006d4ae206e4eecdace1b96bf937 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/header-item.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * An item typically included in a request or response + */ +export interface HeaderItem { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * The name of the header item, e.g. locale + */ + name: string; + + /** + * The value of the header item, e.g. en-us + */ + value: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor-attribute-value-change-event.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..1e6d7686f65c4ba95bfc8c7099e964080e43971d --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-attribute-value-change-event.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Monitor } from './monitor'; + +/** + * The event data structure + */ +export interface MonitorAttributeValueChangeEvent { + monitor?: Monitor; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor-attribute-value-change-notification.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-attribute-value-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..0289c52746cfed1c9d322e3ea0fe78f1a53a7498 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-attribute-value-change-notification.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +import { MonitorAttributeValueChangeEvent } from './monitor-attribute-value-change-event'; + +/** + * The notification data structure + */ +export interface MonitorAttributeValueChangeNotification { + event?: MonitorAttributeValueChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor-create-event.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..bae8b193fdde74fb506dc30ab9a136406071efa9 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-create-event.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Monitor } from './monitor'; + +/** + * The event data structure + */ +export interface MonitorCreateEvent { + monitor?: Monitor; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor-create-notification.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-create-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..25b966e0ca4988db4ce404cdcb5eec36a3da5225 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-create-notification.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +import { MonitorCreateEvent } from './monitor-create-event'; + +/** + * The notification data structure + */ +export interface MonitorCreateNotification { + event?: MonitorCreateEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor-delete-event.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..3280571aebbca5bdb11aee8a026683391df6d250 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-delete-event.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Monitor } from './monitor'; + +/** + * The event data structure + */ +export interface MonitorDeleteEvent { + monitor?: Monitor; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor-delete-notification.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-delete-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..e2a3b7408354f1303c8f026e61de647d244bf21d --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-delete-notification.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +import { MonitorDeleteEvent } from './monitor-delete-event'; + +/** + * The notification data structure + */ +export interface MonitorDeleteNotification { + event?: MonitorDeleteEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor-state-change-event.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..9aa46d3cf5c4a958784080d13d68603cfb0afefb --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-state-change-event.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { Monitor } from './monitor'; + +/** + * The event data structure + */ +export interface MonitorStateChangeEvent { + monitor?: Monitor; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor-state-change-notification.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-state-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..04083a3a59335d2ad0ab2e44ad11c2d64ccd9886 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor-state-change-notification.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +import { MonitorStateChangeEvent } from './monitor-state-change-event'; + +/** + * The notification data structure + */ +export interface MonitorStateChangeNotification { + event?: MonitorStateChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/monitor.ts b/src/app/openApis/serviceActivationAndConfiguration/models/monitor.ts new file mode 100644 index 0000000000000000000000000000000000000000..167c21d42114caa35b3103da1d84d5e36c889acc --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/monitor.ts @@ -0,0 +1,49 @@ +/* tslint:disable */ +import { Request } from './request'; +import { Response } from './response'; + +/** + * Monitoring of resources + */ +export interface Monitor { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * reference to this monitor + */ + href?: string; + + /** + * Identifier of an instance of the monitor. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type + */ + id?: string; + request?: Request; + response?: Response; + + /** + * The monitored resource href + */ + sourceHref?: string; + + /** + * The Monitor state of the resource. InProgress, InError, Completed + */ + state?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/note.ts b/src/app/openApis/serviceActivationAndConfiguration/models/note.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd672c255fa68306e1d8d1783ba63ddfc52b3efe --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/note.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * Extra information about a given entity + */ +export interface Note { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Author of the note + */ + author?: string; + + /** + * Date of the note + */ + date?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Describes the system from which the action related to this note was done + */ + system?: string; + + /** + * Text of the note + */ + text?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/place.ts b/src/app/openApis/serviceActivationAndConfiguration/models/place.ts new file mode 100644 index 0000000000000000000000000000000000000000..6bd3fd73cc4cf173d726374bfb4d3aa92829f59f --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/place.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * Place reference. Place defines the places where the products are sold or delivered. + */ +export interface Place { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the place, such as: [home delivery], [shop retrieval]) + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/related-party.ts b/src/app/openApis/serviceActivationAndConfiguration/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..b80038dfc630f883910eac884192f0eb46d75199 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/request.ts b/src/app/openApis/serviceActivationAndConfiguration/models/request.ts new file mode 100644 index 0000000000000000000000000000000000000000..a1338ba2a6b35bb2f746afcfcb2260946ddf0139 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/request.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { HeaderItem } from './header-item'; + +/** + * A response to a request + */ +export interface Request { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * The body of the request. For example for an HTTP request might contain content of a form . + */ + body: string; + + /** + * Items included in the header of the request. For example for an HTTP request might contain requested locale, basic authentication. + */ + header: Array; + + /** + * The protocol of the request, e.g. http + */ + method?: string; + + /** + * The target of the request, e.g. a URL for an HTTP request + */ + to?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/resource-ref.ts b/src/app/openApis/serviceActivationAndConfiguration/models/resource-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..1baeeebed3b8a14dfd3eddf333213b02a9db8ccc --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/resource-ref.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +export interface ResourceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the supporting resource + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/response.ts b/src/app/openApis/serviceActivationAndConfiguration/models/response.ts new file mode 100644 index 0000000000000000000000000000000000000000..3bfcf5f74234756b7e0864566181c6dc7889820b --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/response.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +import { HeaderItem } from './header-item'; + +/** + * A response to a request + */ +export interface Response { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + atType?: string; + + /** + * The body of the response. For example for an HTTP response might contain HTML for rendering. + */ + body: string; + + /** + * Items included in the header of the response. For example for an HTTP response might contain negotiated locale. + */ + header: Array; + + /** + * The status of the response. For example for an HTTP response would be codes such as 200, 400, etc. + */ + statusCode?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-attribute-value-change-event.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..7229364b4a997723db1a12f8c4a7c33ec4f82ee1 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-attribute-value-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceAttributeValueChangeEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-attribute-value-change-notification.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-attribute-value-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ac5d50fec049bcefa7db724472a524103a7ab41 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-attribute-value-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceAttributeValueChangeEvent } from './service-attribute-value-change-event'; + +/** + * The notification data structure + */ +export interface ServiceAttributeValueChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceAttributeValueChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-create-event.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..dda3c396d46d754abaf648dce7e844953da7bbb7 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-create-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceCreateEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-create-notification.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-create-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..a82972970cae68267b89837ed7d6f62066be95f1 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-create-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCreateEvent } from './service-create-event'; + +/** + * The notification data structure + */ +export interface ServiceCreateNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCreateEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-create.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..b6151313d4c4eb2eee78d69f8fcc7a1bd962a761 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-create.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +import { Note } from './note'; +import { Place } from './place'; +import { RelatedParty } from './related-party'; +import { Characteristic } from './characteristic'; +import { ServiceOrderRef } from './service-order-ref'; +import { ServiceRelationship } from './service-relationship'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ResourceRef } from './resource-ref'; +import { ServiceRef } from './service-ref'; + +/** + * Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. Skipped properties: id,href + */ +export interface ServiceCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Is it a customer facing or resource facing service + */ + category?: string; + + /** + * Free-text description of the service + */ + description?: string; + + /** + * Date when the service ends + */ + endDate?: string; + + /** + * If TRUE, this Service has already been started + */ + hasStarted?: boolean; + + /** + * If FALSE, this particular Service has NOT been enabled for use + */ + isServiceEnabled?: boolean; + + /** + * If TRUE, this Service can be changed without affecting any other services + */ + isStateful?: boolean; + + /** + * Name of the service + */ + name?: string; + + /** + * A list of notes made on this service + */ + note?: Array; + + /** + * A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc. + */ + place?: Array; + + /** + * A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * A list of characteristics that characterize this service (ServiceCharacteristic [*]) + */ + serviceCharacteristic?: Array; + + /** + * Date when the service was created (whatever its status). + */ + serviceDate?: string; + + /** + * A list of service orders related to this service + */ + serviceOrder?: Array; + + /** + * A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example). + */ + serviceRelationship?: Array; + + /** + * The specification from which this service was instantiated + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * Business type of the service + */ + serviceType?: string; + + /** + * Date when the service starts + */ + startDate?: string; + + /** + * This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above + */ + startMode?: string; + + /** + * The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated + */ + state?: 'feasibilityChecked' | 'designed' | 'reserved' | 'inactive' | 'active' | 'terminated'; + + /** + * A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources. + */ + supportingResource?: Array; + + /** + * A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS). + */ + supportingService?: Array; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-delete-event.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa0997c29280ec7ef31967ef6e671271f5bb92d5 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-delete-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceDeleteEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-delete-notification.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-delete-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..7fd1401b5a964dcfec44ed2f129588796f88f701 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-delete-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceDeleteEvent } from './service-delete-event'; + +/** + * The notification data structure + */ +export interface ServiceDeleteNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceDeleteEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-order-ref.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-order-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..a273c440ae59e9acca0e218e9d7cac138cd6e0a2 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-order-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Service Order reference. Useful to understand the which was the Service order through which the service was instantiated in the service inventory + */ +export interface ServiceOrderRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the Service Order + */ + id: string; + + /** + * Unique identifier of the Service Order Item within a service order, not populated if this is a reference to a service order + */ + serviceOrderItemId?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-ref.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..f88370a153974f6d6cef61ad3cf32bab9be6017f --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Service reference, for when Service is used by other entities + */ +export interface ServiceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Id of the service + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-relationship.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..8e2eeae882e065d4a920c244f913413fbfcf19fa --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-relationship.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +import { ServiceRef } from './service-ref'; + +/** + * Describes links with services of the same category (useful for bundled services) + */ +export interface ServiceRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * The type of relationship (e.g. depends on, enables) + */ + relationshipType: string; + + /** + * The service being referred to + */ + service: ServiceRef; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-specification-ref.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e84780cd430d5f1bccdc347f219a4fcee774c18 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-specification-ref.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { TargetServiceSchema } from './target-service-schema'; + +/** + * Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification. + */ +export interface ServiceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + uuid?: string; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-state-change-event.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..612028bca7fa82d10253b354f1ef0110cd7f0b39 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-state-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceStateChangeEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-state-change-notification.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-state-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..ec64d5a64b468bd190f77d479d0a06a8fab1e23c --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-state-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceStateChangeEvent } from './service-state-change-event'; + +/** + * The notification data structure + */ +export interface ServiceStateChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceStateChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service-update.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..1bfbcee66d06427d4d93a78f677988593f568496 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service-update.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +import { Note } from './note'; +import { Place } from './place'; +import { RelatedParty } from './related-party'; +import { Characteristic } from './characteristic'; +import { ServiceOrderRef } from './service-order-ref'; +import { ServiceRelationship } from './service-relationship'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ResourceRef } from './resource-ref'; +import { ServiceRef } from './service-ref'; + +/** + * Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. Skipped properties: id,href,serviceRelationship + */ +export interface ServiceUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Is it a customer facing or resource facing service + */ + category?: string; + + /** + * Free-text description of the service + */ + description?: string; + + /** + * Date when the service ends + */ + endDate?: string; + + /** + * If TRUE, this Service has already been started + */ + hasStarted?: boolean; + + /** + * If FALSE, this particular Service has NOT been enabled for use + */ + isServiceEnabled?: boolean; + + /** + * If TRUE, this Service can be changed without affecting any other services + */ + isStateful?: boolean; + + /** + * Name of the service + */ + name?: string; + + /** + * A list of notes made on this service + */ + note?: Array; + + /** + * A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc. + */ + place?: Array; + + /** + * A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * A list of characteristics that characterize this service (ServiceCharacteristic [*]) + */ + serviceCharacteristic?: Array; + + /** + * Date when the service was created (whatever its status). + */ + serviceDate?: string; + + /** + * A list of service orders related to this service + */ + serviceOrder?: Array; + + /** + * A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example). + */ + serviceRelationship?: Array; + + /** + * The specification from which this service was instantiated + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * Business type of the service + */ + serviceType?: string; + + /** + * Date when the service starts + */ + startDate?: string; + + /** + * This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above + */ + startMode?: string; + + /** + * The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated + */ + state?: 'feasibilityChecked' | 'designed' | 'reserved' | 'inactive' | 'active' | 'terminated'; + + /** + * A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources. + */ + supportingResource?: Array; + + /** + * A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS). + */ + supportingService?: Array; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/service.ts b/src/app/openApis/serviceActivationAndConfiguration/models/service.ts new file mode 100644 index 0000000000000000000000000000000000000000..f4e808fa977781990fcaba79559f8a8725f7805e --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/service.ts @@ -0,0 +1,143 @@ +/* tslint:disable */ +import { Note } from './note'; +import { Place } from './place'; +import { RelatedParty } from './related-party'; +import { Characteristic } from './characteristic'; +import { ServiceOrderRef } from './service-order-ref'; +import { ServiceRelationship } from './service-relationship'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ResourceRef } from './resource-ref'; +import { ServiceRef } from './service-ref'; + +/** + * Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. + */ +export interface Service { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Is it a customer facing or resource facing service + */ + category?: string; + + /** + * Free-text description of the service + */ + description?: string; + + /** + * Date when the service ends + */ + endDate?: string; + + /** + * If TRUE, this Service has already been started + */ + hasStarted?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the service + */ + id?: string; + + /** + * If FALSE, this particular Service has NOT been enabled for use + */ + isServiceEnabled?: boolean; + + /** + * If TRUE, this Service can be changed without affecting any other services + */ + isStateful?: boolean; + + /** + * Name of the entity + */ + name?: string; + + /** + * A list of notes made on this service + */ + note?: Array; + + /** + * A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc. + */ + place?: Array; + + /** + * A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * A list of characteristics that characterize this service (ServiceCharacteristic [*]) + */ + serviceCharacteristic?: Array; + + /** + * Date when the service was created (whatever its status). + */ + serviceDate?: string; + + /** + * A list of service orders related to this service + */ + serviceOrder?: Array; + + /** + * A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example). + */ + serviceRelationship?: Array; + + /** + * The specification from which this service was instantiated + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * Business type of the service + */ + serviceType?: string; + + /** + * Date when the service starts + */ + startDate?: string; + + /** + * This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above + */ + startMode?: string; + + /** + * The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated + */ + state?: 'feasibilityChecked' | 'designed' | 'reserved' | 'inactive' | 'active' | 'terminated'; + + /** + * A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources. + */ + supportingResource?: Array; + + /** + * A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS). + */ + supportingService?: Array; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/models/target-service-schema.ts b/src/app/openApis/serviceActivationAndConfiguration/models/target-service-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4887bf9c9dd0e25c992a00348c805792cf20349 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/models/target-service-schema.ts @@ -0,0 +1,24 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target service which is described by service specification + */ +export interface TargetServiceSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceActivationAndConfiguration/services.ts b/src/app/openApis/serviceActivationAndConfiguration/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..f48346d3badf51a3e980ef459ac5805643d66331 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/services.ts @@ -0,0 +1,4 @@ +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ServiceService } from './services/service.service'; +export { MonitorService } from './services/monitor.service'; diff --git a/src/app/openApis/serviceActivationAndConfiguration/services/events-subscription.service.ts b/src/app/openApis/serviceActivationAndConfiguration/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..132cba416a7a97e34ff6f0a8186b5bffe6860a03 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/services/events-subscription.service.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener6Path = '/ServiceActivationAndConfiguration/v3/hub'; + static readonly unregisterListener6Path = '/ServiceActivationAndConfiguration/v3/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener6Response(body: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener6(body: EventSubscriptionInput): __Observable { + return this.registerListener6Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener6Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener6(id: string): __Observable { + return this.unregisterListener6Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/serviceActivationAndConfiguration/services/monitor.service.ts b/src/app/openApis/serviceActivationAndConfiguration/services/monitor.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..1826c4eaff8cb560b1891a71eaf5bef45b34e268 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/services/monitor.service.ts @@ -0,0 +1,177 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Monitor } from '../models/monitor'; +@Injectable({ + providedIn: 'root', +}) +class MonitorService extends __BaseService { + static readonly listMonitorPath = '/monitor'; + static readonly retrieveMonitorPath = '/monitor/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find Monitor objects + * + * This operation list or find Monitor entities + * @param params The `MonitorService.ListMonitorParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listMonitorResponse(params: MonitorService.ListMonitorParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/monitor`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find Monitor objects + * + * This operation list or find Monitor entities + * @param params The `MonitorService.ListMonitorParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listMonitor(params: MonitorService.ListMonitorParams): __Observable> { + return this.listMonitorResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Retrieves a Monitor by ID + * + * This operation retrieves a Monitor entity. Attribute selection is enabled for all first level attributes. + * @param params The `MonitorService.RetrieveMonitorParams` containing the following parameters: + * + * - `id`: Identifier of the Monitor + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveMonitorResponse(params: MonitorService.RetrieveMonitorParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/monitor/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a Monitor by ID + * + * This operation retrieves a Monitor entity. Attribute selection is enabled for all first level attributes. + * @param params The `MonitorService.RetrieveMonitorParams` containing the following parameters: + * + * - `id`: Identifier of the Monitor + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveMonitor(params: MonitorService.RetrieveMonitorParams): __Observable { + return this.retrieveMonitorResponse(params).pipe( + __map(_r => _r.body as Monitor) + ); + } +} + +module MonitorService { + + /** + * Parameters for listMonitor + */ + export interface ListMonitorParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveMonitor + */ + export interface RetrieveMonitorParams { + + /** + * Identifier of the Monitor + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { MonitorService } diff --git a/src/app/openApis/serviceActivationAndConfiguration/services/notification-listeners-client-side.service.ts b/src/app/openApis/serviceActivationAndConfiguration/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f1af8420c299f1b938c3e762761064cd0b18102 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/services/notification-listeners-client-side.service.ts @@ -0,0 +1,379 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { MonitorAttributeValueChangeNotification } from '../models/monitor-attribute-value-change-notification'; +import { MonitorCreateNotification } from '../models/monitor-create-notification'; +import { MonitorDeleteNotification } from '../models/monitor-delete-notification'; +import { MonitorStateChangeNotification } from '../models/monitor-state-change-notification'; +import { ServiceAttributeValueChangeNotification } from '../models/service-attribute-value-change-notification'; +import { ServiceCreateNotification } from '../models/service-create-notification'; +import { ServiceDeleteNotification } from '../models/service-delete-notification'; +import { ServiceStateChangeNotification } from '../models/service-state-change-notification'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToMonitorAttributeValueChangeNotificationPath = '/ServiceActivationAndConfiguration/v3/listener/monitorAttributeValueChangeNotification'; + static readonly listenToMonitorCreateNotificationPath = '/ServiceActivationAndConfiguration/v3/listener/monitorCreateNotification'; + static readonly listenToMonitorDeleteNotificationPath = '/ServiceActivationAndConfiguration/v3/listener/monitorDeleteNotification'; + static readonly listenToMonitorStateChangeNotificationPath = '/ServiceActivationAndConfiguration/v3/listener/monitorStateChangeNotification'; + static readonly listenToServiceAttributeValueChangeNotification1Path = '/ServiceActivationAndConfiguration/v3/listener/serviceAttributeValueChangeNotification'; + static readonly listenToServiceCreateNotification1Path = '/ServiceActivationAndConfiguration/v3/listener/serviceCreateNotification'; + static readonly listenToServiceDeleteNotification1Path = '/ServiceActivationAndConfiguration/v3/listener/serviceDeleteNotification'; + static readonly listenToServiceStateChangeNotification1Path = '/ServiceActivationAndConfiguration/v3/listener/serviceStateChangeNotification'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity MonitorAttributeValueChangeNotification + * + * Example of a client listener for receiving the notification MonitorAttributeValueChangeNotification + * @param body The event data + * @return OK or Notified + */ + listenToMonitorAttributeValueChangeNotificationResponse(body: MonitorAttributeValueChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/listener/monitorAttributeValueChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity MonitorAttributeValueChangeNotification + * + * Example of a client listener for receiving the notification MonitorAttributeValueChangeNotification + * @param body The event data + * @return OK or Notified + */ + listenToMonitorAttributeValueChangeNotification(body: MonitorAttributeValueChangeNotification): __Observable { + return this.listenToMonitorAttributeValueChangeNotificationResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity MonitorCreateNotification + * + * Example of a client listener for receiving the notification MonitorCreateNotification + * @param body The event data + * @return OK or Notified + */ + listenToMonitorCreateNotificationResponse(body: MonitorCreateNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/listener/monitorCreateNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity MonitorCreateNotification + * + * Example of a client listener for receiving the notification MonitorCreateNotification + * @param body The event data + * @return OK or Notified + */ + listenToMonitorCreateNotification(body: MonitorCreateNotification): __Observable { + return this.listenToMonitorCreateNotificationResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity MonitorDeleteNotification + * + * Example of a client listener for receiving the notification MonitorDeleteNotification + * @param body The event data + * @return OK or Notified + */ + listenToMonitorDeleteNotificationResponse(body: MonitorDeleteNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/listener/monitorDeleteNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity MonitorDeleteNotification + * + * Example of a client listener for receiving the notification MonitorDeleteNotification + * @param body The event data + * @return OK or Notified + */ + listenToMonitorDeleteNotification(body: MonitorDeleteNotification): __Observable { + return this.listenToMonitorDeleteNotificationResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity MonitorStateChangeNotification + * + * Example of a client listener for receiving the notification MonitorStateChangeNotification + * @param body The event data + * @return OK or Notified + */ + listenToMonitorStateChangeNotificationResponse(body: MonitorStateChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/listener/monitorStateChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity MonitorStateChangeNotification + * + * Example of a client listener for receiving the notification MonitorStateChangeNotification + * @param body The event data + * @return OK or Notified + */ + listenToMonitorStateChangeNotification(body: MonitorStateChangeNotification): __Observable { + return this.listenToMonitorStateChangeNotificationResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceAttributeValueChangeNotification + * + * Example of a client listener for receiving the notification ServiceAttributeValueChangeNotification + * @param body The event data + * @return OK or Notified + */ + listenToServiceAttributeValueChangeNotification1Response(body: ServiceAttributeValueChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/listener/serviceAttributeValueChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceAttributeValueChangeNotification + * + * Example of a client listener for receiving the notification ServiceAttributeValueChangeNotification + * @param body The event data + * @return OK or Notified + */ + listenToServiceAttributeValueChangeNotification1(body: ServiceAttributeValueChangeNotification): __Observable { + return this.listenToServiceAttributeValueChangeNotification1Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCreateNotification + * + * Example of a client listener for receiving the notification ServiceCreateNotification + * @param body The event data + * @return OK or Notified + */ + listenToServiceCreateNotification1Response(body: ServiceCreateNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/listener/serviceCreateNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCreateNotification + * + * Example of a client listener for receiving the notification ServiceCreateNotification + * @param body The event data + * @return OK or Notified + */ + listenToServiceCreateNotification1(body: ServiceCreateNotification): __Observable { + return this.listenToServiceCreateNotification1Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceDeleteNotification + * + * Example of a client listener for receiving the notification ServiceDeleteNotification + * @param body The event data + * @return OK or Notified + */ + listenToServiceDeleteNotification1Response(body: ServiceDeleteNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/listener/serviceDeleteNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceDeleteNotification + * + * Example of a client listener for receiving the notification ServiceDeleteNotification + * @param body The event data + * @return OK or Notified + */ + listenToServiceDeleteNotification1(body: ServiceDeleteNotification): __Observable { + return this.listenToServiceDeleteNotification1Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceStateChangeNotification + * + * Example of a client listener for receiving the notification ServiceStateChangeNotification + * @param body The event data + * @return OK or Notified + */ + listenToServiceStateChangeNotification1Response(body: ServiceStateChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/listener/serviceStateChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceStateChangeNotification + * + * Example of a client listener for receiving the notification ServiceStateChangeNotification + * @param body The event data + * @return OK or Notified + */ + listenToServiceStateChangeNotification1(body: ServiceStateChangeNotification): __Observable { + return this.listenToServiceStateChangeNotification1Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/serviceActivationAndConfiguration/services/service.service.ts b/src/app/openApis/serviceActivationAndConfiguration/services/service.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..a265b6ec618a245bc3e3fc01523b412429887de1 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/services/service.service.ts @@ -0,0 +1,374 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Service } from '../models/service'; +import { ServiceCreate } from '../models/service-create'; +import { ServiceUpdate } from '../models/service-update'; +@Injectable({ + providedIn: 'root', +}) +class ServiceService extends __BaseService { + static readonly listService1Path = '/ServiceActivationAndConfiguration/v3/service'; + static readonly createService1Path = '/ServiceActivationAndConfiguration/v3/service'; + static readonly retrieveService1Path = '/ServiceActivationAndConfiguration/v3/service/{id}'; + static readonly deleteService1Path = '/ServiceActivationAndConfiguration/v3/service/{id}'; + static readonly patchService1Path = '/ServiceActivationAndConfiguration/v3/service/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find Service objects + * + * This operation list or find Service entities + * @param params The `ServiceService.ListService1Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `name`: + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listService1Response(params: ServiceService.ListService1Params): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.name != null) __params = __params.set('name', params.name.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/service`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find Service objects + * + * This operation list or find Service entities + * @param params The `ServiceService.ListService1Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `name`: + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listService1(params: ServiceService.ListService1Params): __Observable> { + return this.listService1Response(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a Service + * + * This operation creates a Service entity. + * @param params The `ServiceService.CreateService1Params` containing the following parameters: + * + * - `service`: The Service to be created + * + * - `name`: + * + * @return OK or Created + */ + createService1Response(params: ServiceService.CreateService1Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.service; + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'POST', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/service`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a Service + * + * This operation creates a Service entity. + * @param params The `ServiceService.CreateService1Params` containing the following parameters: + * + * - `service`: The Service to be created + * + * - `name`: + * + * @return OK or Created + */ + createService1(params: ServiceService.CreateService1Params): __Observable { + return this.createService1Response(params).pipe( + __map(_r => _r.body as Service | Service) + ); + } + + /** + * Retrieves a Service by ID + * + * This operation retrieves a Service entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceService.RetrieveService1Params` containing the following parameters: + * + * - `id`: Identifier of the Service + * + * - `name`: + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveService1Response(params: ServiceService.RetrieveService1Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.name != null) __params = __params.set('name', params.name.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/service/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a Service by ID + * + * This operation retrieves a Service entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceService.RetrieveService1Params` containing the following parameters: + * + * - `id`: Identifier of the Service + * + * - `name`: + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveService1(params: ServiceService.RetrieveService1Params): __Observable { + return this.retrieveService1Response(params).pipe( + __map(_r => _r.body as Service) + ); + } + + /** + * Deletes a Service + * + * This operation deletes a Service entity. + * @param id Identifier of the Service + */ + deleteService1Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/service/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a Service + * + * This operation deletes a Service entity. + * @param id Identifier of the Service + */ + deleteService1(id: string): __Observable { + return this.deleteService1Response(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially a Service + * + * This operation updates partially a Service entity. + * @param params The `ServiceService.PatchService1Params` containing the following parameters: + * + * - `service`: The Service to be updated + * + * - `id`: Identifier of the Service + * + * - `name`: + * + * @return Updated + */ + patchService1Response(params: ServiceService.PatchService1Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.service; + + if (params.name != null) __params = __params.set('name', params.name.toString()); + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/ServiceActivationAndConfiguration/v3/service/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a Service + * + * This operation updates partially a Service entity. + * @param params The `ServiceService.PatchService1Params` containing the following parameters: + * + * - `service`: The Service to be updated + * + * - `id`: Identifier of the Service + * + * - `name`: + * + * @return Updated + */ + patchService1(params: ServiceService.PatchService1Params): __Observable { + return this.patchService1Response(params).pipe( + __map(_r => _r.body as Service) + ); + } +} + +module ServiceService { + + /** + * Parameters for listService1 + */ + export interface ListService1Params { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + name?: string; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for createService1 + */ + export interface CreateService1Params { + + /** + * The Service to be created + */ + service: ServiceCreate; + name?: string; + } + + /** + * Parameters for retrieveService1 + */ + export interface RetrieveService1Params { + + /** + * Identifier of the Service + */ + id: string; + name?: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchService1 + */ + export interface PatchService1Params { + + /** + * The Service to be updated + */ + service: ServiceUpdate; + + /** + * Identifier of the Service + */ + id: string; + name?: string; + } +} + +export { ServiceService } diff --git a/src/app/openApis/serviceActivationAndConfiguration/strict-http-response.ts b/src/app/openApis/serviceActivationAndConfiguration/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/serviceActivationAndConfiguration/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/serviceCatalogManagement/api-configuration.ts b/src/app/openApis/serviceCatalogManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/api.module.ts b/src/app/openApis/serviceCatalogManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..cdaa0394c8c12ccf942ea18a0ff948b3c3d444cf --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/api.module.ts @@ -0,0 +1,50 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { ExportJobService } from './services/export-job.service'; +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { ImportJobService } from './services/import-job.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ServiceCandidateService } from './services/service-candidate.service'; +import { ServiceCatalogService } from './services/service-catalog.service'; +import { ServiceCategoryService } from './services/service-category.service'; +import { ServiceSpecificationService } from './services/service-specification.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + ExportJobService, + EventsSubscriptionService, + ImportJobService, + NotificationListenersClientSideService, + ServiceCandidateService, + ServiceCatalogService, + ServiceCategoryService, + ServiceSpecificationService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/serviceCatalogManagement/base-service.ts b/src/app/openApis/serviceCatalogManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/serviceCatalogManagement/models.ts b/src/app/openApis/serviceCatalogManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..6985ce3cb7e9ec443f32d82d35dc27dea4946654 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models.ts @@ -0,0 +1,63 @@ +export { Any } from './models/any'; +export { Attachment } from './models/attachment'; +export { AttachmentRef } from './models/attachment-ref'; +export { ByteArrayResource } from './models/byte-array-resource'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { ExportJob } from './models/export-job'; +export { ExportJobCreate } from './models/export-job-create'; +export { ImportJob } from './models/import-job'; +export { ImportJobCreate } from './models/import-job-create'; +export { InputStream } from './models/input-stream'; +export { Quantity } from './models/quantity'; +export { RelatedParty } from './models/related-party'; +export { ResourceSpecificationRef } from './models/resource-specification-ref'; +export { ServiceCandidate } from './models/service-candidate'; +export { ServiceCandidateChangeEvent } from './models/service-candidate-change-event'; +export { ServiceCandidateChangeNotification } from './models/service-candidate-change-notification'; +export { ServiceCandidateCreate } from './models/service-candidate-create'; +export { ServiceCandidateCreateEvent } from './models/service-candidate-create-event'; +export { ServiceCandidateCreateNotification } from './models/service-candidate-create-notification'; +export { ServiceCandidateDeleteEvent } from './models/service-candidate-delete-event'; +export { ServiceCandidateDeleteNotification } from './models/service-candidate-delete-notification'; +export { ServiceCandidateRef } from './models/service-candidate-ref'; +export { ServiceCandidateUpdate } from './models/service-candidate-update'; +export { ServiceCatalog } from './models/service-catalog'; +export { ServiceCatalogBatchEvent } from './models/service-catalog-batch-event'; +export { ServiceCatalogBatchNotification } from './models/service-catalog-batch-notification'; +export { ServiceCatalogChangeEvent } from './models/service-catalog-change-event'; +export { ServiceCatalogChangeNotification } from './models/service-catalog-change-notification'; +export { ServiceCatalogCreate } from './models/service-catalog-create'; +export { ServiceCatalogCreateEvent } from './models/service-catalog-create-event'; +export { ServiceCatalogCreateNotification } from './models/service-catalog-create-notification'; +export { ServiceCatalogDeleteEvent } from './models/service-catalog-delete-event'; +export { ServiceCatalogDeleteNotification } from './models/service-catalog-delete-notification'; +export { ServiceCatalogUpdate } from './models/service-catalog-update'; +export { ServiceCategory } from './models/service-category'; +export { ServiceCategoryChangeEvent } from './models/service-category-change-event'; +export { ServiceCategoryChangeNotification } from './models/service-category-change-notification'; +export { ServiceCategoryCreate } from './models/service-category-create'; +export { ServiceCategoryCreateEvent } from './models/service-category-create-event'; +export { ServiceCategoryCreateNotification } from './models/service-category-create-notification'; +export { ServiceCategoryDeleteEvent } from './models/service-category-delete-event'; +export { ServiceCategoryDeleteNotification } from './models/service-category-delete-notification'; +export { ServiceCategoryRef } from './models/service-category-ref'; +export { ServiceCategoryUpdate } from './models/service-category-update'; +export { ServiceLevelSpecificationRef } from './models/service-level-specification-ref'; +export { ServiceSpecCharRelationship } from './models/service-spec-char-relationship'; +export { ServiceSpecCharacteristic } from './models/service-spec-characteristic'; +export { ServiceSpecCharacteristicValue } from './models/service-spec-characteristic-value'; +export { ServiceSpecRelationship } from './models/service-spec-relationship'; +export { ServiceSpecification } from './models/service-specification'; +export { ServiceSpecificationChangeEvent } from './models/service-specification-change-event'; +export { ServiceSpecificationChangeNotification } from './models/service-specification-change-notification'; +export { ServiceSpecificationCreate } from './models/service-specification-create'; +export { ServiceSpecificationCreateEvent } from './models/service-specification-create-event'; +export { ServiceSpecificationCreateNotification } from './models/service-specification-create-notification'; +export { ServiceSpecificationDeleteEvent } from './models/service-specification-delete-event'; +export { ServiceSpecificationDeleteNotification } from './models/service-specification-delete-notification'; +export { ServiceSpecificationRef } from './models/service-specification-ref'; +export { ServiceSpecificationUpdate } from './models/service-specification-update'; +export { TargetServiceSchema } from './models/target-service-schema'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/serviceCatalogManagement/models/any.ts b/src/app/openApis/serviceCatalogManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/attachment-ref.ts b/src/app/openApis/serviceCatalogManagement/models/attachment-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..1430b50ab4d413399a6134ee95d0526cbe974dfa --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/attachment-ref.ts @@ -0,0 +1,45 @@ +/* tslint:disable */ + +/** + * Attachment reference. An attachment complements the description of an element (for instance a product) through video, pictures + */ +export interface AttachmentRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Link to the attachment media/content + */ + url?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/attachment.ts b/src/app/openApis/serviceCatalogManagement/models/attachment.ts new file mode 100644 index 0000000000000000000000000000000000000000..be7aafe4e7285f2ae46b20c72170bf3011d3c469 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/attachment.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * Complements the description of an element (for instance a product) through video, pictures... + */ +export interface Attachment { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Attachment type such as video, picture + */ + attachmentType?: string; + + /** + * The actual contents of the attachment object, if embedded, encoded as base64 + */ + content?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier for this particular attachment + */ + id?: string; + + /** + * Attachment mime type such as extension file for video, picture and document + */ + mimeType?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The size of the attachment. + */ + size?: Quantity; + + /** + * Uniform Resource Locator, is a web page address (a subset of URI) + */ + url?: string; + uuid?: string; + + /** + * The period of time for which the attachment is valid + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/byte-array-resource.ts b/src/app/openApis/serviceCatalogManagement/models/byte-array-resource.ts new file mode 100644 index 0000000000000000000000000000000000000000..0e8dbaa9c10f5d3d78fb6aa96909150a5fce94d8 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/byte-array-resource.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { InputStream } from './input-stream'; +export interface ByteArrayResource { + byteArray?: string; + description?: string; + file?: Blob; + filename?: string; + inputStream?: InputStream; + open?: boolean; + readable?: boolean; + uri?: string; + url?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/error.ts b/src/app/openApis/serviceCatalogManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..55d5a0a7c1fcac41a6b8bd98a5d0c112367572e7 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/error.ts @@ -0,0 +1,47 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + + /** + * When sub-classing, this defines the super-class. + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + '@type'?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: number; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: number; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/event-subscription-input.ts b/src/app/openApis/serviceCatalogManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/event-subscription.ts b/src/app/openApis/serviceCatalogManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/export-job-create.ts b/src/app/openApis/serviceCatalogManagement/models/export-job-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..ddf979c7705a0b771a67ff173f0194444a386f11 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/export-job-create.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ + +/** + * Represents a task used to export resources to a file Skipped properties: id,href + */ +export interface ExportJobCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Data at which the job was completed + */ + completionDate?: string; + + /** + * The format of the exported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure + */ + errorLog?: string; + + /** + * URL of the root resource acting as the source for streaming content to the file specified by the export job + */ + path?: string; + + /** + * Used to scope the exported data + */ + query?: string; + + /** + * Status of the export job (not started, running, succeeded, failed) + */ + status?: string; + + /** + * URL of the file containing the data to be exported + */ + url: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/export-job.ts b/src/app/openApis/serviceCatalogManagement/models/export-job.ts new file mode 100644 index 0000000000000000000000000000000000000000..b4c2b7bd11895d868cc592828ca107d5bb092abd --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/export-job.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ + +/** + * Represents a task used to export resources to a file + */ +export interface ExportJob { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Data at which the job was completed + */ + completionDate?: string; + + /** + * The format of the exported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure + */ + errorLog?: string; + + /** + * Reference of the export job + */ + href?: string; + + /** + * Identifier of the export job + */ + id?: string; + + /** + * URL of the root resource acting as the source for streaming content to the file specified by the export job + */ + path?: string; + + /** + * Used to scope the exported data + */ + query?: string; + + /** + * Status of the export job (not started, running, succeeded, failed) + */ + status?: string; + + /** + * URL of the file containing the data to be exported + */ + url?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/file.ts b/src/app/openApis/serviceCatalogManagement/models/file.ts new file mode 100644 index 0000000000000000000000000000000000000000..c2f55a36f17c474d7c09602c2eea8433bfecb305 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/file.ts @@ -0,0 +1,18 @@ +/* tslint:disable */ +export interface File { + absolute?: boolean; + absoluteFile?: File; + absolutePath?: string; + canonicalFile?: File; + canonicalPath?: string; + directory?: boolean; + file?: boolean; + freeSpace?: number; + hidden?: boolean; + name?: string; + parent?: string; + parentFile?: File; + path?: string; + totalSpace?: number; + usableSpace?: number; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/import-job-create.ts b/src/app/openApis/serviceCatalogManagement/models/import-job-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..1cb5eeb143bca5d8957a59f2724b9d3544c30c82 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/import-job-create.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ + +/** + * Represents a task used to import resources from a file Skipped properties: id,href + */ +export interface ImportJobCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Date at which the job was completed + */ + completionDate?: string; + + /** + * Indicates the format of the imported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure if status is failed + */ + errorLog?: string; + + /** + * URL of the root resource where the content of the file specified by the import job must be applied + */ + path?: string; + + /** + * Status of the import job (not started, running, succeeded, failed) + */ + status?: string; + + /** + * URL of the file containing the data to be imported + */ + url: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/import-job.ts b/src/app/openApis/serviceCatalogManagement/models/import-job.ts new file mode 100644 index 0000000000000000000000000000000000000000..50fad3a47d7e0d612d718dc51d08b3840b5e3506 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/import-job.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ + +/** + * Represents a task used to import resources from a file + */ +export interface ImportJob { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Date at which the job was completed + */ + completionDate?: string; + + /** + * Indicates the format of the imported data + */ + contentType?: string; + + /** + * Date at which the job was created + */ + creationDate?: string; + + /** + * Reason for failure if status is failed + */ + errorLog?: string; + + /** + * Reference of the import job + */ + href?: string; + + /** + * Identifier of the import job + */ + id?: string; + + /** + * URL of the root resource where the content of the file specified by the import job must be applied + */ + path?: string; + + /** + * Status of the import job (not started, running, succeeded, failed) + */ + status?: string; + + /** + * URL of the file containing the data to be imported + */ + url?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/input-stream.ts b/src/app/openApis/serviceCatalogManagement/models/input-stream.ts new file mode 100644 index 0000000000000000000000000000000000000000..094fd1ed3199a39fa421105fd60c2c30b0eac5b3 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/input-stream.ts @@ -0,0 +1,3 @@ +/* tslint:disable */ +export interface InputStream { +} diff --git a/src/app/openApis/serviceCatalogManagement/models/quantity.ts b/src/app/openApis/serviceCatalogManagement/models/quantity.ts new file mode 100644 index 0000000000000000000000000000000000000000..d24c6b3f0543bd1702e42db0f4929b813bd165d8 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/quantity.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * An amount in a given unit + */ +export interface Quantity { + + /** + * Numeric value in a given unit + */ + amount?: number; + + /** + * Unit + */ + units?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/related-party.ts b/src/app/openApis/serviceCatalogManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..b80038dfc630f883910eac884192f0eb46d75199 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/resource-specification-ref.ts b/src/app/openApis/serviceCatalogManagement/models/resource-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..18f26056ac3eac7c25d1f1cf3ddc1478126dd940 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/resource-specification-ref.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ + +/** + * Resource Specification reference: The ResourceSpecification is required to realize a ProductSpecification. + */ +export interface ResourceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * Resource specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/resource.ts b/src/app/openApis/serviceCatalogManagement/models/resource.ts new file mode 100644 index 0000000000000000000000000000000000000000..e2ecbf19a2983e01f7ef447840e51b80ee9acf5f --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/resource.ts @@ -0,0 +1,15 @@ +/* tslint:disable */ +import { File } from './file'; +import { InputStream } from './input-stream'; +import { URI } from './uri'; +import { URL } from './url'; +export interface Resource { + description?: string; + file?: File; + filename?: string; + inputStream?: InputStream; + open?: boolean; + readable?: boolean; + uri?: URI; + url?: URL; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-change-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..03163681bd27b74e64bea40d7855d473cb5e1a20 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCandidate } from './service-candidate'; + +/** + * The event data structure + */ +export interface ServiceCandidateChangeEvent { + + /** + * The involved resource data for the event + */ + serviceCandidate?: ServiceCandidate; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-change-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..39e25ec26a551d5f51cfb7a07b682e6efddc7596 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCandidateChangeEvent } from './service-candidate-change-event'; + +/** + * The notification data structure + */ +export interface ServiceCandidateChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCandidateChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-create-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..f8faf6a14bdc98fe365c58e63514b46e4ef44134 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-create-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCandidate } from './service-candidate'; + +/** + * The event data structure + */ +export interface ServiceCandidateCreateEvent { + + /** + * The involved resource data for the event + */ + serviceCandidate?: ServiceCandidate; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-create-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-create-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..5842c0e4ed06d954ff346fa8c67914c34e590046 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-create-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCandidateCreateEvent } from './service-candidate-create-event'; + +/** + * The notification data structure + */ +export interface ServiceCandidateCreateNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCandidateCreateEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-create.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..e80b5d620c302e206c856a6f24714a74fbbf84e0 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-create.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * ServiceCandidate is an entity that makes a service specification available to a catalog. A ServiceCandidate and its associated service specification may be published - made visible - in any number of service catalogs, or in none. One service specification can be composed of other service specifications. Skipped properties: id,href + */ +export interface ServiceCandidateCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * List of categories for this candidate + */ + category?: Array; + + /** + * Description of this REST resource + */ + description?: string; + + /** + * Date and time of the last update of this REST resource + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status of the service candidate. + */ + lifecycleStatus?: string; + + /** + * Name given to this REST resource + */ + name?: string; + + /** + * The service specification implied by this candidate + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * The period for which this REST resource is valid + */ + validFor?: TimePeriod; + + /** + * the version of service candidate + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-delete-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..7d9ee4895f093d4d68c62589423dcfc5d04c5c82 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-delete-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCandidate } from './service-candidate'; + +/** + * The event data structure + */ +export interface ServiceCandidateDeleteEvent { + + /** + * The involved resource data for the event + */ + serviceCandidate?: ServiceCandidate; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-delete-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-delete-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..1df339aeca47ac11433258c8a9778fae623083ac --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-delete-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCandidateDeleteEvent } from './service-candidate-delete-event'; + +/** + * The notification data structure + */ +export interface ServiceCandidateDeleteNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCandidateDeleteEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-ref.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..14ef2692c70af2f5482fae6834493c67a0fb1c97 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-ref.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ + +/** + * ServiceCandidate reference. ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. + */ +export interface ServiceCandidateRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * Version of the service candidate + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate-update.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..9fc5958b8c1225101cffc80340a7e0cb299fa64e --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate-update.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * ServiceCandidate is an entity that makes a service specification available to a catalog. A ServiceCandidate and its associated service specification may be published - made visible - in any number of service catalogs, or in none. One service specification can be composed of other service specifications. Skipped properties: id,href,lastUpdate + */ +export interface ServiceCandidateUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * List of categories for this candidate + */ + category?: Array; + + /** + * Description of this REST resource + */ + description?: string; + + /** + * Used to indicate the current lifecycle status of the service candidate. + */ + lifecycleStatus?: string; + + /** + * Name given to this REST resource + */ + name?: string; + + /** + * The service specification implied by this candidate + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * The period for which this REST resource is valid + */ + validFor?: TimePeriod; + + /** + * the version of service candidate + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-candidate.ts b/src/app/openApis/serviceCatalogManagement/models/service-candidate.ts new file mode 100644 index 0000000000000000000000000000000000000000..bb19c223b0b8b07029107f288e3e4d8479534e01 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-candidate.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * ServiceCandidate is an entity that makes a service specification available to a catalog. A ServiceCandidate and its associated service specification may be published - made visible - in any number of service catalogs, or in none. One service specification can be composed of other service specifications. + */ +export interface ServiceCandidate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The category specification implied by this candidate + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The service specification implied by this candidate + */ + serviceSpecification?: ServiceSpecificationRef; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-batch-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-batch-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..6f898d59ae24b617b482e8919f7dc23a5d5f9100 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-batch-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCatalog } from './service-catalog'; + +/** + * The event data structure + */ +export interface ServiceCatalogBatchEvent { + + /** + * The involved resource data for the event + */ + serviceCatalog?: ServiceCatalog; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-batch-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-batch-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..f87d26ae94953e3e64c3088510ede73738cf5f5c --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-batch-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCatalogBatchEvent } from './service-catalog-batch-event'; + +/** + * The notification data structure + */ +export interface ServiceCatalogBatchNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCatalogBatchEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-change-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..c3461fe8b4a21da8ba09d911a57308b74ebc96fd --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCatalog } from './service-catalog'; + +/** + * The event data structure + */ +export interface ServiceCatalogChangeEvent { + + /** + * The involved resource data for the event + */ + serviceCatalog?: ServiceCatalog; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-change-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..7cfb784e796ca632301d645cf0a2b2ad62aab739 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCatalogChangeEvent } from './service-catalog-change-event'; + +/** + * The notification data structure + */ +export interface ServiceCatalogChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCatalogChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-create-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..070901391c11b0a1859d6a3048f6503fef85e9c5 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-create-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCatalog } from './service-catalog'; + +/** + * The event data structure + */ +export interface ServiceCatalogCreateEvent { + + /** + * The involved resource data for the event + */ + serviceCatalog?: ServiceCatalog; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-create-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-create-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..2d62b5e15134929e62c0bb0fd97d4d8adc1f19ef --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-create-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCatalogCreateEvent } from './service-catalog-create-event'; + +/** + * The notification data structure + */ +export interface ServiceCatalogCreateNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCatalogCreateEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-create.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..5625d10902b49fc1e8f8d72eaea4feb647b72065 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-create.ts @@ -0,0 +1,65 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * The root entity for service catalog management. A service catalog is a group of service specifications made available through service candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). A service catalog typically includes name, description and time period that is valid for. It will have a list of ServiceCandidate catalog items. A ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. A ServiceCandidate and its associated ServiceSpecification may be "published" - made visible -in any number of ServiceCatalogs, or in none. Skipped properties: id,href + */ +export interface ServiceCatalogCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * List of service categories associated with this catalog + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the service catalog + */ + name?: string; + + /** + * List of parties or party roles related to this category + */ + relatedParty?: Array; + + /** + * The period for which the service catalog is valid + */ + validFor?: TimePeriod; + + /** + * ServiceCatalog version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-delete-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..a4bb69cf9b48a5a1e260ac07138df6c5c4e5e5e6 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-delete-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCatalog } from './service-catalog'; + +/** + * The event data structure + */ +export interface ServiceCatalogDeleteEvent { + + /** + * The involved resource data for the event + */ + serviceCatalog?: ServiceCatalog; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-delete-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-delete-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..8dfbf1bd3dce76411d4cc5cfdeec4114157a0872 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-delete-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCatalogDeleteEvent } from './service-catalog-delete-event'; + +/** + * The notification data structure + */ +export interface ServiceCatalogDeleteNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCatalogDeleteEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog-update.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..bd7962b7313b47192cce907b31aeefd73bc05924 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog-update.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * The root entity for service catalog management. A service catalog is a group of service specifications made available through service candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). A service catalog typically includes name, description and time period that is valid for. It will have a list of ServiceCandidate catalog items. A ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. A ServiceCandidate and its associated ServiceSpecification may be "published" - made visible -in any number of ServiceCatalogs, or in none. Skipped properties: id,href,lastUpdate + */ +export interface ServiceCatalogUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * List of service categories associated with this catalog + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the service catalog + */ + name?: string; + + /** + * List of parties or party roles related to this category + */ + relatedParty?: Array; + + /** + * The period for which the service catalog is valid + */ + validFor?: TimePeriod; + + /** + * ServiceCatalog version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-catalog.ts b/src/app/openApis/serviceCatalogManagement/models/service-catalog.ts new file mode 100644 index 0000000000000000000000000000000000000000..2ff0e0dd4ba974f32a0daf5e7ba305334795e73b --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-catalog.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { RelatedParty } from './related-party'; +import { TimePeriod } from './time-period'; + +/** + * The root entity for service catalog management. A service catalog is a group of service specifications made available through service candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). A service catalog typically includes name, description and time period that is valid for. It will have a list of ServiceCandidate catalog items. A ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. A ServiceCandidate and its associated ServiceSpecification may be "published" - made visible -in any number of ServiceCatalogs, or in none. + */ +export interface ServiceCatalog { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * List of service categories associated with this catalog + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * List of parties or party roles related to this category + */ + relatedParty?: Array; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-change-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..bd35d36e7de49e49234dc4ca4f5d922e7dfea17f --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCategory } from './service-category'; + +/** + * The event data structure + */ +export interface ServiceCategoryChangeEvent { + + /** + * The involved resource data for the event + */ + serviceCategory?: ServiceCategory; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-change-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..af7266f17303a57c7f6fac62aac20c9b49b37313 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCategoryChangeEvent } from './service-category-change-event'; + +/** + * The notification data structure + */ +export interface ServiceCategoryChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCategoryChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-create-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..25ecee4c52dbe23d9186894408a3ad0004aaba9b --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-create-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCategory } from './service-category'; + +/** + * The event data structure + */ +export interface ServiceCategoryCreateEvent { + + /** + * The involved resource data for the event + */ + serviceCategory?: ServiceCategory; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-create-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-create-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..e8d47d5b79c838f2f659afc408ce88cd4de4b42e --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-create-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCategoryCreateEvent } from './service-category-create-event'; + +/** + * The notification data structure + */ +export interface ServiceCategoryCreateNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCategoryCreateEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-create.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..f03b5483ad685d0ceee68add148c2821ef69098c --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-create.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { ServiceCandidateRef } from './service-candidate-ref'; +import { TimePeriod } from './time-period'; + +/** + * The (service) category resource is used to group service candidates in logical containers. Categories can contain other categories. Skipped properties: id,href + */ +export interface ServiceCategoryCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * List of child categories in the tree for in this category + */ + category?: Array; + + /** + * Description of the category + */ + description?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the category + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + + /** + * List of service candidates associated with this category + */ + serviceCandidate?: Array; + + /** + * The period for which the category is valid + */ + validFor?: TimePeriod; + + /** + * ServiceCategory version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-delete-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..5dedd15d9bdf5affa04b4730d66a349c5dbf1e81 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-delete-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceCategory } from './service-category'; + +/** + * The event data structure + */ +export interface ServiceCategoryDeleteEvent { + + /** + * The involved resource data for the event + */ + serviceCategory?: ServiceCategory; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-delete-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-delete-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..53a96cebd8628cbb0a4097ef886f7546d5b90cbb --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-delete-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCategoryDeleteEvent } from './service-category-delete-event'; + +/** + * The notification data structure + */ +export interface ServiceCategoryDeleteNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCategoryDeleteEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-ref.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa1f222f14b7e6269d347f693538ebd579cd29c5 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-ref.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * The (service) category resource is used to group service candidates in logical containers. Categories can contain other categories. + */ +export interface ServiceCategoryRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category-update.ts b/src/app/openApis/serviceCatalogManagement/models/service-category-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..384e97971cb83f91aec393f40bbf5b9cd40ec89d --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category-update.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { ServiceCandidateRef } from './service-candidate-ref'; +import { TimePeriod } from './time-period'; + +/** + * The (service) category resource is used to group service candidates in logical containers. Categories can contain other categories. Skipped properties: id,href,lastUpdate + */ +export interface ServiceCategoryUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * List of child categories in the tree for in this category + */ + category?: Array; + + /** + * Description of the category + */ + description?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the category + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + + /** + * List of service candidates associated with this category + */ + serviceCandidate?: Array; + + /** + * The period for which the category is valid + */ + validFor?: TimePeriod; + + /** + * ServiceCategory version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-category.ts b/src/app/openApis/serviceCatalogManagement/models/service-category.ts new file mode 100644 index 0000000000000000000000000000000000000000..3538577e45b80c70ed03009ed102dc854cbea97a --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-category.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +import { ServiceCategoryRef } from './service-category-ref'; +import { ServiceCandidateRef } from './service-candidate-ref'; +import { TimePeriod } from './time-period'; + +/** + * The (service) category resource is used to group service candidates in logical containers. Categories can contain other categories. + */ +export interface ServiceCategory { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * List of child categories in the tree for in this category + */ + category?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * If true, this Boolean indicates that the category is a root of categories + */ + isRoot?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Unique identifier of the parent category + */ + parentId?: string; + + /** + * List of service candidates associated with this category + */ + serviceCandidate?: Array; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-level-specification-ref.ts b/src/app/openApis/serviceCatalogManagement/models/service-level-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..35223c35c2623da3f6b521c7715536325637c7a4 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-level-specification-ref.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * A Service Level Specification represents a pre-defined or negotiated set of Service Level Objectives. In addition, certain consequences are associated with not meeting the Service Level Objectives. Service Level Agreements are expressed in terms of Service Level Specifications. + */ +export interface ServiceLevelSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-spec-char-relationship.ts b/src/app/openApis/serviceCatalogManagement/models/service-spec-char-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..4dbb85847e7a81dee7f7092cfe13a0ea4469a166 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-spec-char-relationship.ts @@ -0,0 +1,29 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among serviceSpecCharacteristics. + */ +export interface ServiceSpecCharRelationship { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + id?: string; + name?: string; + + /** + * Type of relationship such as aggregation, migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + + /** + * The association role for this service specification + */ + role?: string; + uuid?: string; + + /** + * The period for which the serviceSpecCharRelationship is valid + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-spec-characteristic-value.ts b/src/app/openApis/serviceCatalogManagement/models/service-spec-characteristic-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..6c20b5bf2f22aa441965088f1e64812cde78dbf7 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-spec-characteristic-value.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; +import { Any } from './any'; + +/** + * A ServiceSpecCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ServiceSpecCharacteristic object. The values of the attributes in the ServiceSpecCharacteristicValue object describe the values of the attributes that a corresponding ServiceSpecCharacteristic object can take on. + */ +export interface ServiceSpecCharacteristicValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Indicates if the value is the default value for a characteristic + */ + isDefault?: boolean; + + /** + * An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are "open", "closed", "closedBottom" and "closedTop". + */ + rangeInterval?: string; + + /** + * A regular expression constraint for given value + */ + regex?: string; + + /** + * A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot. + */ + unitOfMeasure?: string; + uuid?: string; + + /** + * The period of time for which a value is applicable + */ + validFor?: TimePeriod; + + /** + * A discrete value that the characteristic can take on, or the actual value of the characteristic + */ + value?: Any; + + /** + * The low range value that a characteristic can take on + */ + valueFrom?: number; + + /** + * The upper range value that a characteristic can take on + */ + valueTo?: number; + + /** + * A kind of value that the characteristic can take on, such as numeric, text, and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-spec-characteristic.ts b/src/app/openApis/serviceCatalogManagement/models/service-spec-characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..606c900228a49a9f610580ee6cf9f58b0afe4fb0 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-spec-characteristic.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +import { ServiceSpecCharRelationship } from './service-spec-char-relationship'; +import { ServiceSpecCharacteristicValue } from './service-spec-characteristic-value'; +import { TimePeriod } from './time-period'; + +/** + * This class represents the key features of this service specification. For example, bandwidth is a characteristic of many different types of services; if bandwidth is a relevant characteristic (e.g., from the point-of-view of a Customer obtaining this Service via a Product) then bandwidth would be a ServiceSpecCharacteristic for that particular Service. + */ +export interface ServiceSpecCharacteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * This (optional) field provides a link to the schema describing the value type. + */ + '@valueSchemaLocation'?: string; + + /** + * If true, the Boolean indicates that the serviceSpecCharacteristic is configurable + */ + configurable?: boolean; + + /** + * A narrative that explains in detail what the serviceSpecCharacteristic is + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for an Entity. + */ + extensible?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * An indicator that specifies if a value is unique for the specification. Possible values are; "unique while value is in effect" and "unique whether value is in effect or not" + */ + isUnique?: boolean; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality. + */ + minCardinality?: number; + + /** + * Name of the entity + */ + name?: string; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value. + */ + regex?: string; + + /** + * A list of service spec char relationships (ServiceSpecCharRelationship [*]). An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics. + */ + serviceSpecCharRelationship?: Array; + + /** + * A list of service spec characteristic values (ServiceSpecCharacteristicValue [*]). A ServiceSpecCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ServiceSpecCharacteristic object. The values of the attributes in the ServiceSpecCharacteristicValue object describe the values of the attributes that a corresponding ServiceSpecCharacteristic object can take on. + */ + serviceSpecCharacteristicValue?: Array; + uuid?: string; + + /** + * The period for which the serviceSpecCharacteristic is valid + */ + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-spec-relationship.ts b/src/app/openApis/serviceCatalogManagement/models/service-spec-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..5406ef88b42eafdb0dc91409e5e4e0b0c387dc96 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-spec-relationship.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * A migration, substitution, dependency or exclusivity relationship between/among service specifications. + */ +export interface ServiceSpecRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Type of relationship such as migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + + /** + * The association role for this service specification + */ + role?: string; + uuid?: string; + + /** + * The period for which the serviceSpecRelationship is valid + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-change-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..268b7e84c1d6785e7440ad5b38c8303c5212eff0 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceSpecification } from './service-specification'; + +/** + * The event data structure + */ +export interface ServiceSpecificationChangeEvent { + + /** + * The involved resource data for the event + */ + serviceSpecification?: ServiceSpecification; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-change-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..a0c9f9e2b65034b8c4abf423d5673ac93eb49b04 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceSpecificationChangeEvent } from './service-specification-change-event'; + +/** + * The notification data structure + */ +export interface ServiceSpecificationChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceSpecificationChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-create-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..5ea02e7244d77fb75fb53269f8f0f30575fcf76c --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-create-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceSpecification } from './service-specification'; + +/** + * The event data structure + */ +export interface ServiceSpecificationCreateEvent { + + /** + * The involved resource data for the event + */ + serviceSpecification?: ServiceSpecification; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-create-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-create-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..baccf0eee25c2732c1f654b56df895249b16a0d7 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-create-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceSpecificationCreateEvent } from './service-specification-create-event'; + +/** + * The notification data structure + */ +export interface ServiceSpecificationCreateNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceSpecificationCreateEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-create.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e2b76391df0fcbd2ee236ef8bfe3d23ac79ddaf --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-create.ts @@ -0,0 +1,100 @@ +/* tslint:disable */ +import { AttachmentRef } from './attachment-ref'; +import { RelatedParty } from './related-party'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { ServiceLevelSpecificationRef } from './service-level-specification-ref'; +import { ServiceSpecCharacteristic } from './service-spec-characteristic'; +import { ServiceSpecRelationship } from './service-spec-relationship'; +import { TargetServiceSchema } from './target-service-schema'; +import { TimePeriod } from './time-period'; + +/** + * ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics. Skipped properties: id,href + */ +export interface ServiceSpecificationCreate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * A list of attachments (Attachment [*]). Complements the description of the specification through video, pictures... + */ + attachment?: Array; + + /** + * A narrative that explains in detail what the service specification is + */ + description?: string; + + /** + * isBundle determines whether a ServiceSpecification represents a single ServiceSpecification (false), or a bundle of ServiceSpecification (true). + */ + isBundle?: boolean; + + /** + * Date and time of the last update of the service specification + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status of the service specification + */ + lifecycleStatus?: string; + + /** + * Name of the service specification + */ + name?: string; + + /** + * A list of related party references (RelatedParty [*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * A list of resource specification references (ResourceSpecificationRef [*]). The ResourceSpecification is required for a service specification with type ResourceFacingServiceSpecification (RFSS). + */ + resourceSpecification?: Array; + + /** + * A list of service level specifications related to this service specification, and which will need to be satisifiable for corresponding service instances; e.g. Gold, Platinum + */ + serviceLevelSpecification?: Array; + + /** + * A list of service spec characteristics (ServiceSpecCharacteristic [*]). This class represents the key features of this service specification. + */ + serviceSpecCharacteristic?: Array; + + /** + * A list of service specifications related to this specification, e.g. migration, substitution, dependency or exclusivity relationship + */ + serviceSpecRelationship?: Array; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + + /** + * The period for which the service specification is valid + */ + validFor?: TimePeriod; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-delete-event.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..6161929566bf973dd76f4c4068320650a04eb242 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-delete-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceSpecification } from './service-specification'; + +/** + * The event data structure + */ +export interface ServiceSpecificationDeleteEvent { + + /** + * The involved resource data for the event + */ + serviceSpecification?: ServiceSpecification; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-delete-notification.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-delete-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..4be906735764e39431569bed15745dabedc149f2 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-delete-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceSpecificationDeleteEvent } from './service-specification-delete-event'; + +/** + * The notification data structure + */ +export interface ServiceSpecificationDeleteNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceSpecificationDeleteEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-ref.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e84780cd430d5f1bccdc347f219a4fcee774c18 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-ref.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { TargetServiceSchema } from './target-service-schema'; + +/** + * Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification. + */ +export interface ServiceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + uuid?: string; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification-update.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..b7f0d91b141c3fdce998f83ff1b8141b62c0fded --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification-update.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +import { AttachmentRef } from './attachment-ref'; +import { RelatedParty } from './related-party'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { ServiceLevelSpecificationRef } from './service-level-specification-ref'; +import { ServiceSpecCharacteristic } from './service-spec-characteristic'; +import { ServiceSpecRelationship } from './service-spec-relationship'; +import { TargetServiceSchema } from './target-service-schema'; +import { TimePeriod } from './time-period'; + +/** + * ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics. Skipped properties: id,href,lastUpdate + */ +export interface ServiceSpecificationUpdate { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * A list of attachments (Attachment [*]). Complements the description of the specification through video, pictures... + */ + attachment?: Array; + + /** + * A narrative that explains in detail what the service specification is + */ + description?: string; + + /** + * isBundle determines whether a ServiceSpecification represents a single ServiceSpecification (false), or a bundle of ServiceSpecification (true). + */ + isBundle?: boolean; + + /** + * Used to indicate the current lifecycle status of the service specification + */ + lifecycleStatus?: string; + + /** + * Name of the service specification + */ + name?: string; + + /** + * A list of related party references (RelatedParty [*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * A list of resource specification references (ResourceSpecificationRef [*]). The ResourceSpecification is required for a service specification with type ResourceFacingServiceSpecification (RFSS). + */ + resourceSpecification?: Array; + + /** + * A list of service level specifications related to this service specification, and which will need to be satisifiable for corresponding service instances; e.g. Gold, Platinum + */ + serviceLevelSpecification?: Array; + + /** + * A list of service spec characteristics (ServiceSpecCharacteristic [*]). This class represents the key features of this service specification. + */ + serviceSpecCharacteristic?: Array; + + /** + * A list of service specifications related to this specification, e.g. migration, substitution, dependency or exclusivity relationship + */ + serviceSpecRelationship?: Array; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + + /** + * The period for which the service specification is valid + */ + validFor?: TimePeriod; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/service-specification.ts b/src/app/openApis/serviceCatalogManagement/models/service-specification.ts new file mode 100644 index 0000000000000000000000000000000000000000..8192b7b4a98b28794a11d1f75db769921a13d824 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/service-specification.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +import { AttachmentRef } from './attachment-ref'; +import { RelatedParty } from './related-party'; +import { ResourceSpecificationRef } from './resource-specification-ref'; +import { ServiceLevelSpecificationRef } from './service-level-specification-ref'; +import { ServiceSpecCharacteristic } from './service-spec-characteristic'; +import { ServiceSpecRelationship } from './service-spec-relationship'; +import { TargetServiceSchema } from './target-service-schema'; +import { TimePeriod } from './time-period'; + +/** + * ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics. + */ +export interface ServiceSpecification { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * A list of attachments (Attachment [*]). Complements the description of the specification through video, pictures... + */ + attachment?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * isBundle determines whether a ServiceSpecification represents a single ServiceSpecification (false), or a bundle of ServiceSpecification (true). + */ + isBundle?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A list of related party references (RelatedParty [*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * A list of resource specification references (ResourceSpecificationRef [*]). The ResourceSpecification is required for a service specification with type ResourceFacingServiceSpecification (RFSS). + */ + resourceSpecification?: Array; + + /** + * A list of service level specifications related to this service specification, and which will need to be satisifiable for corresponding service instances; e.g. Gold, Platinum + */ + serviceLevelSpecification?: Array; + + /** + * A list of service spec characteristics (ServiceSpecCharacteristic [*]). This class represents the key features of this service specification. + */ + serviceSpecCharacteristic?: Array; + + /** + * A list of service specifications related to this specification, e.g. migration, substitution, dependency or exclusivity relationship + */ + serviceSpecRelationship?: Array; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/target-service-schema.ts b/src/app/openApis/serviceCatalogManagement/models/target-service-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4887bf9c9dd0e25c992a00348c805792cf20349 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/target-service-schema.ts @@ -0,0 +1,24 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target service which is described by service specification + */ +export interface TargetServiceSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/time-period.ts b/src/app/openApis/serviceCatalogManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/uri.ts b/src/app/openApis/serviceCatalogManagement/models/uri.ts new file mode 100644 index 0000000000000000000000000000000000000000..810ab8b0d45b3804cd006a419da711854b0cf179 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/uri.ts @@ -0,0 +1,20 @@ +/* tslint:disable */ +export interface URI { + absolute?: boolean; + authority?: string; + fragment?: string; + host?: string; + opaque?: boolean; + path?: string; + port?: number; + query?: string; + rawAuthority?: string; + rawFragment?: string; + rawPath?: string; + rawQuery?: string; + rawSchemeSpecificPart?: string; + rawUserInfo?: string; + scheme?: string; + schemeSpecificPart?: string; + userInfo?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/models/url.ts b/src/app/openApis/serviceCatalogManagement/models/url.ts new file mode 100644 index 0000000000000000000000000000000000000000..86623a7bd957253869b487ceb28739b5b04120b5 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/models/url.ts @@ -0,0 +1,14 @@ +/* tslint:disable */ +export interface URL { + authority?: string; + content?: {}; + defaultPort?: number; + file?: string; + host?: string; + path?: string; + port?: number; + protocol?: string; + query?: string; + ref?: string; + userInfo?: string; +} diff --git a/src/app/openApis/serviceCatalogManagement/services.ts b/src/app/openApis/serviceCatalogManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..5fb36982be10a677c83a79e41e8a329c5c0f4c39 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services.ts @@ -0,0 +1,8 @@ +export { ExportJobService } from './services/export-job.service'; +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { ImportJobService } from './services/import-job.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ServiceCandidateService } from './services/service-candidate.service'; +export { ServiceCatalogService } from './services/service-catalog.service'; +export { ServiceCategoryService } from './services/service-category.service'; +export { ServiceSpecificationService } from './services/service-specification.service'; diff --git a/src/app/openApis/serviceCatalogManagement/services/events-subscription.service.ts b/src/app/openApis/serviceCatalogManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3eb199f0464effe447d13da8ef8d32160b26350 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services/events-subscription.service.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener3Path = '/serviceCatalogManagement/v4/hub'; + static readonly unregisterListener3Path = '/serviceCatalogManagement/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener3Response(data: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener3(data: EventSubscriptionInput): __Observable { + return this.registerListener3Response(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener3Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceCatalogManagement/v4/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener3(id: string): __Observable { + return this.unregisterListener3Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/serviceCatalogManagement/services/export-job.service.ts b/src/app/openApis/serviceCatalogManagement/services/export-job.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..854cb60a2b24c7acc79a8a5a381d6fa86f8380e9 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services/export-job.service.ts @@ -0,0 +1,262 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ExportJob } from '../models/export-job'; +import { ExportJobCreate } from '../models/export-job-create'; +@Injectable({ + providedIn: 'root', +}) +class ExportJobService extends __BaseService { + static readonly listExportJob1Path = '/serviceCatalogManagement/v4/exportJob'; + static readonly createExportJob1Path = '/serviceCatalogManagement/v4/exportJob'; + static readonly retrieveExportJob1Path = '/serviceCatalogManagement/v4/exportJob/{id}'; + static readonly deleteExportJob1Path = '/serviceCatalogManagement/v4/exportJob/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ExportJob objects + * + * This operation list or find ExportJob entities + * @param params The `ExportJobService.ListExportJob1Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listExportJob1Response(params: ExportJobService.ListExportJob1Params): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/exportJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ExportJob objects + * + * This operation list or find ExportJob entities + * @param params The `ExportJobService.ListExportJob1Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listExportJob1(params: ExportJobService.ListExportJob1Params): __Observable> { + return this.listExportJob1Response(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ExportJob + * + * This operation creates a ExportJob entity. + * @param exportJob The ExportJob to be created + * @return OK or Created + */ + createExportJob1Response(exportJob: ExportJobCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = exportJob; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/exportJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ExportJob + * + * This operation creates a ExportJob entity. + * @param exportJob The ExportJob to be created + * @return OK or Created + */ + createExportJob1(exportJob: ExportJobCreate): __Observable { + return this.createExportJob1Response(exportJob).pipe( + __map(_r => _r.body as ExportJob | ExportJob) + ); + } + + /** + * Retrieves a ExportJob by ID + * + * This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ExportJobService.RetrieveExportJob1Params` containing the following parameters: + * + * - `id`: Identifier of the ExportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveExportJob1Response(params: ExportJobService.RetrieveExportJob1Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/exportJob/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ExportJob by ID + * + * This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ExportJobService.RetrieveExportJob1Params` containing the following parameters: + * + * - `id`: Identifier of the ExportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveExportJob1(params: ExportJobService.RetrieveExportJob1Params): __Observable { + return this.retrieveExportJob1Response(params).pipe( + __map(_r => _r.body as ExportJob) + ); + } + + /** + * Deletes a ExportJob + * + * This operation deletes a ExportJob entity. + * @param id Identifier of the ExportJob + */ + deleteExportJob1Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceCatalogManagement/v4/exportJob/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ExportJob + * + * This operation deletes a ExportJob entity. + * @param id Identifier of the ExportJob + */ + deleteExportJob1(id: string): __Observable { + return this.deleteExportJob1Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module ExportJobService { + + /** + * Parameters for listExportJob1 + */ + export interface ListExportJob1Params { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveExportJob1 + */ + export interface RetrieveExportJob1Params { + + /** + * Identifier of the ExportJob + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { ExportJobService } diff --git a/src/app/openApis/serviceCatalogManagement/services/import-job.service.ts b/src/app/openApis/serviceCatalogManagement/services/import-job.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..07c3aadddfe4ccb36b22ecc51464bd9aa924b33c --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services/import-job.service.ts @@ -0,0 +1,262 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ImportJob } from '../models/import-job'; +import { ImportJobCreate } from '../models/import-job-create'; +@Injectable({ + providedIn: 'root', +}) +class ImportJobService extends __BaseService { + static readonly listImportJob1Path = '/serviceCatalogManagement/v4/importJob'; + static readonly createImportJob1Path = '/serviceCatalogManagement/v4/importJob'; + static readonly retrieveImportJob1Path = '/serviceCatalogManagement/v4/importJob/{id}'; + static readonly deleteImportJob1Path = '/serviceCatalogManagement/v4/importJob/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ImportJob objects + * + * This operation list or find ImportJob entities + * @param params The `ImportJobService.ListImportJob1Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listImportJob1Response(params: ImportJobService.ListImportJob1Params): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/importJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ImportJob objects + * + * This operation list or find ImportJob entities + * @param params The `ImportJobService.ListImportJob1Params` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listImportJob1(params: ImportJobService.ListImportJob1Params): __Observable> { + return this.listImportJob1Response(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ImportJob + * + * This operation creates a ImportJob entity. + * @param importJob The ImportJob to be created + * @return OK or Created + */ + createImportJob1Response(importJob: ImportJobCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = importJob; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/importJob`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ImportJob + * + * This operation creates a ImportJob entity. + * @param importJob The ImportJob to be created + * @return OK or Created + */ + createImportJob1(importJob: ImportJobCreate): __Observable { + return this.createImportJob1Response(importJob).pipe( + __map(_r => _r.body as ImportJob | ImportJob) + ); + } + + /** + * Retrieves a ImportJob by ID + * + * This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ImportJobService.RetrieveImportJob1Params` containing the following parameters: + * + * - `id`: Identifier of the ImportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveImportJob1Response(params: ImportJobService.RetrieveImportJob1Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/importJob/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ImportJob by ID + * + * This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes. + * @param params The `ImportJobService.RetrieveImportJob1Params` containing the following parameters: + * + * - `id`: Identifier of the ImportJob + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveImportJob1(params: ImportJobService.RetrieveImportJob1Params): __Observable { + return this.retrieveImportJob1Response(params).pipe( + __map(_r => _r.body as ImportJob) + ); + } + + /** + * Deletes a ImportJob + * + * This operation deletes a ImportJob entity. + * @param id Identifier of the ImportJob + */ + deleteImportJob1Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceCatalogManagement/v4/importJob/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ImportJob + * + * This operation deletes a ImportJob entity. + * @param id Identifier of the ImportJob + */ + deleteImportJob1(id: string): __Observable { + return this.deleteImportJob1Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module ImportJobService { + + /** + * Parameters for listImportJob1 + */ + export interface ListImportJob1Params { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveImportJob1 + */ + export interface RetrieveImportJob1Params { + + /** + * Identifier of the ImportJob + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } +} + +export { ImportJobService } diff --git a/src/app/openApis/serviceCatalogManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/serviceCatalogManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..acaf7c315d75aff1c2131925cd7be6d2e92d150b --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,599 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { ServiceCandidateChangeNotification } from '../models/service-candidate-change-notification'; +import { ServiceCandidateCreateNotification } from '../models/service-candidate-create-notification'; +import { ServiceCandidateDeleteNotification } from '../models/service-candidate-delete-notification'; +import { ServiceCatalogBatchNotification } from '../models/service-catalog-batch-notification'; +import { ServiceCatalogChangeNotification } from '../models/service-catalog-change-notification'; +import { ServiceCatalogCreateNotification } from '../models/service-catalog-create-notification'; +import { ServiceCatalogDeleteNotification } from '../models/service-catalog-delete-notification'; +import { ServiceCategoryChangeNotification } from '../models/service-category-change-notification'; +import { ServiceCategoryCreateNotification } from '../models/service-category-create-notification'; +import { ServiceCategoryDeleteNotification } from '../models/service-category-delete-notification'; +import { ServiceSpecificationChangeNotification } from '../models/service-specification-change-notification'; +import { ServiceSpecificationCreateNotification } from '../models/service-specification-create-notification'; +import { ServiceSpecificationDeleteNotification } from '../models/service-specification-delete-notification'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToServiceCandidateChangeNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCandidateChangeNotification'; + static readonly listenToServiceCandidateCreateNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCandidateCreateNotification'; + static readonly listenToServiceCandidateDeleteNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCandidateDeleteNotification'; + static readonly listenToServiceCatalogBatchNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCatalogBatchNotification'; + static readonly listenToServiceCatalogChangeNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCatalogChangeNotification'; + static readonly listenToServiceCatalogCreateNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCatalogCreateNotification'; + static readonly listenToServiceCatalogDeleteNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCatalogDeleteNotification'; + static readonly listenToServiceCategoryChangeNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCategoryChangeNotification'; + static readonly listenToServiceCategoryCreateNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCategoryCreateNotification'; + static readonly listenToServiceCategoryDeleteNotificationPath = '/serviceCatalogManagement/v4/listener/serviceCategoryDeleteNotification'; + static readonly listenToServiceSpecificationChangeNotificationPath = '/serviceCatalogManagement/v4/listener/serviceSpecificationChangeNotification'; + static readonly listenToServiceSpecificationCreateNotificationPath = '/serviceCatalogManagement/v4/listener/serviceSpecificationCreateNotification'; + static readonly listenToServiceSpecificationDeleteNotificationPath = '/serviceCatalogManagement/v4/listener/serviceSpecificationDeleteNotification'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity ServiceCandidateChangeNotification + * + * Example of a client listener for receiving the notification ServiceCandidateChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCandidateChangeNotificationResponse(data: ServiceCandidateChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCandidateChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCandidateChangeNotification + * + * Example of a client listener for receiving the notification ServiceCandidateChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCandidateChangeNotification(data: ServiceCandidateChangeNotification): __Observable { + return this.listenToServiceCandidateChangeNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCandidateCreateNotification + * + * Example of a client listener for receiving the notification ServiceCandidateCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCandidateCreateNotificationResponse(data: ServiceCandidateCreateNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCandidateCreateNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCandidateCreateNotification + * + * Example of a client listener for receiving the notification ServiceCandidateCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCandidateCreateNotification(data: ServiceCandidateCreateNotification): __Observable { + return this.listenToServiceCandidateCreateNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCandidateDeleteNotification + * + * Example of a client listener for receiving the notification ServiceCandidateDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCandidateDeleteNotificationResponse(data: ServiceCandidateDeleteNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCandidateDeleteNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCandidateDeleteNotification + * + * Example of a client listener for receiving the notification ServiceCandidateDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCandidateDeleteNotification(data: ServiceCandidateDeleteNotification): __Observable { + return this.listenToServiceCandidateDeleteNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCatalogBatchNotification + * + * Example of a client listener for receiving the notification ServiceCatalogBatchNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCatalogBatchNotificationResponse(data: ServiceCatalogBatchNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCatalogBatchNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCatalogBatchNotification + * + * Example of a client listener for receiving the notification ServiceCatalogBatchNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCatalogBatchNotification(data: ServiceCatalogBatchNotification): __Observable { + return this.listenToServiceCatalogBatchNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCatalogChangeNotification + * + * Example of a client listener for receiving the notification ServiceCatalogChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCatalogChangeNotificationResponse(data: ServiceCatalogChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCatalogChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCatalogChangeNotification + * + * Example of a client listener for receiving the notification ServiceCatalogChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCatalogChangeNotification(data: ServiceCatalogChangeNotification): __Observable { + return this.listenToServiceCatalogChangeNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCatalogCreateNotification + * + * Example of a client listener for receiving the notification ServiceCatalogCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCatalogCreateNotificationResponse(data: ServiceCatalogCreateNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCatalogCreateNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCatalogCreateNotification + * + * Example of a client listener for receiving the notification ServiceCatalogCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCatalogCreateNotification(data: ServiceCatalogCreateNotification): __Observable { + return this.listenToServiceCatalogCreateNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCatalogDeleteNotification + * + * Example of a client listener for receiving the notification ServiceCatalogDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCatalogDeleteNotificationResponse(data: ServiceCatalogDeleteNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCatalogDeleteNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCatalogDeleteNotification + * + * Example of a client listener for receiving the notification ServiceCatalogDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCatalogDeleteNotification(data: ServiceCatalogDeleteNotification): __Observable { + return this.listenToServiceCatalogDeleteNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCategoryChangeNotification + * + * Example of a client listener for receiving the notification ServiceCategoryChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCategoryChangeNotificationResponse(data: ServiceCategoryChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCategoryChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCategoryChangeNotification + * + * Example of a client listener for receiving the notification ServiceCategoryChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCategoryChangeNotification(data: ServiceCategoryChangeNotification): __Observable { + return this.listenToServiceCategoryChangeNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCategoryCreateNotification + * + * Example of a client listener for receiving the notification ServiceCategoryCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCategoryCreateNotificationResponse(data: ServiceCategoryCreateNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCategoryCreateNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCategoryCreateNotification + * + * Example of a client listener for receiving the notification ServiceCategoryCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCategoryCreateNotification(data: ServiceCategoryCreateNotification): __Observable { + return this.listenToServiceCategoryCreateNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceCategoryDeleteNotification + * + * Example of a client listener for receiving the notification ServiceCategoryDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCategoryDeleteNotificationResponse(data: ServiceCategoryDeleteNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceCategoryDeleteNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceCategoryDeleteNotification + * + * Example of a client listener for receiving the notification ServiceCategoryDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCategoryDeleteNotification(data: ServiceCategoryDeleteNotification): __Observable { + return this.listenToServiceCategoryDeleteNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceSpecificationChangeNotification + * + * Example of a client listener for receiving the notification ServiceSpecificationChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceSpecificationChangeNotificationResponse(data: ServiceSpecificationChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceSpecificationChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceSpecificationChangeNotification + * + * Example of a client listener for receiving the notification ServiceSpecificationChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceSpecificationChangeNotification(data: ServiceSpecificationChangeNotification): __Observable { + return this.listenToServiceSpecificationChangeNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceSpecificationCreateNotification + * + * Example of a client listener for receiving the notification ServiceSpecificationCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceSpecificationCreateNotificationResponse(data: ServiceSpecificationCreateNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceSpecificationCreateNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceSpecificationCreateNotification + * + * Example of a client listener for receiving the notification ServiceSpecificationCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceSpecificationCreateNotification(data: ServiceSpecificationCreateNotification): __Observable { + return this.listenToServiceSpecificationCreateNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceSpecificationDeleteNotification + * + * Example of a client listener for receiving the notification ServiceSpecificationDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceSpecificationDeleteNotificationResponse(data: ServiceSpecificationDeleteNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/listener/serviceSpecificationDeleteNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceSpecificationDeleteNotification + * + * Example of a client listener for receiving the notification ServiceSpecificationDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceSpecificationDeleteNotification(data: ServiceSpecificationDeleteNotification): __Observable { + return this.listenToServiceSpecificationDeleteNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/serviceCatalogManagement/services/service-candidate.service.ts b/src/app/openApis/serviceCatalogManagement/services/service-candidate.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..c29acee57d1de3df59522da70ff7a85be8a368dc --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services/service-candidate.service.ts @@ -0,0 +1,333 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ServiceCandidate } from '../models/service-candidate'; +import { ServiceCandidateCreate } from '../models/service-candidate-create'; +import { ServiceCandidateUpdate } from '../models/service-candidate-update'; +@Injectable({ + providedIn: 'root', +}) +class ServiceCandidateService extends __BaseService { + static readonly listServiceCandidatePath = '/serviceCatalogManagement/v4/serviceCandidate'; + static readonly createServiceCandidatePath = '/serviceCatalogManagement/v4/serviceCandidate'; + static readonly retrieveServiceCandidatePath = '/serviceCatalogManagement/v4/serviceCandidate/{id}'; + static readonly deleteServiceCandidatePath = '/serviceCatalogManagement/v4/serviceCandidate/{id}'; + static readonly patchServiceCandidatePath = '/serviceCatalogManagement/v4/serviceCandidate/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ServiceCandidate objects + * + * This operation list or find ServiceCandidate entities + * @param params The `ServiceCandidateService.ListServiceCandidateParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceCandidateResponse(params: ServiceCandidateService.ListServiceCandidateParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCandidate`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ServiceCandidate objects + * + * This operation list or find ServiceCandidate entities + * @param params The `ServiceCandidateService.ListServiceCandidateParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceCandidate(params: ServiceCandidateService.ListServiceCandidateParams): __Observable> { + return this.listServiceCandidateResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ServiceCandidate + * + * This operation creates a ServiceCandidate entity. + * @param serviceCandidate The ServiceCandidate to be created + * @return OK or Created + */ + createServiceCandidateResponse(serviceCandidate: ServiceCandidateCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = serviceCandidate; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCandidate`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ServiceCandidate + * + * This operation creates a ServiceCandidate entity. + * @param serviceCandidate The ServiceCandidate to be created + * @return OK or Created + */ + createServiceCandidate(serviceCandidate: ServiceCandidateCreate): __Observable { + return this.createServiceCandidateResponse(serviceCandidate).pipe( + __map(_r => _r.body as ServiceCandidate | ServiceCandidate) + ); + } + + /** + * Retrieves a ServiceCandidate by ID + * + * This operation retrieves a ServiceCandidate entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceCandidateService.RetrieveServiceCandidateParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceCandidate + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceCandidateResponse(params: ServiceCandidateService.RetrieveServiceCandidateParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCandidate/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ServiceCandidate by ID + * + * This operation retrieves a ServiceCandidate entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceCandidateService.RetrieveServiceCandidateParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceCandidate + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceCandidate(params: ServiceCandidateService.RetrieveServiceCandidateParams): __Observable { + return this.retrieveServiceCandidateResponse(params).pipe( + __map(_r => _r.body as ServiceCandidate) + ); + } + + /** + * Deletes a ServiceCandidate + * + * This operation deletes a ServiceCandidate entity. + * @param id Identifier of the ServiceCandidate + */ + deleteServiceCandidateResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCandidate/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ServiceCandidate + * + * This operation deletes a ServiceCandidate entity. + * @param id Identifier of the ServiceCandidate + */ + deleteServiceCandidate(id: string): __Observable { + return this.deleteServiceCandidateResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially a ServiceCandidate + * + * This operation updates partially a ServiceCandidate entity. + * @param params The `ServiceCandidateService.PatchServiceCandidateParams` containing the following parameters: + * + * - `serviceCandidate`: The ServiceCandidate to be updated + * + * - `id`: Identifier of the ServiceCandidate + * + * @return Updated + */ + patchServiceCandidateResponse(params: ServiceCandidateService.PatchServiceCandidateParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.serviceCandidate; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCandidate/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ServiceCandidate + * + * This operation updates partially a ServiceCandidate entity. + * @param params The `ServiceCandidateService.PatchServiceCandidateParams` containing the following parameters: + * + * - `serviceCandidate`: The ServiceCandidate to be updated + * + * - `id`: Identifier of the ServiceCandidate + * + * @return Updated + */ + patchServiceCandidate(params: ServiceCandidateService.PatchServiceCandidateParams): __Observable { + return this.patchServiceCandidateResponse(params).pipe( + __map(_r => _r.body as ServiceCandidate) + ); + } +} + +module ServiceCandidateService { + + /** + * Parameters for listServiceCandidate + */ + export interface ListServiceCandidateParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveServiceCandidate + */ + export interface RetrieveServiceCandidateParams { + + /** + * Identifier of the ServiceCandidate + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchServiceCandidate + */ + export interface PatchServiceCandidateParams { + + /** + * The ServiceCandidate to be updated + */ + serviceCandidate: ServiceCandidateUpdate; + + /** + * Identifier of the ServiceCandidate + */ + id: string; + } +} + +export { ServiceCandidateService } diff --git a/src/app/openApis/serviceCatalogManagement/services/service-catalog.service.ts b/src/app/openApis/serviceCatalogManagement/services/service-catalog.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..06514feed6affa16ef771fa8623505593aa2be15 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services/service-catalog.service.ts @@ -0,0 +1,333 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ServiceCatalog } from '../models/service-catalog'; +import { ServiceCatalogCreate } from '../models/service-catalog-create'; +import { ServiceCatalogUpdate } from '../models/service-catalog-update'; +@Injectable({ + providedIn: 'root', +}) +class ServiceCatalogService extends __BaseService { + static readonly listServiceCatalogPath = '/serviceCatalogManagement/v4/serviceCatalog'; + static readonly createServiceCatalogPath = '/serviceCatalogManagement/v4/serviceCatalog'; + static readonly retrieveServiceCatalogPath = '/serviceCatalogManagement/v4/serviceCatalog/{id}'; + static readonly deleteServiceCatalogPath = '/serviceCatalogManagement/v4/serviceCatalog/{id}'; + static readonly patchServiceCatalogPath = '/serviceCatalogManagement/v4/serviceCatalog/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ServiceCatalog objects + * + * This operation list or find ServiceCatalog entities + * @param params The `ServiceCatalogService.ListServiceCatalogParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceCatalogResponse(params: ServiceCatalogService.ListServiceCatalogParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCatalog`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ServiceCatalog objects + * + * This operation list or find ServiceCatalog entities + * @param params The `ServiceCatalogService.ListServiceCatalogParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceCatalog(params: ServiceCatalogService.ListServiceCatalogParams): __Observable> { + return this.listServiceCatalogResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ServiceCatalog + * + * This operation creates a ServiceCatalog entity. + * @param serviceCatalog The ServiceCatalog to be created + * @return OK or Created + */ + createServiceCatalogResponse(serviceCatalog: ServiceCatalogCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = serviceCatalog; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCatalog`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ServiceCatalog + * + * This operation creates a ServiceCatalog entity. + * @param serviceCatalog The ServiceCatalog to be created + * @return OK or Created + */ + createServiceCatalog(serviceCatalog: ServiceCatalogCreate): __Observable { + return this.createServiceCatalogResponse(serviceCatalog).pipe( + __map(_r => _r.body as ServiceCatalog | ServiceCatalog) + ); + } + + /** + * Retrieves a ServiceCatalog by ID + * + * This operation retrieves a ServiceCatalog entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceCatalogService.RetrieveServiceCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceCatalog + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceCatalogResponse(params: ServiceCatalogService.RetrieveServiceCatalogParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCatalog/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ServiceCatalog by ID + * + * This operation retrieves a ServiceCatalog entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceCatalogService.RetrieveServiceCatalogParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceCatalog + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceCatalog(params: ServiceCatalogService.RetrieveServiceCatalogParams): __Observable { + return this.retrieveServiceCatalogResponse(params).pipe( + __map(_r => _r.body as ServiceCatalog) + ); + } + + /** + * Deletes a ServiceCatalog + * + * This operation deletes a ServiceCatalog entity. + * @param id Identifier of the ServiceCatalog + */ + deleteServiceCatalogResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCatalog/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ServiceCatalog + * + * This operation deletes a ServiceCatalog entity. + * @param id Identifier of the ServiceCatalog + */ + deleteServiceCatalog(id: string): __Observable { + return this.deleteServiceCatalogResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially a ServiceCatalog + * + * This operation updates partially a ServiceCatalog entity. + * @param params The `ServiceCatalogService.PatchServiceCatalogParams` containing the following parameters: + * + * - `serviceCatalog`: The ServiceCatalog to be updated + * + * - `id`: Identifier of the ServiceCatalog + * + * @return Updated + */ + patchServiceCatalogResponse(params: ServiceCatalogService.PatchServiceCatalogParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.serviceCatalog; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCatalog/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ServiceCatalog + * + * This operation updates partially a ServiceCatalog entity. + * @param params The `ServiceCatalogService.PatchServiceCatalogParams` containing the following parameters: + * + * - `serviceCatalog`: The ServiceCatalog to be updated + * + * - `id`: Identifier of the ServiceCatalog + * + * @return Updated + */ + patchServiceCatalog(params: ServiceCatalogService.PatchServiceCatalogParams): __Observable { + return this.patchServiceCatalogResponse(params).pipe( + __map(_r => _r.body as ServiceCatalog) + ); + } +} + +module ServiceCatalogService { + + /** + * Parameters for listServiceCatalog + */ + export interface ListServiceCatalogParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveServiceCatalog + */ + export interface RetrieveServiceCatalogParams { + + /** + * Identifier of the ServiceCatalog + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchServiceCatalog + */ + export interface PatchServiceCatalogParams { + + /** + * The ServiceCatalog to be updated + */ + serviceCatalog: ServiceCatalogUpdate; + + /** + * Identifier of the ServiceCatalog + */ + id: string; + } +} + +export { ServiceCatalogService } diff --git a/src/app/openApis/serviceCatalogManagement/services/service-category.service.ts b/src/app/openApis/serviceCatalogManagement/services/service-category.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..3a280791f3991ab5394550dde1a2f298665c26cc --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services/service-category.service.ts @@ -0,0 +1,333 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ServiceCategory } from '../models/service-category'; +import { ServiceCategoryCreate } from '../models/service-category-create'; +import { ServiceCategoryUpdate } from '../models/service-category-update'; +@Injectable({ + providedIn: 'root', +}) +class ServiceCategoryService extends __BaseService { + static readonly listServiceCategoryPath = '/serviceCatalogManagement/v4/serviceCategory'; + static readonly createServiceCategoryPath = '/serviceCatalogManagement/v4/serviceCategory'; + static readonly retrieveServiceCategoryPath = '/serviceCatalogManagement/v4/serviceCategory/{id}'; + static readonly deleteServiceCategoryPath = '/serviceCatalogManagement/v4/serviceCategory/{id}'; + static readonly patchServiceCategoryPath = '/serviceCatalogManagement/v4/serviceCategory/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ServiceCategory objects + * + * This operation list or find ServiceCategory entities + * @param params The `ServiceCategoryService.ListServiceCategoryParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceCategoryResponse(params: ServiceCategoryService.ListServiceCategoryParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCategory`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ServiceCategory objects + * + * This operation list or find ServiceCategory entities + * @param params The `ServiceCategoryService.ListServiceCategoryParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceCategory(params: ServiceCategoryService.ListServiceCategoryParams): __Observable> { + return this.listServiceCategoryResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ServiceCategory + * + * This operation creates a ServiceCategory entity. + * @param serviceCategory The ServiceCategory to be created + * @return OK or Created + */ + createServiceCategoryResponse(serviceCategory: ServiceCategoryCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = serviceCategory; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCategory`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ServiceCategory + * + * This operation creates a ServiceCategory entity. + * @param serviceCategory The ServiceCategory to be created + * @return OK or Created + */ + createServiceCategory(serviceCategory: ServiceCategoryCreate): __Observable { + return this.createServiceCategoryResponse(serviceCategory).pipe( + __map(_r => _r.body as ServiceCategory | ServiceCategory) + ); + } + + /** + * Retrieves a ServiceCategory by ID + * + * This operation retrieves a ServiceCategory entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceCategoryService.RetrieveServiceCategoryParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceCategory + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceCategoryResponse(params: ServiceCategoryService.RetrieveServiceCategoryParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCategory/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ServiceCategory by ID + * + * This operation retrieves a ServiceCategory entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceCategoryService.RetrieveServiceCategoryParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceCategory + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceCategory(params: ServiceCategoryService.RetrieveServiceCategoryParams): __Observable { + return this.retrieveServiceCategoryResponse(params).pipe( + __map(_r => _r.body as ServiceCategory) + ); + } + + /** + * Deletes a ServiceCategory + * + * This operation deletes a ServiceCategory entity. + * @param id Identifier of the ServiceCategory + */ + deleteServiceCategoryResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCategory/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Deletes a ServiceCategory + * + * This operation deletes a ServiceCategory entity. + * @param id Identifier of the ServiceCategory + */ + deleteServiceCategory(id: string): __Observable { + return this.deleteServiceCategoryResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * Updates partially a ServiceCategory + * + * This operation updates partially a ServiceCategory entity. + * @param params The `ServiceCategoryService.PatchServiceCategoryParams` containing the following parameters: + * + * - `serviceCategory`: The ServiceCategory to be updated + * + * - `id`: Identifier of the ServiceCategory + * + * @return Updated + */ + patchServiceCategoryResponse(params: ServiceCategoryService.PatchServiceCategoryParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.serviceCategory; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/serviceCatalogManagement/v4/serviceCategory/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ServiceCategory + * + * This operation updates partially a ServiceCategory entity. + * @param params The `ServiceCategoryService.PatchServiceCategoryParams` containing the following parameters: + * + * - `serviceCategory`: The ServiceCategory to be updated + * + * - `id`: Identifier of the ServiceCategory + * + * @return Updated + */ + patchServiceCategory(params: ServiceCategoryService.PatchServiceCategoryParams): __Observable { + return this.patchServiceCategoryResponse(params).pipe( + __map(_r => _r.body as ServiceCategory) + ); + } +} + +module ServiceCategoryService { + + /** + * Parameters for listServiceCategory + */ + export interface ListServiceCategoryParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveServiceCategory + */ + export interface RetrieveServiceCategoryParams { + + /** + * Identifier of the ServiceCategory + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchServiceCategory + */ + export interface PatchServiceCategoryParams { + + /** + * The ServiceCategory to be updated + */ + serviceCategory: ServiceCategoryUpdate; + + /** + * Identifier of the ServiceCategory + */ + id: string; + } +} + +export { ServiceCategoryService } diff --git a/src/app/openApis/serviceCatalogManagement/services/service-specification.service.ts b/src/app/openApis/serviceCatalogManagement/services/service-specification.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8e39bb3bef1e12d9538386fabcc7cbfca6a8d7e2 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/services/service-specification.service.ts @@ -0,0 +1,934 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ServiceSpecification } from '../models/service-specification'; +import { ServiceSpecificationCreate } from '../models/service-specification-create'; +import { ServiceSpecificationUpdate } from '../models/service-specification-update'; +import { Attachment } from '../models/attachment'; +import { ByteArrayResource } from '../models/byte-array-resource'; +@Injectable({ + providedIn: 'root', +}) +class ServiceSpecificationService extends __BaseService { + static readonly listServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification'; + static readonly createServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification'; + static readonly cloneGSTServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification/cloneGST'; + static readonly cloneVINNIServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification/cloneVINNI'; + static readonly createServiceSpecificationFromNSDIDPath = '/serviceCatalogManagement/v4/serviceSpecification/specFromNSDID/{id}'; + static readonly createServiceSpecificationFromServiceTestSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification/specFromTestSpec/{id}'; + static readonly retrieveServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification/{id}'; + static readonly deleteServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification/{id}'; + static readonly patchServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification/{id}'; + static readonly addAttachmentToServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification/{id}/attachment'; + static readonly getAttachmentPath = '/serviceCatalogManagement/v4/serviceSpecification/{id}/attachment/{attid}'; + static readonly getAttachmentWithFilenamePath = '/serviceCatalogManagement/v4/serviceSpecification/{id}/attachment/{attid}/{afilename}'; + static readonly cloneServiceSpecificationPath = '/serviceCatalogManagement/v4/serviceSpecification/{id}/clone'; + static readonly retrieveServiceSpecificationDescriptorPath = '/serviceCatalogManagement/v4/serviceSpecification/{id}/sd'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ServiceSpecification objects + * + * This operation list or find ServiceSpecification entities + * @param params The `ServiceSpecificationService.ListServiceSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceSpecificationResponse(params: ServiceSpecificationService.ListServiceSpecificationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ServiceSpecification objects + * + * This operation list or find ServiceSpecification entities + * @param params The `ServiceSpecificationService.ListServiceSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceSpecification(params: ServiceSpecificationService.ListServiceSpecificationParams): __Observable> { + return this.listServiceSpecificationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ServiceSpecification + * + * This operation creates a ServiceSpecification entity. + * @param serviceSpecification The ServiceSpecification to be created + * @return OK or Created + */ + createServiceSpecificationResponse(serviceSpecification: ServiceSpecificationCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = serviceSpecification; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ServiceSpecification + * + * This operation creates a ServiceSpecification entity. + * @param serviceSpecification The ServiceSpecification to be created + * @return OK or Created + */ + createServiceSpecification(serviceSpecification: ServiceSpecificationCreate): __Observable { + return this.createServiceSpecificationResponse(serviceSpecification).pipe( + __map(_r => _r.body as ServiceSpecification | ServiceSpecification) + ); + } + + /** + * Clones a GST ServiceSpecification + * + * This operation clones a ServiceSpecification GST entity. The response is the cloned spec + * @param serviceName A name of the cloned GST + * @return Cloned + */ + cloneGSTServiceSpecificationResponse(serviceName: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (serviceName != null) __params = __params.set('serviceName', serviceName.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/cloneGST`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Clones a GST ServiceSpecification + * + * This operation clones a ServiceSpecification GST entity. The response is the cloned spec + * @param serviceName A name of the cloned GST + * @return Cloned + */ + cloneGSTServiceSpecification(serviceName: string): __Observable { + return this.cloneGSTServiceSpecificationResponse(serviceName).pipe( + __map(_r => _r.body as ServiceSpecification) + ); + } + + /** + * Clones a VINNI ServiceSpecification + * + * This operation clones a ServiceSpecification 5G-VINNI entity. The response is the cloned spec + * @param params The `ServiceSpecificationService.CloneVINNIServiceSpecificationParams` containing the following parameters: + * + * - `serviceName`: A name of the cloned VINNI Template + * + * - `addServiceVNF`: If true adds a Service 3rd party VNF Spec in the Bundle + * + * - `addServiceTopology`: If true adds a Service Topology Spec in the Bundle + * + * - `addServiceTesting`: If true adds a Service Testing Spec in the Bundle + * + * - `addServiceRequirements`: If true adds a Service Requirements Spec in the Bundle + * + * - `addServiceNSD`: If true adds a Service 3rd party NSD Spec in the Bundle + * + * - `addServiceMonitoring`: If true adds a Service Monitoring Spec in the Bundle + * + * - `addServiceExposureLevel4`: If true adds a Service Exposure Level4 Spec in the Bundle + * + * - `addServiceExposureLevel3`: If true adds a Service Exposure Level3 Spec in the Bundle + * + * - `addServiceExposureLevel2`: If true adds a Service Exposure Level2 Spec in the Bundle + * + * - `addServiceExposureLevel1`: If true adds a Service Exposure Level1 Spec in the Bundle + * + * @return Cloned + */ + cloneVINNIServiceSpecificationResponse(params: ServiceSpecificationService.CloneVINNIServiceSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.serviceName != null) __params = __params.set('serviceName', params.serviceName.toString()); + if (params.addServiceVNF != null) __params = __params.set('addServiceVNF', params.addServiceVNF.toString()); + if (params.addServiceTopology != null) __params = __params.set('addServiceTopology', params.addServiceTopology.toString()); + if (params.addServiceTesting != null) __params = __params.set('addServiceTesting', params.addServiceTesting.toString()); + if (params.addServiceRequirements != null) __params = __params.set('addServiceRequirements', params.addServiceRequirements.toString()); + if (params.addServiceNSD != null) __params = __params.set('addServiceNSD', params.addServiceNSD.toString()); + if (params.addServiceMonitoring != null) __params = __params.set('addServiceMonitoring', params.addServiceMonitoring.toString()); + if (params.addServiceExposureLevel4 != null) __params = __params.set('addServiceExposureLevel4', params.addServiceExposureLevel4.toString()); + if (params.addServiceExposureLevel3 != null) __params = __params.set('addServiceExposureLevel3', params.addServiceExposureLevel3.toString()); + if (params.addServiceExposureLevel2 != null) __params = __params.set('addServiceExposureLevel2', params.addServiceExposureLevel2.toString()); + if (params.addServiceExposureLevel1 != null) __params = __params.set('addServiceExposureLevel1', params.addServiceExposureLevel1.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/cloneVINNI`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Clones a VINNI ServiceSpecification + * + * This operation clones a ServiceSpecification 5G-VINNI entity. The response is the cloned spec + * @param params The `ServiceSpecificationService.CloneVINNIServiceSpecificationParams` containing the following parameters: + * + * - `serviceName`: A name of the cloned VINNI Template + * + * - `addServiceVNF`: If true adds a Service 3rd party VNF Spec in the Bundle + * + * - `addServiceTopology`: If true adds a Service Topology Spec in the Bundle + * + * - `addServiceTesting`: If true adds a Service Testing Spec in the Bundle + * + * - `addServiceRequirements`: If true adds a Service Requirements Spec in the Bundle + * + * - `addServiceNSD`: If true adds a Service 3rd party NSD Spec in the Bundle + * + * - `addServiceMonitoring`: If true adds a Service Monitoring Spec in the Bundle + * + * - `addServiceExposureLevel4`: If true adds a Service Exposure Level4 Spec in the Bundle + * + * - `addServiceExposureLevel3`: If true adds a Service Exposure Level3 Spec in the Bundle + * + * - `addServiceExposureLevel2`: If true adds a Service Exposure Level2 Spec in the Bundle + * + * - `addServiceExposureLevel1`: If true adds a Service Exposure Level1 Spec in the Bundle + * + * @return Cloned + */ + cloneVINNIServiceSpecification(params: ServiceSpecificationService.CloneVINNIServiceSpecificationParams): __Observable { + return this.cloneVINNIServiceSpecificationResponse(params).pipe( + __map(_r => _r.body as ServiceSpecification) + ); + } + + /** + * Creates a ServiceSpecification from an NSD id. It retreives the NSD from the NSD/VNF catalog + * + * This operation creates a ServiceSpecification from an NSD id. It retreives the NSD from the NSD/VNF catalog. The response is the cloned spec + * @param id Identifier of the NSD id from the NSD/VNF catalog + * @return Created + */ + createServiceSpecificationFromNSDIDResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/specFromNSDID/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ServiceSpecification from an NSD id. It retreives the NSD from the NSD/VNF catalog + * + * This operation creates a ServiceSpecification from an NSD id. It retreives the NSD from the NSD/VNF catalog. The response is the cloned spec + * @param id Identifier of the NSD id from the NSD/VNF catalog + * @return Created + */ + createServiceSpecificationFromNSDID(id: string): __Observable { + return this.createServiceSpecificationFromNSDIDResponse(id).pipe( + __map(_r => _r.body as ServiceSpecification) + ); + } + + /** + * Creates a ServiceSpecification from an ServiceTestSpecification id. It retreives the ServicTestSpecification from the ServiceTestSpecification catalog + * + * This operation creates a ServiceSpecification from a ServiceTestSpecification id. It retreives the ServiceTestSpecification from the ServiceTestSpecification catalog. The response is the Service Spec + * @param id Identifier of the ServiceTestSpecification id from the ServiceTestSpecification catalog + * @return Created + */ + createServiceSpecificationFromServiceTestSpecificationResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/specFromTestSpec/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ServiceSpecification from an ServiceTestSpecification id. It retreives the ServicTestSpecification from the ServiceTestSpecification catalog + * + * This operation creates a ServiceSpecification from a ServiceTestSpecification id. It retreives the ServiceTestSpecification from the ServiceTestSpecification catalog. The response is the Service Spec + * @param id Identifier of the ServiceTestSpecification id from the ServiceTestSpecification catalog + * @return Created + */ + createServiceSpecificationFromServiceTestSpecification(id: string): __Observable { + return this.createServiceSpecificationFromServiceTestSpecificationResponse(id).pipe( + __map(_r => _r.body as ServiceSpecification) + ); + } + + /** + * Retrieves a ServiceSpecification by ID + * + * This operation retrieves a ServiceSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceSpecificationService.RetrieveServiceSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceSpecificationResponse(params: ServiceSpecificationService.RetrieveServiceSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ServiceSpecification by ID + * + * This operation retrieves a ServiceSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceSpecificationService.RetrieveServiceSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceSpecification(params: ServiceSpecificationService.RetrieveServiceSpecificationParams): __Observable { + return this.retrieveServiceSpecificationResponse(params).pipe( + __map(_r => _r.body as ServiceSpecification) + ); + } + + /** + * Deletes a ServiceSpecification + * + * This operation deletes a ServiceSpecification entity. + * @param id Identifier of the ServiceSpecification + * @return Deleted + */ + deleteServiceSpecificationResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ServiceSpecification + * + * This operation deletes a ServiceSpecification entity. + * @param id Identifier of the ServiceSpecification + * @return Deleted + */ + deleteServiceSpecification(id: string): __Observable<{}> { + return this.deleteServiceSpecificationResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ServiceSpecification + * + * This operation updates partially a ServiceSpecification entity. + * @param params The `ServiceSpecificationService.PatchServiceSpecificationParams` containing the following parameters: + * + * - `serviceSpecification`: The ServiceSpecification to be updated + * + * - `id`: Identifier of the ServiceSpecification + * + * @return Updated + */ + patchServiceSpecificationResponse(params: ServiceSpecificationService.PatchServiceSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.serviceSpecification; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ServiceSpecification + * + * This operation updates partially a ServiceSpecification entity. + * @param params The `ServiceSpecificationService.PatchServiceSpecificationParams` containing the following parameters: + * + * - `serviceSpecification`: The ServiceSpecification to be updated + * + * - `id`: Identifier of the ServiceSpecification + * + * @return Updated + */ + patchServiceSpecification(params: ServiceSpecificationService.PatchServiceSpecificationParams): __Observable { + return this.patchServiceSpecificationResponse(params).pipe( + __map(_r => _r.body as ServiceSpecification) + ); + } + + /** + * Adds an attachment to a ServiceSpecification + * + * This operation adds an attachment to a ServiceSpecification and updates partially a ServiceSpecification entity + * @param params The `ServiceSpecificationService.AddAttachmentToServiceSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceSpecification + * + * - `afile`: The Attachment file to be added + * + * @return Success + */ + addAttachmentToServiceSpecificationResponse(params: ServiceSpecificationService.AddAttachmentToServiceSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + let __formData = new FormData(); + __body = __formData; + + if (params.afile != null) { __formData.append('afile', params.afile as string | Blob);} + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/${encodeURIComponent(params.id)}/attachment`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Adds an attachment to a ServiceSpecification + * + * This operation adds an attachment to a ServiceSpecification and updates partially a ServiceSpecification entity + * @param params The `ServiceSpecificationService.AddAttachmentToServiceSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceSpecification + * + * - `afile`: The Attachment file to be added + * + * @return Success + */ + addAttachmentToServiceSpecification(params: ServiceSpecificationService.AddAttachmentToServiceSpecificationParams): __Observable { + return this.addAttachmentToServiceSpecificationResponse(params).pipe( + __map(_r => _r.body as Attachment) + ); + } + + /** + * Get an attachment + * + * This operation gets an attachment + * @param params The `ServiceSpecificationService.GetAttachmentParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceSpecification + * + * - `attid`: Identifier of the Attachment + * + * @return Success + */ + getAttachmentResponse(params: ServiceSpecificationService.GetAttachmentParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/${encodeURIComponent(params.id)}/attachment/${encodeURIComponent(params.attid)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'blob' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Get an attachment + * + * This operation gets an attachment + * @param params The `ServiceSpecificationService.GetAttachmentParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceSpecification + * + * - `attid`: Identifier of the Attachment + * + * @return Success + */ + getAttachment(params: ServiceSpecificationService.GetAttachmentParams): __Observable { + return this.getAttachmentResponse(params).pipe( + __map(_r => _r.body as Blob) + ); + } + + /** + * Get an attachment with filename + * + * This operation gets an attachment + * @param params The `ServiceSpecificationService.GetAttachmentWithFilenameParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceSpecification + * + * - `attid`: Identifier of the Attachment + * + * - `afilename`: Identifier of the Filename + * + * @return Success + */ + getAttachmentWithFilenameResponse(params: ServiceSpecificationService.GetAttachmentWithFilenameParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/${encodeURIComponent(params.id)}/attachment/${encodeURIComponent(params.attid)}/${encodeURIComponent(params.afilename)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'blob' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Get an attachment with filename + * + * This operation gets an attachment + * @param params The `ServiceSpecificationService.GetAttachmentWithFilenameParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceSpecification + * + * - `attid`: Identifier of the Attachment + * + * - `afilename`: Identifier of the Filename + * + * @return Success + */ + getAttachmentWithFilename(params: ServiceSpecificationService.GetAttachmentWithFilenameParams): __Observable { + return this.getAttachmentWithFilenameResponse(params).pipe( + __map(_r => _r.body as ByteArrayResource) + ); + } + + /** + * Clones a ServiceSpecification + * + * This operation clones a ServiceSpecification entity. The response is the cloned spec + * @param id Identifier of the ServiceSpecification to clone + * @return Cloned + */ + cloneServiceSpecificationResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/${encodeURIComponent(id)}/clone`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Clones a ServiceSpecification + * + * This operation clones a ServiceSpecification entity. The response is the cloned spec + * @param id Identifier of the ServiceSpecification to clone + * @return Cloned + */ + cloneServiceSpecification(id: string): __Observable { + return this.cloneServiceSpecificationResponse(id).pipe( + __map(_r => _r.body as ServiceSpecification) + ); + } + + /** + * Retrieves a ServiceDescriptor by ServiceSpecification ID + * + * This operation retrieves a Service Descriptor entity. Attribute selection is enabled for all first level attributes. + * @param id Identifier of the ServiceSpecification + * @return Success + */ + retrieveServiceSpecificationDescriptorResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceCatalogManagement/v4/serviceSpecification/${encodeURIComponent(id)}/sd`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ServiceDescriptor by ServiceSpecification ID + * + * This operation retrieves a Service Descriptor entity. Attribute selection is enabled for all first level attributes. + * @param id Identifier of the ServiceSpecification + * @return Success + */ + retrieveServiceSpecificationDescriptor(id: string): __Observable { + return this.retrieveServiceSpecificationDescriptorResponse(id).pipe( + __map(_r => _r.body as ServiceSpecification) + ); + } +} + +module ServiceSpecificationService { + + /** + * Parameters for listServiceSpecification + */ + export interface ListServiceSpecificationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for cloneVINNIServiceSpecification + */ + export interface CloneVINNIServiceSpecificationParams { + + /** + * A name of the cloned VINNI Template + */ + serviceName?: string; + + /** + * If true adds a Service 3rd party VNF Spec in the Bundle + */ + addServiceVNF?: boolean; + + /** + * If true adds a Service Topology Spec in the Bundle + */ + addServiceTopology?: boolean; + + /** + * If true adds a Service Testing Spec in the Bundle + */ + addServiceTesting?: boolean; + + /** + * If true adds a Service Requirements Spec in the Bundle + */ + addServiceRequirements?: boolean; + + /** + * If true adds a Service 3rd party NSD Spec in the Bundle + */ + addServiceNSD?: boolean; + + /** + * If true adds a Service Monitoring Spec in the Bundle + */ + addServiceMonitoring?: boolean; + + /** + * If true adds a Service Exposure Level4 Spec in the Bundle + */ + addServiceExposureLevel4?: boolean; + + /** + * If true adds a Service Exposure Level3 Spec in the Bundle + */ + addServiceExposureLevel3?: boolean; + + /** + * If true adds a Service Exposure Level2 Spec in the Bundle + */ + addServiceExposureLevel2?: boolean; + + /** + * If true adds a Service Exposure Level1 Spec in the Bundle + */ + addServiceExposureLevel1?: boolean; + } + + /** + * Parameters for retrieveServiceSpecification + */ + export interface RetrieveServiceSpecificationParams { + + /** + * Identifier of the ServiceSpecification + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchServiceSpecification + */ + export interface PatchServiceSpecificationParams { + + /** + * The ServiceSpecification to be updated + */ + serviceSpecification: ServiceSpecificationUpdate; + + /** + * Identifier of the ServiceSpecification + */ + id: string; + } + + /** + * Parameters for addAttachmentToServiceSpecification + */ + export interface AddAttachmentToServiceSpecificationParams { + + /** + * Identifier of the ServiceSpecification + */ + id: string; + + /** + * The Attachment file to be added + */ + afile: Blob; + } + + /** + * Parameters for getAttachment + */ + export interface GetAttachmentParams { + + /** + * Identifier of the ServiceSpecification + */ + id: string; + + /** + * Identifier of the Attachment + */ + attid: string; + } + + /** + * Parameters for getAttachmentWithFilename + */ + export interface GetAttachmentWithFilenameParams { + + /** + * Identifier of the ServiceSpecification + */ + id: string; + + /** + * Identifier of the Attachment + */ + attid: string; + + /** + * Identifier of the Filename + */ + afilename: string; + } +} + +export { ServiceSpecificationService } diff --git a/src/app/openApis/serviceCatalogManagement/strict-http-response.ts b/src/app/openApis/serviceCatalogManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/serviceCatalogManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/serviceInventoryManagement/api-configuration.ts b/src/app/openApis/serviceInventoryManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/api.module.ts b/src/app/openApis/serviceInventoryManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..8d5dec56a8a249c8d85ed9ba22ee229f2785ea9b --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/api.module.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ServiceService } from './services/service.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + EventsSubscriptionService, + NotificationListenersClientSideService, + ServiceService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/serviceInventoryManagement/base-service.ts b/src/app/openApis/serviceInventoryManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/serviceInventoryManagement/models.ts b/src/app/openApis/serviceInventoryManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..9b3118b0d1d5265bfb1f0a143b06e7adbf19f975 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models.ts @@ -0,0 +1,27 @@ +export { Any } from './models/any'; +export { Characteristic } from './models/characteristic'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { Note } from './models/note'; +export { Place } from './models/place'; +export { RelatedParty } from './models/related-party'; +export { ResourceRef } from './models/resource-ref'; +export { Service } from './models/service'; +export { ServiceAttributeValueChangeEvent } from './models/service-attribute-value-change-event'; +export { ServiceAttributeValueChangeNotification } from './models/service-attribute-value-change-notification'; +export { ServiceBatchEvent } from './models/service-batch-event'; +export { ServiceBatchNotification } from './models/service-batch-notification'; +export { ServiceCreate } from './models/service-create'; +export { ServiceCreateEvent } from './models/service-create-event'; +export { ServiceCreateNotification } from './models/service-create-notification'; +export { ServiceDeleteEvent } from './models/service-delete-event'; +export { ServiceDeleteNotification } from './models/service-delete-notification'; +export { ServiceOrderRef } from './models/service-order-ref'; +export { ServiceRef } from './models/service-ref'; +export { ServiceRelationship } from './models/service-relationship'; +export { ServiceSpecificationRef } from './models/service-specification-ref'; +export { ServiceStateChangeEvent } from './models/service-state-change-event'; +export { ServiceStateChangeNotification } from './models/service-state-change-notification'; +export { ServiceUpdate } from './models/service-update'; +export { TargetServiceSchema } from './models/target-service-schema'; diff --git a/src/app/openApis/serviceInventoryManagement/models/any.ts b/src/app/openApis/serviceInventoryManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/characteristic.ts b/src/app/openApis/serviceInventoryManagement/models/characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c66ffdc5e25b6b3ace4d40b1c4b12b966ac75f4 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/characteristic.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface Characteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The value of the characteristic + */ + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/error.ts b/src/app/openApis/serviceInventoryManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..55d5a0a7c1fcac41a6b8bd98a5d0c112367572e7 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/error.ts @@ -0,0 +1,47 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + + /** + * When sub-classing, this defines the super-class. + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + '@type'?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: number; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: number; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/event-subscription-input.ts b/src/app/openApis/serviceInventoryManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/event-subscription.ts b/src/app/openApis/serviceInventoryManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/note.ts b/src/app/openApis/serviceInventoryManagement/models/note.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd672c255fa68306e1d8d1783ba63ddfc52b3efe --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/note.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * Extra information about a given entity + */ +export interface Note { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Author of the note + */ + author?: string; + + /** + * Date of the note + */ + date?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Describes the system from which the action related to this note was done + */ + system?: string; + + /** + * Text of the note + */ + text?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/place.ts b/src/app/openApis/serviceInventoryManagement/models/place.ts new file mode 100644 index 0000000000000000000000000000000000000000..6bd3fd73cc4cf173d726374bfb4d3aa92829f59f --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/place.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * Place reference. Place defines the places where the products are sold or delivered. + */ +export interface Place { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the place, such as: [home delivery], [shop retrieval]) + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/related-party.ts b/src/app/openApis/serviceInventoryManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..3820cb5fbc177fdefe102360696ca4ffd92834ea --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/related-party.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/resource-ref.ts b/src/app/openApis/serviceInventoryManagement/models/resource-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..1baeeebed3b8a14dfd3eddf333213b02a9db8ccc --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/resource-ref.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +export interface ResourceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the supporting resource + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-attribute-value-change-event.ts b/src/app/openApis/serviceInventoryManagement/models/service-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..7229364b4a997723db1a12f8c4a7c33ec4f82ee1 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-attribute-value-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceAttributeValueChangeEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-attribute-value-change-notification.ts b/src/app/openApis/serviceInventoryManagement/models/service-attribute-value-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ac5d50fec049bcefa7db724472a524103a7ab41 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-attribute-value-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceAttributeValueChangeEvent } from './service-attribute-value-change-event'; + +/** + * The notification data structure + */ +export interface ServiceAttributeValueChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceAttributeValueChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-batch-event.ts b/src/app/openApis/serviceInventoryManagement/models/service-batch-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..72d94cd9a57e26c5ae351b148bbdefb2905616e4 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-batch-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceBatchEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-batch-notification.ts b/src/app/openApis/serviceInventoryManagement/models/service-batch-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..e54af9df65fd39384b681bb5a5c15d4f152fa63f --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-batch-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceBatchEvent } from './service-batch-event'; + +/** + * The notification data structure + */ +export interface ServiceBatchNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceBatchEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-create-event.ts b/src/app/openApis/serviceInventoryManagement/models/service-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..dda3c396d46d754abaf648dce7e844953da7bbb7 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-create-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceCreateEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-create-notification.ts b/src/app/openApis/serviceInventoryManagement/models/service-create-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..a82972970cae68267b89837ed7d6f62066be95f1 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-create-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceCreateEvent } from './service-create-event'; + +/** + * The notification data structure + */ +export interface ServiceCreateNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceCreateEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-create.ts b/src/app/openApis/serviceInventoryManagement/models/service-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..d671aed7930a7233bf78a8f51e1c2b1cf018e46b --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-create.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +import { RelatedParty } from './related-party'; +import { Note } from './note'; +import { Place } from './place'; +import { Characteristic } from './characteristic'; +import { ServiceOrderRef } from './service-order-ref'; +import { ServiceRelationship } from './service-relationship'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ResourceRef } from './resource-ref'; +import { ServiceRef } from './service-ref'; + +/** + * Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. Skipped properties: id,href + */ +export interface ServiceCreate { + + /** + * A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Is it a customer facing or resource facing service + */ + category?: string; + + /** + * Free-text description of the service + */ + description?: string; + + /** + * Date when the service ends + */ + endDate?: string; + + /** + * If TRUE, this Service has already been started + */ + hasStarted?: boolean; + + /** + * If FALSE, this particular Service has NOT been enabled for use + */ + isServiceEnabled?: boolean; + + /** + * If TRUE, this Service can be changed without affecting any other services + */ + isStateful?: boolean; + + /** + * Name of the service + */ + name?: string; + + /** + * A list of notes made on this service + */ + note?: Array; + + /** + * A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc. + */ + place?: Array; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * A list of characteristics that characterize this service (ServiceCharacteristic [*]) + */ + serviceCharacteristic?: Array; + + /** + * Date when the service was created (whatever its status). + */ + serviceDate?: string; + + /** + * A list of service orders related to this service + */ + serviceOrder?: Array; + + /** + * A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example). + */ + serviceRelationship?: Array; + + /** + * The specification from which this service was instantiated + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * Business type of the service + */ + serviceType?: string; + + /** + * Date when the service starts + */ + startDate?: string; + + /** + * This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above + */ + startMode?: string; + + /** + * The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated + */ + state?: 'feasibilityChecked' | 'designed' | 'reserved' | 'inactive' | 'active' | 'terminated'; + + /** + * A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources. + */ + supportingResource?: Array; + + /** + * A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS). + */ + supportingService?: Array; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-delete-event.ts b/src/app/openApis/serviceInventoryManagement/models/service-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa0997c29280ec7ef31967ef6e671271f5bb92d5 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-delete-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceDeleteEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-delete-notification.ts b/src/app/openApis/serviceInventoryManagement/models/service-delete-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..7fd1401b5a964dcfec44ed2f129588796f88f701 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-delete-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceDeleteEvent } from './service-delete-event'; + +/** + * The notification data structure + */ +export interface ServiceDeleteNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceDeleteEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-order-ref.ts b/src/app/openApis/serviceInventoryManagement/models/service-order-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..a273c440ae59e9acca0e218e9d7cac138cd6e0a2 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-order-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Service Order reference. Useful to understand the which was the Service order through which the service was instantiated in the service inventory + */ +export interface ServiceOrderRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the Service Order + */ + id: string; + + /** + * Unique identifier of the Service Order Item within a service order, not populated if this is a reference to a service order + */ + serviceOrderItemId?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-ref.ts b/src/app/openApis/serviceInventoryManagement/models/service-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..f88370a153974f6d6cef61ad3cf32bab9be6017f --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Service reference, for when Service is used by other entities + */ +export interface ServiceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Id of the service + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-relationship.ts b/src/app/openApis/serviceInventoryManagement/models/service-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..8e2eeae882e065d4a920c244f913413fbfcf19fa --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-relationship.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +import { ServiceRef } from './service-ref'; + +/** + * Describes links with services of the same category (useful for bundled services) + */ +export interface ServiceRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * The type of relationship (e.g. depends on, enables) + */ + relationshipType: string; + + /** + * The service being referred to + */ + service: ServiceRef; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-specification-ref.ts b/src/app/openApis/serviceInventoryManagement/models/service-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e84780cd430d5f1bccdc347f219a4fcee774c18 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-specification-ref.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { TargetServiceSchema } from './target-service-schema'; + +/** + * Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification. + */ +export interface ServiceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + uuid?: string; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-state-change-event.ts b/src/app/openApis/serviceInventoryManagement/models/service-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..612028bca7fa82d10253b354f1ef0110cd7f0b39 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-state-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { Service } from './service'; + +/** + * The event data structure + */ +export interface ServiceStateChangeEvent { + + /** + * The involved resource data for the event + */ + service?: Service; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-state-change-notification.ts b/src/app/openApis/serviceInventoryManagement/models/service-state-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..ec64d5a64b468bd190f77d479d0a06a8fab1e23c --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-state-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceStateChangeEvent } from './service-state-change-event'; + +/** + * The notification data structure + */ +export interface ServiceStateChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceStateChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service-update.ts b/src/app/openApis/serviceInventoryManagement/models/service-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..013d196fc44e2d7a1c204f543e5a50fb5d1b03cd --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service-update.ts @@ -0,0 +1,136 @@ +/* tslint:disable */ +import { RelatedParty } from './related-party'; +import { Note } from './note'; +import { Place } from './place'; +import { Characteristic } from './characteristic'; +import { ServiceOrderRef } from './service-order-ref'; +import { ServiceRelationship } from './service-relationship'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ResourceRef } from './resource-ref'; +import { ServiceRef } from './service-ref'; + +/** + * Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. Skipped properties: id,href,serviceRelationship + */ +export interface ServiceUpdate { + + /** + * A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Is it a customer facing or resource facing service + */ + category?: string; + + /** + * Free-text description of the service + */ + description?: string; + + /** + * Date when the service ends + */ + endDate?: string; + + /** + * If TRUE, this Service has already been started + */ + hasStarted?: boolean; + + /** + * If FALSE, this particular Service has NOT been enabled for use + */ + isServiceEnabled?: boolean; + + /** + * If TRUE, this Service can be changed without affecting any other services + */ + isStateful?: boolean; + + /** + * Name of the service + */ + name?: string; + + /** + * A list of notes made on this service + */ + note?: Array; + + /** + * A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc. + */ + place?: Array; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * A list of characteristics that characterize this service (ServiceCharacteristic [*]) + */ + serviceCharacteristic?: Array; + + /** + * Date when the service was created (whatever its status). + */ + serviceDate?: string; + + /** + * A list of service orders related to this service + */ + serviceOrder?: Array; + + /** + * A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example). + */ + serviceRelationship?: Array; + + /** + * The specification from which this service was instantiated + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * Business type of the service + */ + serviceType?: string; + + /** + * Date when the service starts + */ + startDate?: string; + + /** + * This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above + */ + startMode?: string; + + /** + * The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated + */ + state?: 'feasibilityChecked' | 'designed' | 'reserved' | 'inactive' | 'active' | 'terminated'; + + /** + * A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources. + */ + supportingResource?: Array; + + /** + * A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS). + */ + supportingService?: Array; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/service.ts b/src/app/openApis/serviceInventoryManagement/models/service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ee23ae44ba7fa25ca8fec114910d0e1ddd8d6db --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/service.ts @@ -0,0 +1,143 @@ +/* tslint:disable */ +import { Place } from './place'; +import { Note } from './note'; +import { RelatedParty } from './related-party'; +import { Characteristic } from './characteristic'; +import { ServiceOrderRef } from './service-order-ref'; +import { ServiceRelationship } from './service-relationship'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ResourceRef } from './resource-ref'; +import { ServiceRef } from './service-ref'; + +/** + * Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. + */ +export interface Service { + + /** + * A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc. + */ + place?: Array; + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@type'?: string; + + /** + * Is it a customer facing or resource facing service + */ + category?: string; + + /** + * Free-text description of the service + */ + description?: string; + + /** + * Date when the service ends + */ + endDate?: string; + + /** + * If TRUE, this Service has already been started + */ + hasStarted?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the service + */ + id?: string; + + /** + * If FALSE, this particular Service has NOT been enabled for use + */ + isServiceEnabled?: boolean; + + /** + * If TRUE, this Service can be changed without affecting any other services + */ + isStateful?: boolean; + + /** + * Name of the entity + */ + name?: string; + + /** + * A list of notes made on this service + */ + note?: Array; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity. + */ + relatedParty?: Array; + + /** + * A list of characteristics that characterize this service (ServiceCharacteristic [*]) + */ + serviceCharacteristic?: Array; + + /** + * Date when the service was created (whatever its status). + */ + serviceDate?: string; + + /** + * A list of service orders related to this service + */ + serviceOrder?: Array; + + /** + * A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example). + */ + serviceRelationship?: Array; + + /** + * The specification from which this service was instantiated + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * Business type of the service + */ + serviceType?: string; + + /** + * Date when the service starts + */ + startDate?: string; + + /** + * This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above + */ + startMode?: string; + + /** + * The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated + */ + state?: 'feasibilityChecked' | 'designed' | 'reserved' | 'inactive' | 'active' | 'terminated'; + + /** + * A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources. + */ + supportingResource?: Array; + + /** + * A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS). + */ + supportingService?: Array; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/models/target-service-schema.ts b/src/app/openApis/serviceInventoryManagement/models/target-service-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4887bf9c9dd0e25c992a00348c805792cf20349 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/models/target-service-schema.ts @@ -0,0 +1,24 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target service which is described by service specification + */ +export interface TargetServiceSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceInventoryManagement/services.ts b/src/app/openApis/serviceInventoryManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..07e2b7baaa8c6ed80659ec0d9f00852dce023e89 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/services.ts @@ -0,0 +1,3 @@ +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ServiceService } from './services/service.service'; diff --git a/src/app/openApis/serviceInventoryManagement/services/events-subscription.service.ts b/src/app/openApis/serviceInventoryManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..5a2647e57fee6d9cdd172764f013c6813486203e --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/services/events-subscription.service.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener4Path = '/serviceInventory/v4/hub'; + static readonly unregisterListener4Path = '/serviceInventory/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener4Response(data: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceInventory/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener4(data: EventSubscriptionInput): __Observable { + return this.registerListener4Response(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener4Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceInventory/v4/hub/${id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener4(id: string): __Observable { + return this.unregisterListener4Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/serviceInventoryManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/serviceInventoryManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..1f5ddbfd63c9d7f1306b4cd3f4588c32db55477b --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,227 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { ServiceAttributeValueChangeNotification } from '../models/service-attribute-value-change-notification'; +import { ServiceBatchNotification } from '../models/service-batch-notification'; +import { ServiceCreateNotification } from '../models/service-create-notification'; +import { ServiceDeleteNotification } from '../models/service-delete-notification'; +import { ServiceStateChangeNotification } from '../models/service-state-change-notification'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToServiceAttributeValueChangeNotificationPath = '/serviceInventory/v4/listener/serviceAttributeValueChangeNotification'; + static readonly listenToServiceBatchNotificationPath = '/serviceInventory/v4/listener/serviceBatchNotification'; + static readonly listenToServiceCreateNotificationPath = '/serviceInventory/v4/listener/serviceCreateNotification'; + static readonly listenToServiceDeleteNotificationPath = '/serviceInventory/v4/listener/serviceDeleteNotification'; + static readonly listenToServiceStateChangeNotificationPath = '/serviceInventory/v4/listener/serviceStateChangeNotification'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Example of a client listener for receiving the notification ServiceAttributeValueChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceAttributeValueChangeNotificationResponse(data: ServiceAttributeValueChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceInventory/v4/listener/serviceAttributeValueChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceAttributeValueChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceAttributeValueChangeNotification(data: ServiceAttributeValueChangeNotification): __Observable { + return this.listenToServiceAttributeValueChangeNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Example of a client listener for receiving the notification ServiceBatchNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceBatchNotificationResponse(data: ServiceBatchNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceInventory/v4/listener/serviceBatchNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceBatchNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceBatchNotification(data: ServiceBatchNotification): __Observable { + return this.listenToServiceBatchNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Example of a client listener for receiving the notification ServiceCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCreateNotificationResponse(data: ServiceCreateNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceInventory/v4/listener/serviceCreateNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceCreateNotification(data: ServiceCreateNotification): __Observable { + return this.listenToServiceCreateNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Example of a client listener for receiving the notification ServiceDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceDeleteNotificationResponse(data: ServiceDeleteNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceInventory/v4/listener/serviceDeleteNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceDeleteNotification(data: ServiceDeleteNotification): __Observable { + return this.listenToServiceDeleteNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Example of a client listener for receiving the notification ServiceStateChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceStateChangeNotificationResponse(data: ServiceStateChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceInventory/v4/listener/serviceStateChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceStateChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceStateChangeNotification(data: ServiceStateChangeNotification): __Observable { + return this.listenToServiceStateChangeNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/serviceInventoryManagement/services/service.service.ts b/src/app/openApis/serviceInventoryManagement/services/service.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..9877229c7e1a38331da3a4bde5fdfd786e5d1937 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/services/service.service.ts @@ -0,0 +1,313 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { Service } from '../models/service'; +import { ServiceCreate } from '../models/service-create'; +import { ServiceUpdate } from '../models/service-update'; +@Injectable({ + providedIn: 'root', +}) +class ServiceService extends __BaseService { + static readonly listServicePath = '/serviceInventory/v4/service'; + static readonly createServicePath = '/serviceInventory/v4/service'; + static readonly retrieveServicePath = '/serviceInventory/v4/service/{id}'; + static readonly deleteServicePath = '/serviceInventory/v4/service/{id}'; + static readonly patchServicePath = '/serviceInventory/v4/service/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * This operation list or find Service entities + * @param params The `ServiceService.ListServiceParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceResponse(params: ServiceService.ListServiceParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceInventory/v4/service`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * This operation list or find Service entities + * @param params The `ServiceService.ListServiceParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listService(params: ServiceService.ListServiceParams): __Observable> { + return this.listServiceResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * This operation creates a Service entity. + * @param service The Service to be created + * @return OK or Created + */ + createServiceResponse(service: ServiceCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = service; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceInventory/v4/service`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * This operation creates a Service entity. + * @param service The Service to be created + * @return OK or Created + */ + createService(service: ServiceCreate): __Observable { + return this.createServiceResponse(service).pipe( + __map(_r => _r.body as Service | Service) + ); + } + + /** + * This operation retrieves a Service entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceService.RetrieveServiceParams` containing the following parameters: + * + * - `id`: Identifier of the Service + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceResponse(params: ServiceService.RetrieveServiceParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceInventory/v4/service/${params.id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * This operation retrieves a Service entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceService.RetrieveServiceParams` containing the following parameters: + * + * - `id`: Identifier of the Service + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveService(params: ServiceService.RetrieveServiceParams): __Observable { + return this.retrieveServiceResponse(params).pipe( + __map(_r => _r.body as Service) + ); + } + + /** + * This operation deletes a Service entity. + * @param id Identifier of the Service + */ + deleteServiceResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceInventory/v4/service/${id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * This operation deletes a Service entity. + * @param id Identifier of the Service + */ + deleteService(id: string): __Observable { + return this.deleteServiceResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * This operation updates partially a Service entity. + * @param params The `ServiceService.PatchServiceParams` containing the following parameters: + * + * - `service`: The Service to be updated + * + * - `id`: Identifier of the Service + * + * @return Updated + */ + patchServiceResponse(params: ServiceService.PatchServiceParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.service; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/serviceInventory/v4/service/${params.id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * This operation updates partially a Service entity. + * @param params The `ServiceService.PatchServiceParams` containing the following parameters: + * + * - `service`: The Service to be updated + * + * - `id`: Identifier of the Service + * + * @return Updated + */ + patchService(params: ServiceService.PatchServiceParams): __Observable { + return this.patchServiceResponse(params).pipe( + __map(_r => _r.body as Service) + ); + } +} + +module ServiceService { + + /** + * Parameters for listService + */ + export interface ListServiceParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveService + */ + export interface RetrieveServiceParams { + + /** + * Identifier of the Service + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchService + */ + export interface PatchServiceParams { + + /** + * The Service to be updated + */ + service: ServiceUpdate; + + /** + * Identifier of the Service + */ + id: string; + } +} + +export { ServiceService } diff --git a/src/app/openApis/serviceInventoryManagement/strict-http-response.ts b/src/app/openApis/serviceInventoryManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/serviceInventoryManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/serviceOrderingManagement/api-configuration.ts b/src/app/openApis/serviceOrderingManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/api.module.ts b/src/app/openApis/serviceOrderingManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..4dc8711f0541860e8dfc2d822436ff43d45cf9e2 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/api.module.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ServiceOrderService } from './services/service-order.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + EventsSubscriptionService, + NotificationListenersClientSideService, + ServiceOrderService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/serviceOrderingManagement/base-service.ts b/src/app/openApis/serviceOrderingManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/serviceOrderingManagement/models.ts b/src/app/openApis/serviceOrderingManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..a57c64194c5694f2cffec117e5b4afa35d5d2b5a --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models.ts @@ -0,0 +1,29 @@ +export { Any } from './models/any'; +export { AppointmentRef } from './models/appointment-ref'; +export { Characteristic } from './models/characteristic'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { Note } from './models/note'; +export { Place } from './models/place'; +export { RelatedParty } from './models/related-party'; +export { ResourceRef } from './models/resource-ref'; +export { ServiceOrder } from './models/service-order'; +export { ServiceOrderAttributeValueChangeEvent } from './models/service-order-attribute-value-change-event'; +export { ServiceOrderAttributeValueChangeNotification } from './models/service-order-attribute-value-change-notification'; +export { ServiceOrderCreate } from './models/service-order-create'; +export { ServiceOrderCreateEvent } from './models/service-order-create-event'; +export { ServiceOrderCreateNotification } from './models/service-order-create-notification'; +export { ServiceOrderDeleteEvent } from './models/service-order-delete-event'; +export { ServiceOrderDeleteNotification } from './models/service-order-delete-notification'; +export { ServiceOrderItem } from './models/service-order-item'; +export { ServiceOrderItemRelationship } from './models/service-order-item-relationship'; +export { ServiceOrderRelationship } from './models/service-order-relationship'; +export { ServiceOrderStateChangeEvent } from './models/service-order-state-change-event'; +export { ServiceOrderStateChangeNotification } from './models/service-order-state-change-notification'; +export { ServiceOrderUpdate } from './models/service-order-update'; +export { ServiceRef } from './models/service-ref'; +export { ServiceRelationship } from './models/service-relationship'; +export { ServiceRestriction } from './models/service-restriction'; +export { ServiceSpecificationRef } from './models/service-specification-ref'; +export { TargetServiceSchema } from './models/target-service-schema'; diff --git a/src/app/openApis/serviceOrderingManagement/models/any.ts b/src/app/openApis/serviceOrderingManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/appointment-ref.ts b/src/app/openApis/serviceOrderingManagement/models/appointment-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..f2847566523cfb857ba7c96e023f309ca64a3ee1 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/appointment-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Refers an appointment, such as a Customer presentation or internal meeting or site visit + */ +export interface AppointmentRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * An explanatory text regarding the appointment made with a party + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * The identifier of the referred appointment + */ + id: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/characteristic.ts b/src/app/openApis/serviceOrderingManagement/models/characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c66ffdc5e25b6b3ace4d40b1c4b12b966ac75f4 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/characteristic.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface Characteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; + + /** + * The value of the characteristic + */ + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/error.ts b/src/app/openApis/serviceOrderingManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..55d5a0a7c1fcac41a6b8bd98a5d0c112367572e7 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/error.ts @@ -0,0 +1,47 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + + /** + * When sub-classing, this defines the super-class. + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + '@type'?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: number; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: number; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/event-subscription-input.ts b/src/app/openApis/serviceOrderingManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/event-subscription.ts b/src/app/openApis/serviceOrderingManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/note.ts b/src/app/openApis/serviceOrderingManagement/models/note.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd672c255fa68306e1d8d1783ba63ddfc52b3efe --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/note.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * Extra information about a given entity + */ +export interface Note { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Author of the note + */ + author?: string; + + /** + * Date of the note + */ + date?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Describes the system from which the action related to this note was done + */ + system?: string; + + /** + * Text of the note + */ + text?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/place.ts b/src/app/openApis/serviceOrderingManagement/models/place.ts new file mode 100644 index 0000000000000000000000000000000000000000..6bd3fd73cc4cf173d726374bfb4d3aa92829f59f --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/place.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ + +/** + * Place reference. Place defines the places where the products are sold or delivered. + */ +export interface Place { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the place, such as: [home delivery], [shop retrieval]) + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/related-party.ts b/src/app/openApis/serviceOrderingManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..3820cb5fbc177fdefe102360696ca4ffd92834ea --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/related-party.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/resource-ref.ts b/src/app/openApis/serviceOrderingManagement/models/resource-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..1baeeebed3b8a14dfd3eddf333213b02a9db8ccc --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/resource-ref.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +export interface ResourceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of the supporting resource + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-attribute-value-change-event.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..1eb1883dd76d55bfdd04d6741cc53344174cb0b0 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-attribute-value-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceOrder } from './service-order'; + +/** + * The event data structure + */ +export interface ServiceOrderAttributeValueChangeEvent { + + /** + * The involved resource data for the event + */ + serviceOrder?: ServiceOrder; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-attribute-value-change-notification.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-attribute-value-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3949aa7b616027987fe67b91d127a69433a7f62 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-attribute-value-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceOrderAttributeValueChangeEvent } from './service-order-attribute-value-change-event'; + +/** + * The notification data structure + */ +export interface ServiceOrderAttributeValueChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceOrderAttributeValueChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-create-event.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..0153d0efb92f7200f1a5a6617298879f8e2a7c60 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-create-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceOrder } from './service-order'; + +/** + * The event data structure + */ +export interface ServiceOrderCreateEvent { + + /** + * The involved resource data for the event + */ + serviceOrder?: ServiceOrder; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-create-notification.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-create-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..b6f495476bb863d5fd4c30a3b4d4ccab28a86d98 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-create-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceOrderCreateEvent } from './service-order-create-event'; + +/** + * The notification data structure + */ +export interface ServiceOrderCreateNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceOrderCreateEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-create.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..25276a52dd791476b5ceb8828c0393cc5f534e29 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-create.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +import { Note } from './note'; +import { ServiceOrderItem } from './service-order-item'; +import { ServiceOrderRelationship } from './service-order-relationship'; +import { RelatedParty } from './related-party'; + +/** + * Skipped properties: id,href,orderDate,completionDate,expectedCompletionDate,startDate,state + */ +export interface ServiceOrderCreate { + + /** + * Contact attached to the order to send back information regarding this order + */ + notificationContact?: string; + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Used to categorize the order, useful for the OM system, such as: Broadband, TVOption + */ + category?: string; + + /** + * A free-text description of the service order + */ + description?: string; + + /** + * ID given by the consumer to facilitate searches + */ + externalId?: string; + + /** + * Extra-information about the order; e.g. useful to add extra delivery information that could be useful for a human process + */ + note?: Array; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * A list of service order items to be processed by this order + */ + orderItem: Array; + + /** + * A list of service orders related to this order (e.g. prerequisite, dependent on) + */ + orderRelationship?: Array; + + /** + * Can be used by consumers to prioritize orders in a Service Order Management system + */ + priority?: string; + + /** + * A list of parties which are involved in this order and the role they are playing + */ + relatedParty?: Array; + + /** + * Requested delivery date from the requestors perspective + */ + requestedCompletionDate?: string; + + /** + * Order start date wished by the requestor + */ + requestedStartDate?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-delete-event.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..a29e655d8a8e41c6e3d5d601928eb89fcbf2a573 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-delete-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceOrder } from './service-order'; + +/** + * The event data structure + */ +export interface ServiceOrderDeleteEvent { + + /** + * The involved resource data for the event + */ + serviceOrder?: ServiceOrder; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-delete-notification.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-delete-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..9a1afd9343063e00df1129fe324075faa1223398 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-delete-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceOrderDeleteEvent } from './service-order-delete-event'; + +/** + * The notification data structure + */ +export interface ServiceOrderDeleteNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceOrderDeleteEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-item-relationship.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-item-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc3a09311a19cdb6bd06200a99bfacd8b0c1c728 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-item-relationship.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ + +/** + * Linked service order item to the one containing this attribute + */ +export interface ServiceOrderItemRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier of a service order item + */ + id: string; + + /** + * The type of related order item, can be: dependency if the order item needs to be not started until another order item is complete + */ + relationshipType: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-item.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-item.ts new file mode 100644 index 0000000000000000000000000000000000000000..2383d2db2c8bd6e038f480d044fc1fabbd0f86ef --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-item.ts @@ -0,0 +1,49 @@ +/* tslint:disable */ +import { AppointmentRef } from './appointment-ref'; +import { ServiceOrderItemRelationship } from './service-order-item-relationship'; +import { ServiceRestriction } from './service-restriction'; +export interface ServiceOrderItem { + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@type'?: string; + + /** + * The action to be carried out on the Service. Can be: add, modify, delete, noChange + */ + action: 'add' | 'modify' | 'delete' | 'noChange'; + + /** + * An appointment that was set up with a related party for this order item + */ + appointment?: AppointmentRef; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + id?: string; + + /** + * A list of order items related to this order item + */ + orderItemRelationship?: Array; + + /** + * The Service to be acted on by the order item + */ + service: ServiceRestriction; + + /** + * State of the order item: described in the state machine diagram. This is the requested state. + */ + state?: 'INITIAL' | 'ACKNOWLEDGED' | 'REJECTED' | 'PENDING' | 'HELD' | 'INPROGRESS' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'PARTIAL'; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-relationship.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..1fcf2c53794e0da31f996d8cecbd684300d00ec4 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-relationship.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Linked service order to the one containing this attribute + */ +export interface ServiceOrderRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The entity type of the related order + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * The id of the related order + */ + id: string; + + /** + * The type of related order, such as: [dependency] if the order needs to be [not started] until another order item is complete (a service order in this case) or [cross-ref] to keep track of the source order (a productOrder) + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-state-change-event.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-state-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..9710d4f936543b09239f83e9ca2ad23106510cd1 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-state-change-event.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { ServiceOrder } from './service-order'; + +/** + * The event data structure + */ +export interface ServiceOrderStateChangeEvent { + + /** + * The involved resource data for the event + */ + serviceOrder?: ServiceOrder; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-state-change-notification.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-state-change-notification.ts new file mode 100644 index 0000000000000000000000000000000000000000..a459927b775478d628dec47213c0b91b3cda3ed1 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-state-change-notification.ts @@ -0,0 +1,38 @@ +/* tslint:disable */ +import { ServiceOrderStateChangeEvent } from './service-order-state-change-event'; + +/** + * The notification data structure + */ +export interface ServiceOrderStateChangeNotification { + + /** + * The event linked to the involved resource object + */ + event?: ServiceOrderStateChangeEvent; + + /** + * The identifier of the notification + */ + eventId?: string; + + /** + * Time of the event occurrence + */ + eventTime?: string; + + /** + * The type of the notification + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification + */ + fieldPath?: string; + + /** + * The path identifying the resource object concerned by this notification + */ + resourcePath?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order-update.ts b/src/app/openApis/serviceOrderingManagement/models/service-order-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..d1380fdb15a7becc1ce630f9ce6bb4b13e7bb6f3 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order-update.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +import { Note } from './note'; +import { ServiceOrderItem } from './service-order-item'; +import { ServiceOrderRelationship } from './service-order-relationship'; +import { RelatedParty } from './related-party'; + +/** + * Skipped properties: id,href,externalId,priority,state,orderDate,completionDate,orderItem + */ +export interface ServiceOrderUpdate { + + /** + * Contact attached to the order to send back information regarding this order + */ + notificationContact?: string; + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * When sub-classing, this defines the sub-class entity name + */ + '@type'?: string; + + /** + * Used to categorize the order, useful for the OM system, such as: Broadband, TVOption + */ + category?: string; + + /** + * A free-text description of the service order + */ + description?: string; + + /** + * Expected delivery date amended by the provider + */ + expectedCompletionDate?: string; + + /** + * Extra-information about the order; e.g. useful to add extra delivery information that could be useful for a human process + */ + note?: Array; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + orderItem?: Array; + + /** + * A list of service orders related to this order (e.g. prerequisite, dependent on) + */ + orderRelationship?: Array; + + /** + * A list of parties which are involved in this order and the role they are playing + */ + relatedParty?: Array; + + /** + * Requested delivery date from the requestors perspective + */ + requestedCompletionDate?: string; + + /** + * Order start date wished by the requestor + */ + requestedStartDate?: string; + + /** + * Date when the order was started for processing + */ + startDate?: string; + state?: 'INITIAL' | 'ACKNOWLEDGED' | 'REJECTED' | 'PENDING' | 'HELD' | 'INPROGRESS' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'PARTIAL'; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-order.ts b/src/app/openApis/serviceOrderingManagement/models/service-order.ts new file mode 100644 index 0000000000000000000000000000000000000000..aedc2bd92a0bce8ad196660b9e02b9c60a4be66e --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-order.ts @@ -0,0 +1,106 @@ +/* tslint:disable */ +import { Note } from './note'; +import { ServiceOrderItem } from './service-order-item'; +import { ServiceOrderRelationship } from './service-order-relationship'; +import { RelatedParty } from './related-party'; +export interface ServiceOrder { + + /** + * Contact attached to the order to send back information regarding this order + */ + notificationContact?: string; + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@type'?: string; + + /** + * Used to categorize the order, useful for the OM system, such as: Broadband, TVOption + */ + category?: string; + + /** + * Effective delivery date amended by the provider + */ + completionDate?: string; + + /** + * A free-text description of the service order + */ + description?: string; + + /** + * Expected delivery date amended by the provider + */ + expectedCompletionDate?: string; + + /** + * ID given by the consumer to facilitate searches + */ + externalId?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * ID created on repository side + */ + id?: string; + + /** + * Extra-information about the order; e.g. useful to add extra delivery information that could be useful for a human process + */ + note?: Array; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + orderDate?: string; + + /** + * A list of service order items to be processed by this order + */ + orderItem: Array; + + /** + * A list of service orders related to this order (e.g. prerequisite, dependent on) + */ + orderRelationship?: Array; + orderRequester?: RelatedParty; + + /** + * Can be used by consumers to prioritize orders in a Service Order Management system + */ + priority?: string; + + /** + * A list of parties which are involved in this order and the role they are playing + */ + relatedParty?: Array; + + /** + * Requested delivery date from the requestors perspective + */ + requestedCompletionDate?: string; + + /** + * Order start date wished by the requestor + */ + requestedStartDate?: string; + + /** + * Date when the order was started for processing + */ + startDate?: string; + + /** + * State of the order: described in the state-machine diagram + */ + state?: 'INITIAL' | 'ACKNOWLEDGED' | 'REJECTED' | 'PENDING' | 'HELD' | 'INPROGRESS' | 'CANCELLED' | 'COMPLETED' | 'FAILED' | 'PARTIAL'; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-ref.ts b/src/app/openApis/serviceOrderingManagement/models/service-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..f88370a153974f6d6cef61ad3cf32bab9be6017f --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Service reference, for when Service is used by other entities + */ +export interface ServiceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Id of the service + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-relationship.ts b/src/app/openApis/serviceOrderingManagement/models/service-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..8e2eeae882e065d4a920c244f913413fbfcf19fa --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-relationship.ts @@ -0,0 +1,35 @@ +/* tslint:disable */ +import { ServiceRef } from './service-ref'; + +/** + * Describes links with services of the same category (useful for bundled services) + */ +export interface ServiceRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * The type of relationship (e.g. depends on, enables) + */ + relationshipType: string; + + /** + * The service being referred to + */ + service: ServiceRef; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-restriction.ts b/src/app/openApis/serviceOrderingManagement/models/service-restriction.ts new file mode 100644 index 0000000000000000000000000000000000000000..51f696b19abcd4c0eff4831f78c720272622b3d5 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-restriction.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +import { RelatedParty } from './related-party'; +import { Place } from './place'; +import { Characteristic } from './characteristic'; +import { ServiceRelationship } from './service-relationship'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ResourceRef } from './resource-ref'; +import { ServiceRef } from './service-ref'; + +/** + * In the context of a service order, and depending of the action requested (add/modify/delete/noChange) this data structure captures the configuration to apply to an existing subscribed service or to a new one + */ +export interface ServiceRestriction { + + /** + * A list of related party references (RelatedParty [*]). A related party defines party or party role linked to a specific entity + */ + relatedParty?: Array; + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@type'?: string; + + /** + * Is it a customer facing or resource facing service + */ + category?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A list of places (Place [*]). Used to define a place useful for the service (for example a delivery geographical place) + */ + place?: Array; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + + /** + * A list of characteristics that characterize this service (ServiceCharacteristic [*]) + */ + serviceCharacteristic?: Array; + + /** + * A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example). + */ + serviceRelationship?: Array; + + /** + * The specification from which this service was instantiated + */ + serviceSpecification?: ServiceSpecificationRef; + + /** + * Business type of the service + */ + serviceType?: string; + + /** + * The life cycle state of the service, such as: [feasibilityChecked], [designed] + */ + state?: 'feasibilityChecked' | 'designed' | 'reserved' | 'inactive' | 'active' | 'terminated'; + + /** + * A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources + */ + supportingResource?: Array; + + /** + * A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS) + */ + supportingService?: Array; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/service-specification-ref.ts b/src/app/openApis/serviceOrderingManagement/models/service-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..6e84780cd430d5f1bccdc347f219a4fcee774c18 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/service-specification-ref.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { TargetServiceSchema } from './target-service-schema'; + +/** + * Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification. + */ +export interface ServiceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + uuid?: string; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/models/target-service-schema.ts b/src/app/openApis/serviceOrderingManagement/models/target-service-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4887bf9c9dd0e25c992a00348c805792cf20349 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/models/target-service-schema.ts @@ -0,0 +1,24 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target service which is described by service specification + */ +export interface TargetServiceSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceOrderingManagement/services.ts b/src/app/openApis/serviceOrderingManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..6c57c0ea949f20f8c7fada096119baaa8baae110 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/services.ts @@ -0,0 +1,3 @@ +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ServiceOrderService } from './services/service-order.service'; diff --git a/src/app/openApis/serviceOrderingManagement/services/events-subscription.service.ts b/src/app/openApis/serviceOrderingManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..60cce102e39b25738d40b3106fedcffe718cd3db --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/services/events-subscription.service.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener5Path = '/serviceOrdering/v4/hub'; + static readonly unregisterListener5Path = '/serviceOrdering/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener5Response(data: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceOrdering/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param data Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener5(data: EventSubscriptionInput): __Observable { + return this.registerListener5Response(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener5Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceOrdering/v4/hub/${id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener5(id: string): __Observable { + return this.unregisterListener5Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/serviceOrderingManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/serviceOrderingManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..5e09fa45549a88d8c6da923d99e5b6f0ca9998b4 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,187 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { ServiceOrderAttributeValueChangeNotification } from '../models/service-order-attribute-value-change-notification'; +import { ServiceOrderCreateNotification } from '../models/service-order-create-notification'; +import { ServiceOrderDeleteNotification } from '../models/service-order-delete-notification'; +import { ServiceOrderStateChangeNotification } from '../models/service-order-state-change-notification'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToServiceOrderAttributeValueChangeNotificationPath = '/serviceOrdering/v4/listener/serviceOrderAttributeValueChangeNotification'; + static readonly listenToServiceOrderCreateNotificationPath = '/serviceOrdering/v4/listener/serviceOrderCreateNotification'; + static readonly listenToServiceOrderDeleteNotificationPath = '/serviceOrdering/v4/listener/serviceOrderDeleteNotification'; + static readonly listenToServiceOrderStateChangeNotificationPath = '/serviceOrdering/v4/listener/serviceOrderStateChangeNotification'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Example of a client listener for receiving the notification ServiceOrderAttributeValueChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceOrderAttributeValueChangeNotificationResponse(data: ServiceOrderAttributeValueChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceOrdering/v4/listener/serviceOrderAttributeValueChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceOrderAttributeValueChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceOrderAttributeValueChangeNotification(data: ServiceOrderAttributeValueChangeNotification): __Observable { + return this.listenToServiceOrderAttributeValueChangeNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Example of a client listener for receiving the notification ServiceOrderCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceOrderCreateNotificationResponse(data: ServiceOrderCreateNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceOrdering/v4/listener/serviceOrderCreateNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceOrderCreateNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceOrderCreateNotification(data: ServiceOrderCreateNotification): __Observable { + return this.listenToServiceOrderCreateNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Example of a client listener for receiving the notification ServiceOrderDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceOrderDeleteNotificationResponse(data: ServiceOrderDeleteNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceOrdering/v4/listener/serviceOrderDeleteNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceOrderDeleteNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceOrderDeleteNotification(data: ServiceOrderDeleteNotification): __Observable { + return this.listenToServiceOrderDeleteNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Example of a client listener for receiving the notification ServiceOrderStateChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceOrderStateChangeNotificationResponse(data: ServiceOrderStateChangeNotification): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = data; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceOrdering/v4/listener/serviceOrderStateChangeNotification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Example of a client listener for receiving the notification ServiceOrderStateChangeNotification + * @param data The event data + * @return OK or Notified + */ + listenToServiceOrderStateChangeNotification(data: ServiceOrderStateChangeNotification): __Observable { + return this.listenToServiceOrderStateChangeNotificationResponse(data).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/serviceOrderingManagement/services/service-order.service.ts b/src/app/openApis/serviceOrderingManagement/services/service-order.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..fba26b77e9684d428b5e75fa788ab039333638ad --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/services/service-order.service.ts @@ -0,0 +1,327 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ServiceOrder } from '../models/service-order'; +import { ServiceOrderCreate } from '../models/service-order-create'; +import { ServiceOrderUpdate } from '../models/service-order-update'; +@Injectable({ + providedIn: 'root', +}) +class ServiceOrderService extends __BaseService { + static readonly listServiceOrderPath = '/serviceOrdering/v4/serviceOrder'; + static readonly createServiceOrderPath = '/serviceOrdering/v4/serviceOrder'; + static readonly retrieveServiceOrderPath = '/serviceOrdering/v4/serviceOrder/{id}'; + static readonly deleteServiceOrderPath = '/serviceOrdering/v4/serviceOrder/{id}'; + static readonly patchServiceOrderPath = '/serviceOrdering/v4/serviceOrder/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * This operation list or find ServiceOrder entities + * @param params The `ServiceOrderService.ListServiceOrderParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceOrderResponse(params: ServiceOrderService.ListServiceOrderParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + if (params.starttime != null) __params = __params.set('starttime', params.starttime.toString()); + if (params.endtime != null) __params = __params.set('endtime', params.endtime.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceOrdering/v4/serviceOrder`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * This operation list or find ServiceOrder entities + * @param params The `ServiceOrderService.ListServiceOrderParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceOrder(params: ServiceOrderService.ListServiceOrderParams): __Observable> { + return this.listServiceOrderResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * This operation creates a ServiceOrder entity. + * @param serviceOrder The ServiceOrder to be created + * @return OK or Created + */ + createServiceOrderResponse(serviceOrder: ServiceOrderCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = serviceOrder; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceOrdering/v4/serviceOrder`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * This operation creates a ServiceOrder entity. + * @param serviceOrder The ServiceOrder to be created + * @return OK or Created + */ + createServiceOrder(serviceOrder: ServiceOrderCreate): __Observable { + return this.createServiceOrderResponse(serviceOrder).pipe( + __map(_r => _r.body as ServiceOrder | ServiceOrder) + ); + } + + /** + * This operation retrieves a ServiceOrder entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceOrderService.RetrieveServiceOrderParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceOrder + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceOrderResponse(params: ServiceOrderService.RetrieveServiceOrderParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceOrdering/v4/serviceOrder/${params.id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * This operation retrieves a ServiceOrder entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceOrderService.RetrieveServiceOrderParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceOrder + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceOrder(params: ServiceOrderService.RetrieveServiceOrderParams): __Observable { + return this.retrieveServiceOrderResponse(params).pipe( + __map(_r => _r.body as ServiceOrder) + ); + } + + /** + * This operation deletes a ServiceOrder entity. + * @param id Identifier of the ServiceOrder + */ + deleteServiceOrderResponse(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceOrdering/v4/serviceOrder/${id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * This operation deletes a ServiceOrder entity. + * @param id Identifier of the ServiceOrder + */ + deleteServiceOrder(id: string): __Observable { + return this.deleteServiceOrderResponse(id).pipe( + __map(_r => _r.body as null) + ); + } + + /** + * This operation updates partially a ServiceOrder entity. + * @param params The `ServiceOrderService.PatchServiceOrderParams` containing the following parameters: + * + * - `serviceOrder`: The ServiceOrder to be updated + * + * - `id`: Identifier of the ServiceOrder + * + * @return Updated + */ + patchServiceOrderResponse(params: ServiceOrderService.PatchServiceOrderParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.serviceOrder; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/serviceOrdering/v4/serviceOrder/${params.id}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * This operation updates partially a ServiceOrder entity. + * @param params The `ServiceOrderService.PatchServiceOrderParams` containing the following parameters: + * + * - `serviceOrder`: The ServiceOrder to be updated + * + * - `id`: Identifier of the ServiceOrder + * + * @return Updated + */ + patchServiceOrder(params: ServiceOrderService.PatchServiceOrderParams): __Observable { + return this.patchServiceOrderResponse(params).pipe( + __map(_r => _r.body as ServiceOrder) + ); + } +} + +module ServiceOrderService { + + /** + * Parameters for listServiceOrder + */ + export interface ListServiceOrderParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + + + /** + * Requested starttime for start of resources to be provided in response + */ + starttime?: string; + + + /** + * Requested endtime for end of resources to be provided in response + */ + endtime?: string; + } + + /** + * Parameters for retrieveServiceOrder + */ + export interface RetrieveServiceOrderParams { + + /** + * Identifier of the ServiceOrder + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchServiceOrder + */ + export interface PatchServiceOrderParams { + + /** + * The ServiceOrder to be updated + */ + serviceOrder: ServiceOrderUpdate; + + /** + * Identifier of the ServiceOrder + */ + id: string; + } +} + +export { ServiceOrderService } diff --git a/src/app/openApis/serviceOrderingManagement/strict-http-response.ts b/src/app/openApis/serviceOrderingManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/serviceOrderingManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/openApis/serviceTestManagement/api-configuration.ts b/src/app/openApis/serviceTestManagement/api-configuration.ts new file mode 100644 index 0000000000000000000000000000000000000000..72ac846103aa9e4d15edec0493a9fcd3e252d2fe --- /dev/null +++ b/src/app/openApis/serviceTestManagement/api-configuration.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; + +/** + * Global configuration for Api services + */ +@Injectable({ + providedIn: 'root', +}) +export class ApiConfiguration { + rootUrl: string = '//portal.openslice.io/tmf-api'; +} + +export interface ApiConfigurationInterface { + rootUrl?: string; +} diff --git a/src/app/openApis/serviceTestManagement/api.module.ts b/src/app/openApis/serviceTestManagement/api.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..6a428176c8ee76c9ca465b530fe5a117337ee522 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/api.module.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { ApiConfiguration, ApiConfigurationInterface } from './api-configuration'; + +import { EventsSubscriptionService } from './services/events-subscription.service'; +import { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +import { ServiceTestService } from './services/service-test.service'; +import { ServiceTestSpecificationService } from './services/service-test-specification.service'; + +/** + * Provider for all Api services, plus ApiConfiguration + */ +@NgModule({ + imports: [ + HttpClientModule + ], + exports: [ + HttpClientModule + ], + declarations: [], + providers: [ + ApiConfiguration, + EventsSubscriptionService, + NotificationListenersClientSideService, + ServiceTestService, + ServiceTestSpecificationService + ], +}) +export class ApiModule { + static forRoot(customParams: ApiConfigurationInterface): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ + { + provide: ApiConfiguration, + useValue: {rootUrl: customParams.rootUrl} + } + ] + } + } +} diff --git a/src/app/openApis/serviceTestManagement/base-service.ts b/src/app/openApis/serviceTestManagement/base-service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9c3ce51cadc80bb138dba6453530b73b2c006b --- /dev/null +++ b/src/app/openApis/serviceTestManagement/base-service.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { HttpClient, HttpParameterCodec, HttpParams } from '@angular/common/http'; +import { ApiConfiguration } from './api-configuration'; + +/** + * Custom parameter codec to correctly handle the plus sign in parameter + * values. See https://github.com/angular/angular/issues/18261 + */ +class ParameterCodec implements HttpParameterCodec { + encodeKey(key: string): string { + return encodeURIComponent(key); + } + + encodeValue(value: string): string { + return encodeURIComponent(value); + } + + decodeKey(key: string): string { + return decodeURIComponent(key); + } + + decodeValue(value: string): string { + return decodeURIComponent(value); + } +} +const PARAMETER_CODEC = new ParameterCodec(); + +/** + * Base class for API services + */ +export class BaseService { + constructor( + protected config: ApiConfiguration, + protected http: HttpClient + ) { + } + + private _rootUrl: string = ''; + + /** + * Returns the root url for API operations. If not set directly in this + * service, will fallback to ApiConfiguration.rootUrl. + */ + get rootUrl(): string { + return this._rootUrl || this.config.rootUrl; + } + + /** + * Sets the root URL for API operations in this service. + */ + set rootUrl(rootUrl: string) { + this._rootUrl = rootUrl; + } + + /** + * Creates a new `HttpParams` with the correct codec + */ + protected newParams(): HttpParams { + return new HttpParams({ + encoder: PARAMETER_CODEC + }); + } +} diff --git a/src/app/openApis/serviceTestManagement/models.ts b/src/app/openApis/serviceTestManagement/models.ts new file mode 100644 index 0000000000000000000000000000000000000000..e0fcac52fba42a23d09e1bdebc0a8e5b57f92cee --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models.ts @@ -0,0 +1,54 @@ +export { Any } from './models/any'; +export { AppliedConsequence } from './models/applied-consequence'; +export { AssociationSpecificationRef } from './models/association-specification-ref'; +export { Attachment } from './models/attachment'; +export { AttachmentRefOrValue } from './models/attachment-ref-or-value'; +export { ByteArrayResource } from './models/byte-array-resource'; +export { Characteristic } from './models/characteristic'; +export { CharacteristicRelationship } from './models/characteristic-relationship'; +export { CharacteristicSpecificationRelationship } from './models/characteristic-specification-relationship'; +export { CharacteristicSpecificationReq } from './models/characteristic-specification-req'; +export { CharacteristicSpecificationRes } from './models/characteristic-specification-res'; +export { CharacteristicValueSpecification } from './models/characteristic-value-specification'; +export { ConstraintRef } from './models/constraint-ref'; +export { Duration } from './models/duration'; +export { EntitySpecificationRelationshipReq } from './models/entity-specification-relationship-req'; +export { EntitySpecificationRelationshipRes } from './models/entity-specification-relationship-res'; +export { Error } from './models/error'; +export { EventSubscription } from './models/event-subscription'; +export { EventSubscriptionInput } from './models/event-subscription-input'; +export { InputStream } from './models/input-stream'; +export { MeasureThresholdRuleViolation } from './models/measure-threshold-rule-violation'; +export { MetricDefMeasureConsequence } from './models/metric-def-measure-consequence'; +export { MetricDefMeasureThresholdRule } from './models/metric-def-measure-threshold-rule'; +export { Quantity } from './models/quantity'; +export { RelatedParty } from './models/related-party'; +export { ServiceRef } from './models/service-ref'; +export { ServiceSpecificationRef } from './models/service-specification-ref'; +export { ServiceTest } from './models/service-test'; +export { ServiceTestAttributeValueChangeEvent } from './models/service-test-attribute-value-change-event'; +export { ServiceTestAttributeValueChangeEventPayload } from './models/service-test-attribute-value-change-event-payload'; +export { ServiceTestCreate } from './models/service-test-create'; +export { ServiceTestCreateEvent } from './models/service-test-create-event'; +export { ServiceTestCreateEventPayload } from './models/service-test-create-event-payload'; +export { ServiceTestDeleteEvent } from './models/service-test-delete-event'; +export { ServiceTestDeleteEventPayload } from './models/service-test-delete-event-payload'; +export { ServiceTestSpecRelationshipReq } from './models/service-test-spec-relationship-req'; +export { ServiceTestSpecRelationshipRes } from './models/service-test-spec-relationship-res'; +export { ServiceTestSpecification } from './models/service-test-specification'; +export { ServiceTestSpecificationAttributeValueChangeEvent } from './models/service-test-specification-attribute-value-change-event'; +export { ServiceTestSpecificationAttributeValueChangeEventPayload } from './models/service-test-specification-attribute-value-change-event-payload'; +export { ServiceTestSpecificationCreate } from './models/service-test-specification-create'; +export { ServiceTestSpecificationCreateEvent } from './models/service-test-specification-create-event'; +export { ServiceTestSpecificationCreateEventPayload } from './models/service-test-specification-create-event-payload'; +export { ServiceTestSpecificationDeleteEvent } from './models/service-test-specification-delete-event'; +export { ServiceTestSpecificationDeleteEventPayload } from './models/service-test-specification-delete-event-payload'; +export { ServiceTestSpecificationRef } from './models/service-test-specification-ref'; +export { ServiceTestSpecificationUpdate } from './models/service-test-specification-update'; +export { ServiceTestUpdate } from './models/service-test-update'; +export { TargetEntitySchema } from './models/target-entity-schema'; +export { TargetServiceSchema } from './models/target-service-schema'; +export { TestMeasureDefinition } from './models/test-measure-definition'; +export { TestMeasureReq } from './models/test-measure-req'; +export { TestMeasureRes } from './models/test-measure-res'; +export { TimePeriod } from './models/time-period'; diff --git a/src/app/openApis/serviceTestManagement/models/any.ts b/src/app/openApis/serviceTestManagement/models/any.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5b32757a35b7ec9de87fa425a4f71b69a1aa33 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/any.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +export interface Any { + alias?: string; + value?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/applied-consequence.ts b/src/app/openApis/serviceTestManagement/models/applied-consequence.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a6c034b667ed84cfb9b82aaf6e3085a195eb453 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/applied-consequence.ts @@ -0,0 +1,44 @@ +/* tslint:disable */ + +/** + * An Applied Consequence defines the action (prescribed action or notification) to take when a MeasureThresholdRuleViolation occurs. + */ +export interface AppliedConsequence { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The action for a violated threshold. This could be a hyperlink to the action. + */ + appliedAction?: string; + + /** + * A narrative that explains in detail what the consequence is. + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * A word, term, or phrase by which Consequence is known and distinguished from other MetricDefMeasureConsequences. + */ + name?: string; + + /** + * An indicator used to specify that a consequence should cease being applied if a value is in the same range as the previous value or continue being applied if a value is in the same range as the previous value. If the repeatAction is True, if the consequence is always applied as soon as the MetricMeasure value is in the range of values and if the repeatAction is False, the consequence is applied only if the previous MetricMeasure value was not in the same range. + */ + repeatAction?: boolean; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/association-specification-ref.ts b/src/app/openApis/serviceTestManagement/models/association-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..7bed13acdaeb9472669aca85c31d810f3b1abd74 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/association-specification-ref.ts @@ -0,0 +1,40 @@ +/* tslint:disable */ + +/** + * reference to an AssociationSpecification object + */ +export interface AssociationSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Hyperlink reference + */ + href?: string; + + /** + * unique identifier + */ + id: string; + + /** + * Name of the related entity. + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/attachment-ref-or-value.ts b/src/app/openApis/serviceTestManagement/models/attachment-ref-or-value.ts new file mode 100644 index 0000000000000000000000000000000000000000..97137fd2e81fc84cef7ca8d306526ca973d75130 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/attachment-ref-or-value.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture. + */ +export interface AttachmentRefOrValue { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Attachment type such as video, picture + */ + attachmentType?: string; + + /** + * The actual contents of the attachment object, if embedded, encoded as base64 + */ + content?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier for this particular attachment + */ + id?: string; + + /** + * Attachment mime type such as extension file for video, picture and document + */ + mimeType?: string; + + /** + * Name of the entity + */ + name?: string; + size?: Quantity; + + /** + * Uniform Resource Locator, is a web page address (a subset of URI) + */ + url?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceTestManagement/models/attachment.ts b/src/app/openApis/serviceTestManagement/models/attachment.ts new file mode 100644 index 0000000000000000000000000000000000000000..be7aafe4e7285f2ae46b20c72170bf3011d3c469 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/attachment.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +import { Quantity } from './quantity'; +import { TimePeriod } from './time-period'; + +/** + * Complements the description of an element (for instance a product) through video, pictures... + */ +export interface Attachment { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Attachment type such as video, picture + */ + attachmentType?: string; + + /** + * The actual contents of the attachment object, if embedded, encoded as base64 + */ + content?: string; + + /** + * A narrative text describing the content of the attachment + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique identifier for this particular attachment + */ + id?: string; + + /** + * Attachment mime type such as extension file for video, picture and document + */ + mimeType?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * The size of the attachment. + */ + size?: Quantity; + + /** + * Uniform Resource Locator, is a web page address (a subset of URI) + */ + url?: string; + uuid?: string; + + /** + * The period of time for which the attachment is valid + */ + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceTestManagement/models/byte-array-resource.ts b/src/app/openApis/serviceTestManagement/models/byte-array-resource.ts new file mode 100644 index 0000000000000000000000000000000000000000..0e8dbaa9c10f5d3d78fb6aa96909150a5fce94d8 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/byte-array-resource.ts @@ -0,0 +1,13 @@ +/* tslint:disable */ +import { InputStream } from './input-stream'; +export interface ByteArrayResource { + byteArray?: string; + description?: string; + file?: Blob; + filename?: string; + inputStream?: InputStream; + open?: boolean; + readable?: boolean; + uri?: string; + url?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/characteristic-relationship.ts b/src/app/openApis/serviceTestManagement/models/characteristic-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..e1f81e8b009bca1b5c10d7a261e72525ca95d38f --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/characteristic-relationship.ts @@ -0,0 +1,30 @@ +/* tslint:disable */ + +/** + * Another Characteristic that is related to the current Characteristic; + */ +export interface CharacteristicRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * The type of relationship + */ + relationshipType?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/characteristic-specification-relationship.ts b/src/app/openApis/serviceTestManagement/models/characteristic-specification-relationship.ts new file mode 100644 index 0000000000000000000000000000000000000000..5e42bfd59e408410d955a83320a1f8d5c8d6d8be --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/characteristic-specification-relationship.ts @@ -0,0 +1,51 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among Characteristic specifications. The specification characteristic is embedded within the specification whose ID and href are in this entity, and identified by its ID. + */ +export interface CharacteristicSpecificationRelationship { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique identifier of the characteristic within the specification + */ + characteristicSpecificationId?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Hyperlink reference to the parent specification containing the target characteristic + */ + parentSpecificationHref?: string; + + /** + * Unique identifier of the parent specification containing the target characteristic + */ + parentSpecificationId?: string; + + /** + * Type of relationship such as aggregation, migration, substitution, dependency, exclusivity + */ + relationshipType?: string; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceTestManagement/models/characteristic-specification-req.ts b/src/app/openApis/serviceTestManagement/models/characteristic-specification-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..9b347ca87359dd238d571be20371bf83800b8a85 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/characteristic-specification-req.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +import { CharacteristicSpecificationRelationship } from './characteristic-specification-relationship'; +import { CharacteristicValueSpecification } from './characteristic-value-specification'; +import { TimePeriod } from './time-period'; + +/** + * This class defines a characteristic specification. + */ +export interface CharacteristicSpecificationReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + '@valueSchemaLocation'?: string; + + /** + * This (optional) field provides a link to the schema describing the value type. + */ + atValueSchemaLocation?: string; + + /** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics. + */ + charSpecRelationship?: Array; + + /** + * A CharacteristicValueSpecification object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a CharacteristicSpecification object. The values of the attributes in the CharacteristicValueSpecification object describe the values of the attributes that a corresponding Characteristic object can take on. + */ + characteristicValueSpecification?: Array; + + /** + * If true, the Boolean indicates that the target Characteristic is configurable + */ + configurable?: boolean; + + /** + * A narrative that explains the CharacteristicSpecification. + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource. + */ + extensible?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * An indicator that specifies if a value is unique for the specification. Possible values are; "unique while value is in effect" and "unique whether value is in effect or not" + */ + isUnique?: boolean; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality. + */ + minCardinality?: number; + + /** + * A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications. + */ + name?: string; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value. + */ + regex?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/characteristic-specification-res.ts b/src/app/openApis/serviceTestManagement/models/characteristic-specification-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..5126b91242bd5e4c51eb3084370a9d313ee44856 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/characteristic-specification-res.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +import { CharacteristicSpecificationRelationship } from './characteristic-specification-relationship'; +import { CharacteristicValueSpecification } from './characteristic-value-specification'; +import { TimePeriod } from './time-period'; + +/** + * This class defines a characteristic specification. + */ +export interface CharacteristicSpecificationRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + '@valueSchemaLocation'?: string; + + /** + * This (optional) field provides a link to the schema describing the value type. + */ + atValueSchemaLocation?: string; + + /** + * An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics. + */ + charSpecRelationship?: Array; + + /** + * A CharacteristicValueSpecification object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a CharacteristicSpecification object. The values of the attributes in the CharacteristicValueSpecification object describe the values of the attributes that a corresponding Characteristic object can take on. + */ + characteristicValueSpecification?: Array; + + /** + * If true, the Boolean indicates that the target Characteristic is configurable + */ + configurable?: boolean; + + /** + * A narrative that explains the CharacteristicSpecification. + */ + description?: string; + + /** + * An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource. + */ + extensible?: boolean; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unique ID for the characteristic + */ + id?: string; + + /** + * An indicator that specifies if a value is unique for the specification. Possible values are; "unique while value is in effect" and "unique whether value is in effect or not" + */ + isUnique?: boolean; + + /** + * The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality. + */ + maxCardinality?: number; + + /** + * The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality. + */ + minCardinality?: number; + + /** + * A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications. + */ + name?: string; + + /** + * A rule or principle represented in regular expression used to derive the value of a characteristic value. + */ + regex?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * A kind of value that the characteristic can take on, such as numeric, text and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/characteristic-value-specification.ts b/src/app/openApis/serviceTestManagement/models/characteristic-value-specification.ts new file mode 100644 index 0000000000000000000000000000000000000000..4823b8e63aba90c5c9f959eeb119b21ac3a2469f --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/characteristic-value-specification.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; +import { Any } from './any'; + +/** + * specification of a value (number or text or an object) that can be assigned to a Characteristic. + */ +export interface CharacteristicValueSpecification { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * If true, the Boolean Indicates if the value is the default value for a characteristic + */ + isDefault?: boolean; + + /** + * An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are "open", "closed", "closedBottom" and "closedTop". + */ + rangeInterval?: string; + + /** + * A regular expression constraint for given value + */ + regex?: string; + + /** + * A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot. + */ + unitOfMeasure?: string; + uuid?: string; + validFor?: TimePeriod; + value?: Any; + + /** + * The low range value that a characteristic can take on + */ + valueFrom?: number; + + /** + * The upper range value that a characteristic can take on + */ + valueTo?: number; + + /** + * A kind of value that the characteristic value can take on, such as numeric, text and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/characteristic.ts b/src/app/openApis/serviceTestManagement/models/characteristic.ts new file mode 100644 index 0000000000000000000000000000000000000000..834af69be12845e4302af9b288fffe006e48c49f --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/characteristic.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ +import { CharacteristicRelationship } from './characteristic-relationship'; +import { Any } from './any'; + +/** + * Describes a given characteristic of an object or entity through a name/value pair. + */ +export interface Characteristic { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + characteristicRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the characteristic + */ + name: string; + uuid?: string; + value: Any; + + /** + * Data type of the value of the characteristic + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/constraint-ref.ts b/src/app/openApis/serviceTestManagement/models/constraint-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c7e28ea23a96f10b3289d9ca46e003530a1128e --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/constraint-ref.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec. + */ +export interface ConstraintRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The (class) type of the referred constraint + */ + atReferredType?: string; + + /** + * Hyperlink reference to the target constraint + */ + href?: string; + + /** + * reference id to the target constraint + */ + id: string; + + /** + * Name given to the constraint + */ + name?: string; + uuid?: string; + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/duration.ts b/src/app/openApis/serviceTestManagement/models/duration.ts new file mode 100644 index 0000000000000000000000000000000000000000..ed2ddcd66b8d02b1f5332812c4270e8d66b8b0b6 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/duration.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ + +/** + * A time interval in a given unit of time + */ +export interface Duration { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Time interval (number of seconds, minutes, hours, etc.) + */ + amount?: number; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Unit of time (seconds, minutes, hours, etc.) + */ + units?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/entity-specification-relationship-req.ts b/src/app/openApis/serviceTestManagement/models/entity-specification-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..a2903a6e35a18136efdbb0437cdd296aad64bac5 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/entity-specification-relationship-req.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +import { AssociationSpecificationRef } from './association-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * A migration, substitution, dependency or exclusivity relationship between/among entity specifications. + */ +export interface EntitySpecificationRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + associationSpec?: AssociationSpecificationRef; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Hyperlink reference + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the related entity. + */ + name?: string; + + /** + * Type of relationship such as migration, substitution, dependency, exclusivity + */ + relationshipType: string; + + /** + * The association role for this entity specification + */ + role?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/entity-specification-relationship-res.ts b/src/app/openApis/serviceTestManagement/models/entity-specification-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..c0a7d4df1795b9bbba17a4e9a3391150bb4e3f1f --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/entity-specification-relationship-res.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +import { AssociationSpecificationRef } from './association-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * A migration, substitution, dependency or exclusivity relationship between/among entity specifications. + */ +export interface EntitySpecificationRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + associationSpec?: AssociationSpecificationRef; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Hyperlink reference + */ + href?: string; + + /** + * unique identifier + */ + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the related entity. + */ + name?: string; + + /** + * Type of relationship such as migration, substitution, dependency, exclusivity + */ + relationshipType: string; + + /** + * The association role for this entity specification + */ + role?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/error.ts b/src/app/openApis/serviceTestManagement/models/error.ts new file mode 100644 index 0000000000000000000000000000000000000000..f6d298516145874b7e3c138343a292ff8c308018 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/error.ts @@ -0,0 +1,50 @@ +/* tslint:disable */ + +/** + * Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) + */ +export interface Error { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class. + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class entity name. + */ + atType?: string; + + /** + * Application relevant detail, defined in the API or a common list. + */ + code: string; + + /** + * More details and corrective actions related to the error which can be shown to a client user. + */ + message?: string; + + /** + * Explanation of the reason for the error which can be shown to a client user. + */ + reason: string; + + /** + * URI of documentation describing the error. + */ + referenceError?: string; + + /** + * HTTP Error code extension + */ + status?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/event-subscription-input.ts b/src/app/openApis/serviceTestManagement/models/event-subscription-input.ts new file mode 100644 index 0000000000000000000000000000000000000000..73092d028b4067173f7f661892ce71e7f909f814 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/event-subscription-input.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscriptionInput { + + /** + * The callback being registered. + */ + callback: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/event-subscription.ts b/src/app/openApis/serviceTestManagement/models/event-subscription.ts new file mode 100644 index 0000000000000000000000000000000000000000..edd461d53858a8c8109516693706e82735ae3db9 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/event-subscription.ts @@ -0,0 +1,22 @@ +/* tslint:disable */ + +/** + * Sets the communication endpoint address the service instance must use to deliver notification information + */ +export interface EventSubscription { + + /** + * The callback being registered. + */ + callback: string; + + /** + * Id of the listener + */ + id: string; + + /** + * additional data to be passed + */ + query?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/input-stream.ts b/src/app/openApis/serviceTestManagement/models/input-stream.ts new file mode 100644 index 0000000000000000000000000000000000000000..094fd1ed3199a39fa421105fd60c2c30b0eac5b3 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/input-stream.ts @@ -0,0 +1,3 @@ +/* tslint:disable */ +export interface InputStream { +} diff --git a/src/app/openApis/serviceTestManagement/models/measure-threshold-rule-violation.ts b/src/app/openApis/serviceTestManagement/models/measure-threshold-rule-violation.ts new file mode 100644 index 0000000000000000000000000000000000000000..c06f3d1188159ca382e09cce46acdfc5a6cce277 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/measure-threshold-rule-violation.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +import { AppliedConsequence } from './applied-consequence'; +import { Duration } from './duration'; + +/** + * A measureThresholdRuleViolation is a violation of a rule that defines the in the MericDefMeasureThresholdRule. + */ +export interface MeasureThresholdRuleViolation { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * An Applied Consequence defines the action (prescribed action or notification) to take when a MeasureThresholdRuleViolation occurs. + */ + appliedConsequence?: Array; + + /** + * An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. This operator is used to compare with the conformanceTargetLower. + */ + conformanceComparatorLower?: string; + + /** + * An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. This operator is used to compare with the conformanceTargetUpper. + */ + conformanceComparatorUpper?: string; + + /** + * to cater for values that are not numerical test metrics (e.g. a DSL line can be Synchronised or Unsynchronised. If the latter, the test should result in a rule violation).The allowed value can contain a REGEX string. + */ + conformanceTargetExact?: string; + + /** + * A value used to determine if the threshold is crossed or ceases to be crossed. It represents the lower limit. The value should be less than the conformanceTargetUpper. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition. + */ + conformanceTargetLower?: string; + + /** + * A value used to determine if the threshold is crossed or ceases to be crossed. It represents the Upper limit. The value should be greater than the conformanceTargetLower. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition. + */ + conformanceTargetUpper?: string; + + /** + * Description for the MetricDefMeasureThresholdRule . + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name for the MetricDefMeasureThresholdRule . + */ + name?: string; + + /** + * The number of allowed crossing occurrences in reference to the tolerancePeriod without a consequence being initiated. + */ + numberOfAllowedCrossing?: number; + + /** + * A threshold can be generated in different severity levels. A crossing for each level may require a different condition and possibly trigger a different consequence. + */ + thresholdRuleSeverity?: string; + tolerancePeriod?: Duration; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/metric-def-measure-consequence.ts b/src/app/openApis/serviceTestManagement/models/metric-def-measure-consequence.ts new file mode 100644 index 0000000000000000000000000000000000000000..5a0232640134b5a27592edaa590d90b2980ded39 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/metric-def-measure-consequence.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * A MetricDefMeasureConsequence defines the action (prescribed action or notification) to take when a MetricDefMeasureThresholdRule is crossed. + */ +export interface MetricDefMeasureConsequence { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * A narrative that explains in detail what the consequence is. + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * A word, term, or phrase by which a MetricDefMeasureConsequence is known and distinguished from other MetricDefMeasureConsequences. + */ + name?: string; + + /** + * Recommended remedy for a violated threshold. This could be the hyperlink to the action. + */ + prescribeAction?: string; + + /** + * An indicator used to specify that a consequence should cease being applied if a value is in the same range as the previous value or continue being applied if a value is in the same range as the previous value. If the repeatAction is True, if the consequence is always applied as soon as the MetricMeasure value is in the range of values and if the repeatAction is False, the consequence is applied only if the previous MetricMeasure value was not in the same range. + */ + repeatAction?: boolean; + uuid?: string; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceTestManagement/models/metric-def-measure-threshold-rule.ts b/src/app/openApis/serviceTestManagement/models/metric-def-measure-threshold-rule.ts new file mode 100644 index 0000000000000000000000000000000000000000..a6011a821ecaaf0b3d8d872d5166b8b227eb14b2 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/metric-def-measure-threshold-rule.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +import { MetricDefMeasureConsequence } from './metric-def-measure-consequence'; +import { Duration } from './duration'; + +/** + * A MetricDefMeasureThresholdRule is a rule that defines the condition (raise or clear) to achieve to apply consequences when a threshold is crossed or ceased to be crossed. It also defines the severity of the raise or clear of the threshold. + */ +export interface MetricDefMeasureThresholdRule { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. This operator is used to Service Test Management API REST Specification compare with the conformanceTargetLower. + */ + conformanceComparatorLower?: string; + + /** + * An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. This operator is used to compare with the conformanceTargetUpper. + */ + conformanceComparatorUpper?: string; + + /** + * A value used to determine if the threshold is crossed or ceases to be crossed. It represents the lower limit. The value should be less than the conformanceTargetUpper. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition. + */ + conformanceTargetLower?: string; + + /** + * A value used to determine if the threshold is crossed or ceases to be crossed. It represents the Upper limit. The value should be greater than the conformanceTargetLower. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition. + */ + conformanceTargetUpper?: string; + + /** + * A list of consequences (actions, notifications) that will arise if the threshold is crossed + */ + consequence?: Array; + + /** + * Description for the MetricDefMeasureThresholdRule . + */ + description?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Name for the MetricDefMeasureThresholdRule . + */ + name?: string; + + /** + * The number of allowed crossing occurrences in reference to the tolerancePeriod without a consequence being initiated. + */ + numberOfAllowedCrossing?: number; + + /** + * A threshold can be generated in different severity levels. A crossing for each level may require a different condition and possibly trigger a different consequence. + */ + thresholdRuleSeverity?: string; + tolerancePeriod?: Duration; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/quantity.ts b/src/app/openApis/serviceTestManagement/models/quantity.ts new file mode 100644 index 0000000000000000000000000000000000000000..d24c6b3f0543bd1702e42db0f4929b813bd165d8 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/quantity.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * An amount in a given unit + */ +export interface Quantity { + + /** + * Numeric value in a given unit + */ + amount?: number; + + /** + * Unit + */ + units?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/related-party.ts b/src/app/openApis/serviceTestManagement/models/related-party.ts new file mode 100644 index 0000000000000000000000000000000000000000..b80038dfc630f883910eac884192f0eb46d75199 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/related-party.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ + +/** + * RelatedParty reference. A related party defines party or party role linked to a specific entity. + */ +export interface RelatedParty { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + extendedInfo?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Role of the related party. + */ + role?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-ref.ts b/src/app/openApis/serviceTestManagement/models/service-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..f88370a153974f6d6cef61ad3cf32bab9be6017f --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-ref.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ + +/** + * Service reference, for when Service is used by other entities + */ +export interface ServiceRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Id of the service + */ + id: string; + + /** + * Name of the entity + */ + name?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-specification-ref.ts b/src/app/openApis/serviceTestManagement/models/service-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..549a3c1bfda53fea5ce38bdebc24e7aecf8facc2 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-specification-ref.ts @@ -0,0 +1,45 @@ +/* tslint:disable */ +import { TargetServiceSchema } from './target-service-schema'; + +/** + * Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification. + */ +export interface ServiceSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification. + */ + targetServiceSchema?: TargetServiceSchema; + + /** + * Service specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-attribute-value-change-event-payload.ts b/src/app/openApis/serviceTestManagement/models/service-test-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..f9ec7f59973d58ce2f448562c7543e2ecdd94b8a --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-attribute-value-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ServiceTest } from './service-test'; + +/** + * The event data structure + */ +export interface ServiceTestAttributeValueChangeEventPayload { + serviceTest?: ServiceTest; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-attribute-value-change-event.ts b/src/app/openApis/serviceTestManagement/models/service-test-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..4ec62e0e8d7f5262c751a0f9f74141188468199b --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-attribute-value-change-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +import { ServiceTestAttributeValueChangeEventPayload } from './service-test-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface ServiceTestAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ServiceTestAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-create-event-payload.ts b/src/app/openApis/serviceTestManagement/models/service-test-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..36d7ef3028a28c603f117d0b55e7d92c61e15a73 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ServiceTest } from './service-test'; + +/** + * The event data structure + */ +export interface ServiceTestCreateEventPayload { + serviceTest?: ServiceTest; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-create-event.ts b/src/app/openApis/serviceTestManagement/models/service-test-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..6593a7473865b6411072fbda742513adfd51b680 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-create-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +import { ServiceTestCreateEventPayload } from './service-test-create-event-payload'; + +/** + * The notification data structure + */ +export interface ServiceTestCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ServiceTestCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-create.ts b/src/app/openApis/serviceTestManagement/models/service-test-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..84f43c2267365432268a217efbe06d5c92d6cbed --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-create.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { ServiceRef } from './service-ref'; +import { TestMeasureReq } from './test-measure-req'; +import { ServiceTestSpecificationRef } from './service-test-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * A service test is an entity that exists for a controlled test invocation on a service. The service test is executed according to a schedule and contains service test configuration parameters that are to be applied at execution time, and service test measures that result. Skipped properties: id,href + */ +export interface ServiceTestCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + + /** + * List of characteristics with values that define the test run + */ + characteristic?: Array; + + /** + * Description of the service test + */ + description?: string; + + /** + * The end date and time of the service test + */ + endDateTime?: string; + + /** + * An indication of whether the service test is running in "PROACTIVE" or "ONDEMAND" mode + */ + mode?: string; + + /** + * The name of the service test + */ + name?: string; + + /** + * Party related to the test + */ + relatedParty?: Array; + relatedService?: ServiceRef; + + /** + * The start date and time of the service test. + */ + startDateTime?: string; + + /** + * The actual state the service test is in + */ + state?: string; + + /** + * The results of the test in terms of the measured metrics + */ + testMeasure?: Array; + testSpecification?: ServiceTestSpecificationRef; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-delete-event-payload.ts b/src/app/openApis/serviceTestManagement/models/service-test-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..5e97865cf40827d589c0ee48ab1ec545dfb1025d --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ServiceTest } from './service-test'; + +/** + * The event data structure + */ +export interface ServiceTestDeleteEventPayload { + serviceTest?: ServiceTest; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-delete-event.ts b/src/app/openApis/serviceTestManagement/models/service-test-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..c83b6f514b4f673ff85c81e91670d17f670861e2 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-delete-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +import { ServiceTestDeleteEventPayload } from './service-test-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ServiceTestDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ServiceTestDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-spec-relationship-req.ts b/src/app/openApis/serviceTestManagement/models/service-test-spec-relationship-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..6435fb96d32afb5b0e29b2ee8f85ffd913766cee --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-spec-relationship-req.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * A substitution, dependency or exclusivity relationship between/among service specifications. + */ +export interface ServiceTestSpecRelationshipReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Hyperlink reference + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + lifecycleStatusEnum?: 'ACTIVE' | 'IN_DESIGN' | 'IN_STUDY' | 'IN_TEST' | 'LAUNCHED' | 'OBSOLETE' | 'REJECTED' | 'RETIRED'; + + /** + * Name of the related entity. + */ + name?: string; + + /** + * Type of relationship such as substitution, dependency, exclusivity + */ + relationshipType: string; + + /** + * The association role for this service test specification + */ + role?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-spec-relationship-res.ts b/src/app/openApis/serviceTestManagement/models/service-test-spec-relationship-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..eb8595d83db8f7f767290ba66f54a3c61c3551e3 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-spec-relationship-res.ts @@ -0,0 +1,72 @@ +/* tslint:disable */ +import { TimePeriod } from './time-period'; + +/** + * A substitution, dependency or exclusivity relationship between/among service specifications. + */ +export interface ServiceTestSpecRelationshipRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Hyperlink reference + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the related entity. + */ + name?: string; + + /** + * Type of relationship such as substitution, dependency, exclusivity + */ + relationshipType: string; + + /** + * The association role for this service test specification + */ + role?: string; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-attribute-value-change-event-payload.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-attribute-value-change-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..8d8bf1ff70fd1bd8178d9ab65fd53470c387fc0d --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-attribute-value-change-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ServiceTestSpecification } from './service-test-specification'; + +/** + * The event data structure + */ +export interface ServiceTestSpecificationAttributeValueChangeEventPayload { + serviceTestSpecification?: ServiceTestSpecification; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-attribute-value-change-event.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-attribute-value-change-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..542bf681dcb622e570f106e1eb8304cff2541b69 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-attribute-value-change-event.ts @@ -0,0 +1,59 @@ +/* tslint:disable */ +import { ServiceTestSpecificationAttributeValueChangeEventPayload } from './service-test-specification-attribute-value-change-event-payload'; + +/** + * The notification data structure + */ +export interface ServiceTestSpecificationAttributeValueChangeEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ServiceTestSpecificationAttributeValueChangeEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * The path identifying the object field concerned by this notification. + */ + fieldPath?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-create-event-payload.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-create-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..483a53fb6ff73c1f1e04556552e893ae1b8ccb6a --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-create-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ServiceTestSpecification } from './service-test-specification'; + +/** + * The event data structure + */ +export interface ServiceTestSpecificationCreateEventPayload { + serviceTestSpecification?: ServiceTestSpecification; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-create-event.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-create-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..ff8864b3043e3d13b12fa757ccdcaa99deec400a --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-create-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +import { ServiceTestSpecificationCreateEventPayload } from './service-test-specification-create-event-payload'; + +/** + * The notification data structure + */ +export interface ServiceTestSpecificationCreateEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ServiceTestSpecificationCreateEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-create.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-create.ts new file mode 100644 index 0000000000000000000000000000000000000000..48c19bbe45092f82b3c5e7eda2965ac69471d413 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-create.ts @@ -0,0 +1,107 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { ConstraintRef } from './constraint-ref'; +import { EntitySpecificationRelationshipReq } from './entity-specification-relationship-req'; +import { RelatedParty } from './related-party'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ServiceTestSpecRelationshipReq } from './service-test-spec-relationship-req'; +import { CharacteristicSpecificationReq } from './characteristic-specification-req'; +import { TargetEntitySchema } from './target-entity-schema'; +import { TestMeasureDefinition } from './test-measure-definition'; +import { TimePeriod } from './time-period'; + +/** + * The service test specification describes the service test in terms of parameters to be configured and measures to be taken. Skipped properties: id,href + */ +export interface ServiceTestSpecificationCreate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + + /** + * Attachments that may be of relevance to this specification, such as picture, document, media + */ + attachment?: Array; + + /** + * This is a list of constraint references applied to this specification + */ + constraint?: Array; + + /** + * Description of a service test specification. + */ + description?: string; + + /** + * Relationship to another entity specification, might be dependency, substitution, etc. + */ + entitySpecRelationship?: Array; + + /** + * isBundle determines whether an EntitySpecification represents a single EntitySpecification (false), or a bundle of EntitySpecifications (true). + */ + isBundle?: boolean; + + /** + * Date and time of the last update of this REST resource + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status of this catalog item + */ + lifecycleStatus?: string; + + /** + * Name given to this REST resource + */ + name?: string; + + /** + * Parties who manage or otherwise have an interest in this entity specification + */ + relatedParty?: Array; + + /** + * The related service specification may relate to more than one service specification. + */ + relatedServiceSpecification?: Array; + + /** + * A list of service test specifications related to this specification e.g. dependency, substitution + */ + serviceTestSpecRelationship?: Array; + + /** + * List of characteristics that the entity can take + */ + specCharacteristic?: Array; + targetEntitySchema?: TargetEntitySchema; + + /** + * A list of definitions for the measurements for the test defined by this specification + */ + testMeasureDefinition?: Array; + validFor?: TimePeriod; + + /** + * Entity specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-delete-event-payload.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-delete-event-payload.ts new file mode 100644 index 0000000000000000000000000000000000000000..fb324262f441f5802a5095d0eee2595f4bd4e3dc --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-delete-event-payload.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { ServiceTestSpecification } from './service-test-specification'; + +/** + * The event data structure + */ +export interface ServiceTestSpecificationDeleteEventPayload { + serviceTestSpecification?: ServiceTestSpecification; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-delete-event.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-delete-event.ts new file mode 100644 index 0000000000000000000000000000000000000000..af61833d240d68e878c8cb3be57c9d87cf6a72ee --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-delete-event.ts @@ -0,0 +1,54 @@ +/* tslint:disable */ +import { ServiceTestSpecificationDeleteEventPayload } from './service-test-specification-delete-event-payload'; + +/** + * The notification data structure + */ +export interface ServiceTestSpecificationDeleteEvent { + + /** + * The correlation id for this event. + */ + correlationId?: string; + + /** + * An explnatory of the event. + */ + description?: string; + + /** + * The domain of the event. + */ + domain?: string; + event?: ServiceTestSpecificationDeleteEventPayload; + + /** + * The identifier of the notification. + */ + eventId?: string; + + /** + * Time of the event occurrence. + */ + eventTime?: string; + + /** + * The type of the notification. + */ + eventType?: string; + + /** + * A priority. + */ + priority?: string; + + /** + * The time the event occured. + */ + timeOcurred?: string; + + /** + * The title of the event. + */ + title?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-ref.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-ref.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3b5ab7a8d4a32ba2fcf62ced543678d4b76f90c --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-ref.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ + +/** + * The service test specification used by the service test. + */ +export interface ServiceTestSpecificationRef { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + '@referredType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The actual type of the target instance when needed for disambiguation. + */ + atReferredType?: string; + + /** + * Hyperlink to access a service test specification. + */ + href?: string; + id?: string; + uuid?: string; + + /** + * Version of a service test specification + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification-update.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..d0be3a3908b9c86533431107a421e22988748e13 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification-update.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { ConstraintRef } from './constraint-ref'; +import { EntitySpecificationRelationshipReq } from './entity-specification-relationship-req'; +import { RelatedParty } from './related-party'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ServiceTestSpecRelationshipReq } from './service-test-spec-relationship-req'; +import { CharacteristicSpecificationReq } from './characteristic-specification-req'; +import { TargetEntitySchema } from './target-entity-schema'; +import { TestMeasureDefinition } from './test-measure-definition'; + +/** + * The service test specification describes the service test in terms of parameters to be configured and measures to be taken. Skipped properties: id,href,validFor + */ +export interface ServiceTestSpecificationUpdate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + + /** + * Attachments that may be of relevance to this specification, such as picture, document, media + */ + attachment?: Array; + + /** + * This is a list of constraint references applied to this specification + */ + constraint?: Array; + + /** + * Description of a service test specification. + */ + description?: string; + + /** + * Relationship to another entity specification, might be dependency, substitution, etc. + */ + entitySpecRelationship?: Array; + + /** + * isBundle determines whether an EntitySpecification represents a single EntitySpecification (false), or a bundle of EntitySpecifications (true). + */ + isBundle?: boolean; + + /** + * Date and time of the last update of this REST resource + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status of this catalog item + */ + lifecycleStatus?: string; + + /** + * Name given to this REST resource + */ + name?: string; + + /** + * Parties who manage or otherwise have an interest in this entity specification + */ + relatedParty?: Array; + + /** + * The related service specification may relate to more than one service specification. + */ + relatedServiceSpecification?: Array; + + /** + * A list of service test specifications related to this specification e.g. dependency, substitution + */ + serviceTestSpecRelationship?: Array; + + /** + * List of characteristics that the entity can take + */ + specCharacteristic?: Array; + targetEntitySchema?: TargetEntitySchema; + + /** + * A list of definitions for the measurements for the test defined by this specification + */ + testMeasureDefinition?: Array; + + /** + * Entity specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-specification.ts b/src/app/openApis/serviceTestManagement/models/service-test-specification.ts new file mode 100644 index 0000000000000000000000000000000000000000..a78d30e10bea295587d5f9ce2aea335d59ca114b --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-specification.ts @@ -0,0 +1,111 @@ +/* tslint:disable */ +import { AttachmentRefOrValue } from './attachment-ref-or-value'; +import { ConstraintRef } from './constraint-ref'; +import { EntitySpecificationRelationshipRes } from './entity-specification-relationship-res'; +import { RelatedParty } from './related-party'; +import { ServiceSpecificationRef } from './service-specification-ref'; +import { ServiceTestSpecRelationshipRes } from './service-test-spec-relationship-res'; +import { CharacteristicSpecificationRes } from './characteristic-specification-res'; +import { TargetEntitySchema } from './target-entity-schema'; +import { TestMeasureDefinition } from './test-measure-definition'; +import { TimePeriod } from './time-period'; + +/** + * The service test specification describes the service test in terms of parameters to be configured and measures to be taken. + */ +export interface ServiceTestSpecification { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Attachments that may be of relevance to this specification, such as picture, document, media + */ + attachment?: Array; + + /** + * This is a list of constraint references applied to this specification + */ + constraint?: Array; + + /** + * Description of this catalog + */ + description?: string; + + /** + * Relationship to another entity specification, might be dependency, substitution, etc. + */ + entitySpecRelationship?: Array; + + /** + * Unique reference of the entity + */ + href?: string; + id?: string; + + /** + * isBundle determines whether an EntitySpecification represents a single EntitySpecification (false), or a bundle of EntitySpecifications (true). + */ + isBundle?: boolean; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * Name of the entity + */ + name?: string; + + /** + * Parties who manage or otherwise have an interest in this entity specification + */ + relatedParty?: Array; + + /** + * The related service specification may relate to more than one service specification. + */ + relatedServiceSpecification?: Array; + + /** + * A list of service test specifications related to this specification e.g. dependency, substitution + */ + serviceTestSpecRelationship?: Array; + + /** + * List of characteristics that the entity can take + */ + specCharacteristic?: Array; + targetEntitySchema?: TargetEntitySchema; + + /** + * A list of definitions for the measurements for the test defined by this specification + */ + testMeasureDefinition?: Array; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity specification version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test-update.ts b/src/app/openApis/serviceTestManagement/models/service-test-update.ts new file mode 100644 index 0000000000000000000000000000000000000000..5495b215888aab4de42ab5f8c93dd4e734f5c9ef --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test-update.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { ServiceRef } from './service-ref'; +import { TestMeasureReq } from './test-measure-req'; +import { ServiceTestSpecificationRef } from './service-test-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * A service test is an entity that exists for a controlled test invocation on a service. The service test is executed according to a schedule and contains service test configuration parameters that are to be applied at execution time, and service test measures that result. Skipped properties: id,href + */ +export interface ServiceTestUpdate { + '@baseType'?: string; + '@schemaLocation'?: string; + '@type'?: string; + + /** + * When sub-classing, this defines the super-class + */ + atBaseType?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + atSchemaLocation?: string; + + /** + * When sub-classing, this defines the sub-class Extensible name + */ + atType?: string; + + /** + * List of characteristics with values that define the test run + */ + characteristic?: Array; + + /** + * Description of the service test + */ + description?: string; + + /** + * The end date and time of the service test + */ + endDateTime?: string; + + /** + * An indication of whether the service test is running in "PROACTIVE" or "ONDEMAND" mode + */ + mode?: string; + + /** + * The name of the service test + */ + name?: string; + + /** + * Party related to the test + */ + relatedParty?: Array; + relatedService?: ServiceRef; + + /** + * The start date and time of the service test. + */ + startDateTime?: string; + + /** + * The actual state the service test is in + */ + state?: string; + + /** + * The results of the test in terms of the measured metrics + */ + testMeasure?: Array; + testSpecification?: ServiceTestSpecificationRef; + validFor?: TimePeriod; +} diff --git a/src/app/openApis/serviceTestManagement/models/service-test.ts b/src/app/openApis/serviceTestManagement/models/service-test.ts new file mode 100644 index 0000000000000000000000000000000000000000..baed68a938020f29e5cd35718f319fe146f6ea55 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/service-test.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +import { Characteristic } from './characteristic'; +import { RelatedParty } from './related-party'; +import { ServiceRef } from './service-ref'; +import { TestMeasureRes } from './test-measure-res'; +import { ServiceTestSpecificationRef } from './service-test-specification-ref'; +import { TimePeriod } from './time-period'; + +/** + * A service test is an entity that exists for a controlled test invocation on a service. The service test is executed according to a schedule and contains service test configuration parameters that are to be applied at execution time, and service test measures that result. + */ +export interface ServiceTest { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * List of characteristics with values that define the test run + */ + characteristic?: Array; + + /** + * Description of the service test + */ + description?: string; + + /** + * The end date and time of the service test + */ + endDateTime?: string; + + /** + * Hyperlink reference + */ + href?: string; + id?: string; + + /** + * Date and time of the last update + */ + lastUpdate?: string; + + /** + * Used to indicate the current lifecycle status + */ + lifecycleStatus?: string; + + /** + * An indication of whether the service test is running in "PROACTIVE" or "ONDEMAND" mode + */ + mode?: string; + + /** + * The name of the service test + */ + name?: string; + + /** + * Party related to the test + */ + relatedParty?: Array; + relatedService?: ServiceRef; + + /** + * The start date and time of the service test. + */ + startDateTime?: string; + + /** + * The actual state the service test is in + */ + state?: string; + + /** + * The results of the test in terms of the measured metrics + */ + testMeasure?: Array; + testSpecification?: ServiceTestSpecificationRef; + uuid?: string; + + /** + * The period for which the entity is valid + */ + validFor?: TimePeriod; + + /** + * Entity version + */ + version?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/target-entity-schema.ts b/src/app/openApis/serviceTestManagement/models/target-entity-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..a1988b5dae0a0e10847e8e66aeff255d91ffecfd --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/target-entity-schema.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target entity which is described by a specification + */ +export interface TargetEntitySchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * This field provides a link to the schema describing the target entity + */ + atSchemaLocation: string; + + /** + * Class type of the target entity + */ + atType: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/target-service-schema.ts b/src/app/openApis/serviceTestManagement/models/target-service-schema.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4887bf9c9dd0e25c992a00348c805792cf20349 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/target-service-schema.ts @@ -0,0 +1,24 @@ +/* tslint:disable */ + +/** + * The reference object to the schema and type of target service which is described by service specification + */ +export interface TargetServiceSchema { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * Unique reference of the entity + */ + href?: string; + uuid?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/test-measure-definition.ts b/src/app/openApis/serviceTestManagement/models/test-measure-definition.ts new file mode 100644 index 0000000000000000000000000000000000000000..fd4b44ba677af430d011dd8d19459f532e884894 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/test-measure-definition.ts @@ -0,0 +1,74 @@ +/* tslint:disable */ +import { Duration } from './duration'; +import { MetricDefMeasureThresholdRule } from './metric-def-measure-threshold-rule'; +import { TimePeriod } from './time-period'; + +/** + * A TestMeasureDefinition specifies a measure of a specific aspect of a product, service, or resource test, such as lost packets or connectivity status + */ +export interface TestMeasureDefinition { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The frequency of capture for the metric. Note: This may be replaced by a set of entities similar to the Performance Monitoring + */ + captureFrequency?: string; + + /** + * The method used to capture the Metric. Note: This may be replaced by a set of entities similar to the Performance Monitoring + */ + captureMethod?: string; + capturePeriod?: Duration; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Brief description of the metric + */ + metricDescription?: string; + + /** + * Hyperlink to access a metric for detail information + */ + metricHref?: string; + + /** + * The name of a metric that in the test measure + */ + metricName?: string; + + /** + * The name of the TestMeasureDefinition + */ + name?: string; + + /** + * The rule(s) associated with the measure threshold + */ + thresholdRule?: Array; + + /** + * Name of a service test specification + */ + unitOfMeasure?: string; + uuid?: string; + validFor?: TimePeriod; + + /** + * A kind of value that the Metric value can take on, such as numeric, text, and so forth + */ + valueType?: string; +} diff --git a/src/app/openApis/serviceTestManagement/models/test-measure-req.ts b/src/app/openApis/serviceTestManagement/models/test-measure-req.ts new file mode 100644 index 0000000000000000000000000000000000000000..dbdaa82b02ab587a63fda5ac730064c34584dc4b --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/test-measure-req.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +import { MeasureThresholdRuleViolation } from './measure-threshold-rule-violation'; +import { Characteristic } from './characteristic'; + +/** + * A TestMeasure specifies a measure of a specific aspect of a product, service, or resource test, such as lost packets or connectivity status + */ +export interface TestMeasureReq { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The number of digits of accuracy captured for associated Metrics + */ + accuracy?: number; + + /** + * The date and time that the metric was captured + */ + captureDateTime?: string; + + /** + * The method used to capture the Metrics (This may be replaced by a set of entities similar to the Performance Monitoring Ref) + */ + captureMethod?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Brief description of the metric + */ + metricDescription?: string; + + /** + * Hyperlink to access a metric for detail information + */ + metricHref?: string; + + /** + * The name of the metric + */ + metricName?: string; + + /** + * A list of rules that were violated in this test measure + */ + ruleViolation?: Array; + + /** + * The unit of measure for the metric values, such as meters, cubic yards, kilograms [ISO 1000]. + */ + unitOfMeasure?: string; + uuid?: string; + value?: Characteristic; +} diff --git a/src/app/openApis/serviceTestManagement/models/test-measure-res.ts b/src/app/openApis/serviceTestManagement/models/test-measure-res.ts new file mode 100644 index 0000000000000000000000000000000000000000..70109d368cff257dc373353136cc8ae067345ca4 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/test-measure-res.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +import { MeasureThresholdRuleViolation } from './measure-threshold-rule-violation'; +import { Characteristic } from './characteristic'; + +/** + * A TestMeasure specifies a measure of a specific aspect of a product, service, or resource test, such as lost packets or connectivity status + */ +export interface TestMeasureRes { + + /** + * When sub-classing, this defines the super-class + */ + '@baseType'?: string; + + /** + * A URI to a JSON-Schema file that defines additional attributes and relationships + */ + '@schemaLocation'?: string; + '@type'?: string; + + /** + * The number of digits of accuracy captured for associated Metrics + */ + accuracy?: number; + + /** + * The date and time that the metric was captured + */ + captureDateTime?: string; + + /** + * The method used to capture the Metrics (This may be replaced by a set of entities similar to the Performance Monitoring Ref) + */ + captureMethod?: string; + + /** + * Unique reference of the entity + */ + href?: string; + + /** + * Brief description of the metric + */ + metricDescription?: string; + + /** + * Hyperlink to access a metric for detail information + */ + metricHref?: string; + + /** + * The name of the metric + */ + metricName?: string; + + /** + * A list of rules that were violated in this test measure + */ + ruleViolation?: Array; + + /** + * The unit of measure for the metric values, such as meters, cubic yards, kilograms [ISO 1000]. + */ + unitOfMeasure?: string; + uuid?: string; + value?: Characteristic; +} diff --git a/src/app/openApis/serviceTestManagement/models/time-period.ts b/src/app/openApis/serviceTestManagement/models/time-period.ts new file mode 100644 index 0000000000000000000000000000000000000000..55036db458de512f5d73fb81fa5dd86ac44c5e29 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/models/time-period.ts @@ -0,0 +1,17 @@ +/* tslint:disable */ + +/** + * A period of time, either as a deadline (endDateTime only) a startDateTime only, or both + */ +export interface TimePeriod { + + /** + * End of the time period, using IETC-RFC-3339 format + */ + endDateTime?: string; + + /** + * Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end + */ + startDateTime?: string; +} diff --git a/src/app/openApis/serviceTestManagement/services.ts b/src/app/openApis/serviceTestManagement/services.ts new file mode 100644 index 0000000000000000000000000000000000000000..5ea741ba674f3a5535b9eb5afd686b4d8e59fcf3 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/services.ts @@ -0,0 +1,4 @@ +export { EventsSubscriptionService } from './services/events-subscription.service'; +export { NotificationListenersClientSideService } from './services/notification-listeners-client-side.service'; +export { ServiceTestService } from './services/service-test.service'; +export { ServiceTestSpecificationService } from './services/service-test-specification.service'; diff --git a/src/app/openApis/serviceTestManagement/services/events-subscription.service.ts b/src/app/openApis/serviceTestManagement/services/events-subscription.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..267df34e96c9cf280c7b10f2bf412dce03ffe59c --- /dev/null +++ b/src/app/openApis/serviceTestManagement/services/events-subscription.service.ts @@ -0,0 +1,112 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { EventSubscriptionInput } from '../models/event-subscription-input'; +@Injectable({ + providedIn: 'root', +}) +class EventsSubscriptionService extends __BaseService { + static readonly registerListener10Path = '/serviceTestManagement/v4/hub'; + static readonly unregisterListener10Path = '/serviceTestManagement/v4/hub/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener10Response(body: EventSubscriptionInput): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/hub`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Register a listener + * + * Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param body Data containing the callback endpoint to deliver the information + * @return OK or Subscribed + */ + registerListener10(body: EventSubscriptionInput): __Observable { + return this.registerListener10Response(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener10Response(id: string): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceTestManagement/v4/hub/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Unregister a listener + * + * Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics. + * @param id The id of the registered listener + */ + unregisterListener10(id: string): __Observable { + return this.unregisterListener10Response(id).pipe( + __map(_r => _r.body as null) + ); + } +} + +module EventsSubscriptionService { +} + +export { EventsSubscriptionService } diff --git a/src/app/openApis/serviceTestManagement/services/notification-listeners-client-side.service.ts b/src/app/openApis/serviceTestManagement/services/notification-listeners-client-side.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e6f652764502ef054095c1cb46acc52fd642aca --- /dev/null +++ b/src/app/openApis/serviceTestManagement/services/notification-listeners-client-side.service.ts @@ -0,0 +1,291 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { EventSubscription } from '../models/event-subscription'; +import { ServiceTestAttributeValueChangeEvent } from '../models/service-test-attribute-value-change-event'; +import { ServiceTestCreateEvent } from '../models/service-test-create-event'; +import { ServiceTestDeleteEvent } from '../models/service-test-delete-event'; +import { ServiceTestSpecificationAttributeValueChangeEvent } from '../models/service-test-specification-attribute-value-change-event'; +import { ServiceTestSpecificationCreateEvent } from '../models/service-test-specification-create-event'; +import { ServiceTestSpecificationDeleteEvent } from '../models/service-test-specification-delete-event'; +@Injectable({ + providedIn: 'root', +}) +class NotificationListenersClientSideService extends __BaseService { + static readonly listenToServiceTestAttributeValueChangeEventPath = '/serviceTestManagement/v4/listener/serviceTestAttributeValueChangeEvent'; + static readonly listenToServiceTestCreateEventPath = '/serviceTestManagement/v4/listener/serviceTestCreateEvent'; + static readonly listenToServiceTestDeleteEventPath = '/serviceTestManagement/v4/listener/serviceTestDeleteEvent'; + static readonly listenToServiceTestSpecificationAttributeValueChangeEventPath = '/serviceTestManagement/v4/listener/serviceTestSpecificationAttributeValueChangeEvent'; + static readonly listenToServiceTestSpecificationCreateEventPath = '/serviceTestManagement/v4/listener/serviceTestSpecificationCreateEvent'; + static readonly listenToServiceTestSpecificationDeleteEventPath = '/serviceTestManagement/v4/listener/serviceTestSpecificationDeleteEvent'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * Client listener for entity ServiceTestAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ServiceTestAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestAttributeValueChangeEventResponse(body: ServiceTestAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/listener/serviceTestAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceTestAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ServiceTestAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestAttributeValueChangeEvent(body: ServiceTestAttributeValueChangeEvent): __Observable { + return this.listenToServiceTestAttributeValueChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceTestCreateEvent + * + * Example of a client listener for receiving the notification ServiceTestCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestCreateEventResponse(body: ServiceTestCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/listener/serviceTestCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceTestCreateEvent + * + * Example of a client listener for receiving the notification ServiceTestCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestCreateEvent(body: ServiceTestCreateEvent): __Observable { + return this.listenToServiceTestCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceTestDeleteEvent + * + * Example of a client listener for receiving the notification ServiceTestDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestDeleteEventResponse(body: ServiceTestDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/listener/serviceTestDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceTestDeleteEvent + * + * Example of a client listener for receiving the notification ServiceTestDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestDeleteEvent(body: ServiceTestDeleteEvent): __Observable { + return this.listenToServiceTestDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceTestSpecificationAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ServiceTestSpecificationAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestSpecificationAttributeValueChangeEventResponse(body: ServiceTestSpecificationAttributeValueChangeEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/listener/serviceTestSpecificationAttributeValueChangeEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceTestSpecificationAttributeValueChangeEvent + * + * Example of a client listener for receiving the notification ServiceTestSpecificationAttributeValueChangeEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestSpecificationAttributeValueChangeEvent(body: ServiceTestSpecificationAttributeValueChangeEvent): __Observable { + return this.listenToServiceTestSpecificationAttributeValueChangeEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceTestSpecificationCreateEvent + * + * Example of a client listener for receiving the notification ServiceTestSpecificationCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestSpecificationCreateEventResponse(body: ServiceTestSpecificationCreateEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/listener/serviceTestSpecificationCreateEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceTestSpecificationCreateEvent + * + * Example of a client listener for receiving the notification ServiceTestSpecificationCreateEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestSpecificationCreateEvent(body: ServiceTestSpecificationCreateEvent): __Observable { + return this.listenToServiceTestSpecificationCreateEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } + + /** + * Client listener for entity ServiceTestSpecificationDeleteEvent + * + * Example of a client listener for receiving the notification ServiceTestSpecificationDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestSpecificationDeleteEventResponse(body: ServiceTestSpecificationDeleteEvent): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = body; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/listener/serviceTestSpecificationDeleteEvent`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Client listener for entity ServiceTestSpecificationDeleteEvent + * + * Example of a client listener for receiving the notification ServiceTestSpecificationDeleteEvent + * @param body The event data + * @return OK or Notified + */ + listenToServiceTestSpecificationDeleteEvent(body: ServiceTestSpecificationDeleteEvent): __Observable { + return this.listenToServiceTestSpecificationDeleteEventResponse(body).pipe( + __map(_r => _r.body as EventSubscription | EventSubscription) + ); + } +} + +module NotificationListenersClientSideService { +} + +export { NotificationListenersClientSideService } diff --git a/src/app/openApis/serviceTestManagement/services/service-test-specification.service.ts b/src/app/openApis/serviceTestManagement/services/service-test-specification.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..17f6618e2f6b3cd9ec5f9b9ca45ae743a8cbc92a --- /dev/null +++ b/src/app/openApis/serviceTestManagement/services/service-test-specification.service.ts @@ -0,0 +1,572 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ServiceTestSpecification } from '../models/service-test-specification'; +import { ServiceTestSpecificationCreate } from '../models/service-test-specification-create'; +import { ServiceTestSpecificationUpdate } from '../models/service-test-specification-update'; +import { Attachment } from '../models/attachment'; +import { ByteArrayResource } from '../models/byte-array-resource'; +@Injectable({ + providedIn: 'root', +}) +class ServiceTestSpecificationService extends __BaseService { + static readonly listServiceTestSpecificationPath = '/serviceTestManagement/v4/serviceTestSpecification'; + static readonly createServiceTestSpecificationPath = '/serviceTestManagement/v4/serviceTestSpecification'; + static readonly retrieveServiceTestSpecificationPath = '/serviceTestManagement/v4/serviceTestSpecification/{id}'; + static readonly deleteServiceTestSpecificationPath = '/serviceTestManagement/v4/serviceTestSpecification/{id}'; + static readonly patchServiceTestSpecificationPath = '/serviceTestManagement/v4/serviceTestSpecification/{id}'; + static readonly addAttachmentToServiceTestSpecificationPath = '/serviceTestManagement/v4/serviceTestSpecification/{id}/attachment'; + static readonly getAttachment2Path = '/serviceTestManagement/v4/serviceTestSpecification/{id}/attachment/{attid}'; + static readonly getAttachmentWithFilename2Path = '/serviceTestManagement/v4/serviceTestSpecification/{id}/attachment/{attid}/{afilename}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ServiceTestSpecification objects + * + * This operation list or find ServiceTestSpecification entities + * @param params The `ServiceTestSpecificationService.ListServiceTestSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceTestSpecificationResponse(params: ServiceTestSpecificationService.ListServiceTestSpecificationParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceTestManagement/v4/serviceTestSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ServiceTestSpecification objects + * + * This operation list or find ServiceTestSpecification entities + * @param params The `ServiceTestSpecificationService.ListServiceTestSpecificationParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceTestSpecification(params: ServiceTestSpecificationService.ListServiceTestSpecificationParams): __Observable> { + return this.listServiceTestSpecificationResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ServiceTestSpecification + * + * This operation creates a ServiceTestSpecification entity. + * @param serviceSpecification The ServiceTestSpecification to be created + * @return OK or Created + */ + createServiceTestSpecificationResponse(serviceSpecification: ServiceTestSpecificationCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = serviceSpecification; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/serviceTestSpecification`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ServiceTestSpecification + * + * This operation creates a ServiceTestSpecification entity. + * @param serviceSpecification The ServiceTestSpecification to be created + * @return OK or Created + */ + createServiceTestSpecification(serviceSpecification: ServiceTestSpecificationCreate): __Observable { + return this.createServiceTestSpecificationResponse(serviceSpecification).pipe( + __map(_r => _r.body as ServiceTestSpecification | ServiceTestSpecification) + ); + } + + /** + * Retrieves a ServiceTestSpecification by ID + * + * This operation retrieves a ServiceTestSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceTestSpecificationService.RetrieveServiceTestSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceTestSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceTestSpecificationResponse(params: ServiceTestSpecificationService.RetrieveServiceTestSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceTestManagement/v4/serviceTestSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ServiceTestSpecification by ID + * + * This operation retrieves a ServiceTestSpecification entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceTestSpecificationService.RetrieveServiceTestSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceTestSpecification + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceTestSpecification(params: ServiceTestSpecificationService.RetrieveServiceTestSpecificationParams): __Observable { + return this.retrieveServiceTestSpecificationResponse(params).pipe( + __map(_r => _r.body as ServiceTestSpecification) + ); + } + + /** + * Deletes a ServiceTestSpecification + * + * This operation deletes a ServiceTestSpecification entity. + * @param id Identifier of the ServiceTestSpecification + * @return Deleted + */ + deleteServiceTestSpecificationResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceTestManagement/v4/serviceTestSpecification/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ServiceTestSpecification + * + * This operation deletes a ServiceTestSpecification entity. + * @param id Identifier of the ServiceTestSpecification + * @return Deleted + */ + deleteServiceTestSpecification(id: string): __Observable<{}> { + return this.deleteServiceTestSpecificationResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ServiceTestSpecification + * + * This operation updates partially a ServiceTestSpecification entity. + * @param params The `ServiceTestSpecificationService.PatchServiceTestSpecificationParams` containing the following parameters: + * + * - `serviceSpecification`: The ServiceTestSpecification to be updated + * + * - `id`: Identifier of the ServiceTestSpecification + * + * @return Updated + */ + patchServiceTestSpecificationResponse(params: ServiceTestSpecificationService.PatchServiceTestSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.serviceSpecification; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/serviceTestManagement/v4/serviceTestSpecification/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ServiceTestSpecification + * + * This operation updates partially a ServiceTestSpecification entity. + * @param params The `ServiceTestSpecificationService.PatchServiceTestSpecificationParams` containing the following parameters: + * + * - `serviceSpecification`: The ServiceTestSpecification to be updated + * + * - `id`: Identifier of the ServiceTestSpecification + * + * @return Updated + */ + patchServiceTestSpecification(params: ServiceTestSpecificationService.PatchServiceTestSpecificationParams): __Observable { + return this.patchServiceTestSpecificationResponse(params).pipe( + __map(_r => _r.body as ServiceTestSpecification) + ); + } + + /** + * Adds an attachment to a ServiceTestSpecification + * + * This operation adds an attachment to a ServiceTestSpecification and updates partially a ServiceTestSpecification entity + * @param params The `ServiceTestSpecificationService.AddAttachmentToServiceTestSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceTestSpecification + * + * - `afile`: The Attachment file to be added + * + * @return Success + */ + addAttachmentToServiceTestSpecificationResponse(params: ServiceTestSpecificationService.AddAttachmentToServiceTestSpecificationParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + // custom_code + let __formData = new FormData(); + __body = __formData; + + if (params.afile != null) { __formData.append('afile', params.afile as string | Blob);} + // /custom_code + + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/serviceTestSpecification/${encodeURIComponent(params.id)}/attachment`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Adds an attachment to a ServiceTestSpecification + * + * This operation adds an attachment to a ServiceTestSpecification and updates partially a ServiceTestSpecification entity + * @param params The `ServiceTestSpecificationService.AddAttachmentToServiceTestSpecificationParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceTestSpecification + * + * - `afile`: The Attachment file to be added + * + * @return Success + */ + addAttachmentToServiceTestSpecification(params: ServiceTestSpecificationService.AddAttachmentToServiceTestSpecificationParams): __Observable { + return this.addAttachmentToServiceTestSpecificationResponse(params).pipe( + __map(_r => _r.body as Attachment) + ); + } + + /** + * Get an attachment + * + * This operation gets an attachment + * @param params The `ServiceTestSpecificationService.GetAttachment2Params` containing the following parameters: + * + * - `id`: Identifier of the serviceTestSpecification + * + * - `attid`: Identifier of the Attachment + * + * @return Success + */ + getAttachment2Response(params: ServiceTestSpecificationService.GetAttachment2Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceTestManagement/v4/serviceTestSpecification/${encodeURIComponent(params.id)}/attachment/${encodeURIComponent(params.attid)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'blob' + }); + // custom_code: responseType to 'blob' + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Get an attachment + * + * This operation gets an attachment + * @param params The `ServiceTestSpecificationService.GetAttachment2Params` containing the following parameters: + * + * - `id`: Identifier of the serviceTestSpecification + * + * - `attid`: Identifier of the Attachment + * + * @return Success + */ + getAttachment2(params: ServiceTestSpecificationService.GetAttachment2Params): __Observable { + return this.getAttachment2Response(params).pipe( + __map(_r => _r.body as Blob) + ); + + // custom_code: changed response type to 'blob' + } + + /** + * Get an attachment with filename + * + * This operation gets an attachment + * @param params The `ServiceTestSpecificationService.GetAttachmentWithFilename2Params` containing the following parameters: + * + * - `id`: Identifier of the serviceTestSpecification + * + * - `attid`: Identifier of the Attachment + * + * - `afilename`: Identifier of the Filename + * + * @return Success + */ + getAttachmentWithFilename2Response(params: ServiceTestSpecificationService.GetAttachmentWithFilename2Params): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + + + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceTestManagement/v4/serviceTestSpecification/${encodeURIComponent(params.id)}/attachment/${encodeURIComponent(params.attid)}/${encodeURIComponent(params.afilename)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'blob' + }); + + // custom_code: changed response type to 'blob' + + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Get an attachment with filename + * + * This operation gets an attachment + * @param params The `ServiceTestSpecificationService.GetAttachmentWithFilename2Params` containing the following parameters: + * + * - `id`: Identifier of the serviceTestSpecification + * + * - `attid`: Identifier of the Attachment + * + * - `afilename`: Identifier of the Filename + * + * @return Success + */ + getAttachmentWithFilename2(params: ServiceTestSpecificationService.GetAttachmentWithFilename2Params): __Observable { + return this.getAttachmentWithFilename2Response(params).pipe( + __map(_r => _r.body as ByteArrayResource) + ); + } +} + +module ServiceTestSpecificationService { + + /** + * Parameters for listServiceTestSpecification + */ + export interface ListServiceTestSpecificationParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveServiceTestSpecification + */ + export interface RetrieveServiceTestSpecificationParams { + + /** + * Identifier of the ServiceTestSpecification + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchServiceTestSpecification + */ + export interface PatchServiceTestSpecificationParams { + + /** + * The ServiceTestSpecification to be updated + */ + serviceSpecification: ServiceTestSpecificationUpdate; + + /** + * Identifier of the ServiceTestSpecification + */ + id: string; + } + + /** + * Parameters for addAttachmentToServiceTestSpecification + */ + export interface AddAttachmentToServiceTestSpecificationParams { + + /** + * Identifier of the ServiceTestSpecification + */ + id: string; + + /** + * The Attachment file to be added + */ + afile: Blob; + + // custom_code: changed response type to 'blob' + + } + + /** + * Parameters for getAttachment2 + */ + export interface GetAttachment2Params { + + /** + * Identifier of the serviceTestSpecification + */ + id: string; + + /** + * Identifier of the Attachment + */ + attid: string; + } + + /** + * Parameters for getAttachmentWithFilename2 + */ + export interface GetAttachmentWithFilename2Params { + + /** + * Identifier of the serviceTestSpecification + */ + id: string; + + /** + * Identifier of the Attachment + */ + attid: string; + + /** + * Identifier of the Filename + */ + afilename: string; + } +} + +export { ServiceTestSpecificationService } diff --git a/src/app/openApis/serviceTestManagement/services/service-test.service.ts b/src/app/openApis/serviceTestManagement/services/service-test.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..569176525bc38a671eedf7ba14a72f1dd681a6d1 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/services/service-test.service.ts @@ -0,0 +1,335 @@ +/* tslint:disable */ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http'; +import { BaseService as __BaseService } from '../base-service'; +import { ApiConfiguration as __Configuration } from '../api-configuration'; +import { StrictHttpResponse as __StrictHttpResponse } from '../strict-http-response'; +import { Observable as __Observable } from 'rxjs'; +import { map as __map, filter as __filter } from 'rxjs/operators'; + +import { ServiceTest } from '../models/service-test'; +import { ServiceTestCreate } from '../models/service-test-create'; +import { ServiceTestUpdate } from '../models/service-test-update'; +@Injectable({ + providedIn: 'root', +}) +class ServiceTestService extends __BaseService { + static readonly listServiceTestPath = '/serviceTestManagement/v4/serviceTest'; + static readonly createServiceTestPath = '/serviceTestManagement/v4/serviceTest'; + static readonly retrieveServiceTestPath = '/serviceTestManagement/v4/serviceTest/{id}'; + static readonly deleteServiceTestPath = '/serviceTestManagement/v4/serviceTest/{id}'; + static readonly patchServiceTestPath = '/serviceTestManagement/v4/serviceTest/{id}'; + + constructor( + config: __Configuration, + http: HttpClient + ) { + super(config, http); + } + + /** + * List or find ServiceTest objects + * + * This operation list or find ServiceTest entities + * @param params The `ServiceTestService.ListServiceTestParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceTestResponse(params: ServiceTestService.ListServiceTestParams): __Observable<__StrictHttpResponse>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + if (params.offset != null) __params = __params.set('offset', params.offset.toString()); + if (params.limit != null) __params = __params.set('limit', params.limit.toString()); + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceTestManagement/v4/serviceTest`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse>; + }) + ); + } + /** + * List or find ServiceTest objects + * + * This operation list or find ServiceTest entities + * @param params The `ServiceTestService.ListServiceTestParams` containing the following parameters: + * + * - `offset`: Requested index for start of resources to be provided in response + * + * - `limit`: Requested number of resources to be provided in response + * + * - `fields`: Comma-separated properties to be provided in response + * + * @return Success + */ + listServiceTest(params: ServiceTestService.ListServiceTestParams): __Observable> { + return this.listServiceTestResponse(params).pipe( + __map(_r => _r.body as Array) + ); + } + + /** + * Creates a ServiceTest + * + * This operation creates a ServiceTest entity. + * @param serviceTest The ServiceTest to be created + * @return OK or Created + */ + createServiceTestResponse(serviceTest: ServiceTestCreate): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = serviceTest; + let req = new HttpRequest( + 'POST', + this.rootUrl + `/serviceTestManagement/v4/serviceTest`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Creates a ServiceTest + * + * This operation creates a ServiceTest entity. + * @param serviceTest The ServiceTest to be created + * @return OK or Created + */ + createServiceTest(serviceTest: ServiceTestCreate): __Observable { + return this.createServiceTestResponse(serviceTest).pipe( + __map(_r => _r.body as ServiceTest | ServiceTest) + ); + } + + /** + * Retrieves a ServiceTest by ID + * + * This operation retrieves a ServiceTest entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceTestService.RetrieveServiceTestParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceTest + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceTestResponse(params: ServiceTestService.RetrieveServiceTestParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + if (params.fields != null) __params = __params.set('fields', params.fields.toString()); + let req = new HttpRequest( + 'GET', + this.rootUrl + `/serviceTestManagement/v4/serviceTest/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Retrieves a ServiceTest by ID + * + * This operation retrieves a ServiceTest entity. Attribute selection is enabled for all first level attributes. + * @param params The `ServiceTestService.RetrieveServiceTestParams` containing the following parameters: + * + * - `id`: Identifier of the ServiceTest + * + * - `fields`: Comma-separated properties to provide in response + * + * @return Success + */ + retrieveServiceTest(params: ServiceTestService.RetrieveServiceTestParams): __Observable { + return this.retrieveServiceTestResponse(params).pipe( + __map(_r => _r.body as ServiceTest) + ); + } + + /** + * Deletes a ServiceTest + * + * This operation deletes a ServiceTest entity. + * @param id Identifier of the ServiceTest + * @return Deleted + */ + deleteServiceTestResponse(id: string): __Observable<__StrictHttpResponse<{}>> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + + let req = new HttpRequest( + 'DELETE', + this.rootUrl + `/serviceTestManagement/v4/serviceTest/${encodeURIComponent(id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse<{}>; + }) + ); + } + /** + * Deletes a ServiceTest + * + * This operation deletes a ServiceTest entity. + * @param id Identifier of the ServiceTest + * @return Deleted + */ + deleteServiceTest(id: string): __Observable<{}> { + return this.deleteServiceTestResponse(id).pipe( + __map(_r => _r.body as {}) + ); + } + + /** + * Updates partially a ServiceTest + * + * This operation updates partially a ServiceTest entity. + * @param params The `ServiceTestService.PatchServiceTestParams` containing the following parameters: + * + * - `serviceSpecification`: The ServiceTest to be updated + * + * - `id`: Identifier of the ServiceTest + * + * @return Updated + */ + patchServiceTestResponse(params: ServiceTestService.PatchServiceTestParams): __Observable<__StrictHttpResponse> { + let __params = this.newParams(); + let __headers = new HttpHeaders(); + let __body: any = null; + __body = params.serviceSpecification; + + let req = new HttpRequest( + 'PATCH', + this.rootUrl + `/serviceTestManagement/v4/serviceTest/${encodeURIComponent(params.id)}`, + __body, + { + headers: __headers, + params: __params, + responseType: 'json' + }); + + return this.http.request(req).pipe( + __filter(_r => _r instanceof HttpResponse), + __map((_r) => { + return _r as __StrictHttpResponse; + }) + ); + } + /** + * Updates partially a ServiceTest + * + * This operation updates partially a ServiceTest entity. + * @param params The `ServiceTestService.PatchServiceTestParams` containing the following parameters: + * + * - `serviceSpecification`: The ServiceTest to be updated + * + * - `id`: Identifier of the ServiceTest + * + * @return Updated + */ + patchServiceTest(params: ServiceTestService.PatchServiceTestParams): __Observable { + return this.patchServiceTestResponse(params).pipe( + __map(_r => _r.body as ServiceTest) + ); + } +} + +module ServiceTestService { + + /** + * Parameters for listServiceTest + */ + export interface ListServiceTestParams { + + /** + * Requested index for start of resources to be provided in response + */ + offset?: number; + + /** + * Requested number of resources to be provided in response + */ + limit?: number; + + /** + * Comma-separated properties to be provided in response + */ + fields?: string; + } + + /** + * Parameters for retrieveServiceTest + */ + export interface RetrieveServiceTestParams { + + /** + * Identifier of the ServiceTest + */ + id: string; + + /** + * Comma-separated properties to provide in response + */ + fields?: string; + } + + /** + * Parameters for patchServiceTest + */ + export interface PatchServiceTestParams { + + /** + * The ServiceTest to be updated + */ + serviceSpecification: ServiceTestUpdate; + + /** + * Identifier of the ServiceTest + */ + id: string; + } +} + +export { ServiceTestService } diff --git a/src/app/openApis/serviceTestManagement/strict-http-response.ts b/src/app/openApis/serviceTestManagement/strict-http-response.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebdeada77dcb0e78471b8907e72ad46d59376fc1 --- /dev/null +++ b/src/app/openApis/serviceTestManagement/strict-http-response.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { HttpResponse } from '@angular/common/http'; + +/** + * Constrains the http to not expand the response type with `| null` + */ +export type StrictHttpResponse = HttpResponse & { + readonly body: T; +} diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.html b/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..07b17e6cd28452bc5ee569ca8a8d5ba2822c1674 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete catalog {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.scss b/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..cb87aaf823f5621ab6540f05028bb3a62e8b9523 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteProductCatalogsComponent } from './delete-product-catalogs.component'; + +describe('DeleteProductCatalogsComponent', () => { + let component: DeleteProductCatalogsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DeleteProductCatalogsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteProductCatalogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.ts b/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..e7913200bdb72abae3d9126c222e13a8d2a83079 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-catalogs/delete-product-catalogs.component.ts @@ -0,0 +1,35 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Catalog } from 'src/app/openApis/productCatalogManagement/models'; +import { CatalogService } from 'src/app/openApis/productCatalogManagement/services'; + +@Component({ + selector: 'app-delete-product-catalogs', + templateUrl: './delete-product-catalogs.component.html', + styleUrls: ['./delete-product-catalogs.component.scss'] +}) +export class DeleteProductCatalogsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Catalog, + private dialogRef: MatDialogRef, + private catalogService: CatalogService + + ) { } + + ngOnInit(): void { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.catalogService.deleteCatalog(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.html b/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..a158f52a265b3860c9ead8237346d37c33fb8230 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete category {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.scss b/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..7a00afe90bfc7919dc9207267070b045a26047f2 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteProductCategoriesComponent } from './delete-product-categories.component'; + +describe('DeleteProductCategoriesComponent', () => { + let component: DeleteProductCategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DeleteProductCategoriesComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteProductCategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.ts b/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c00a8100098503243f969cf65846acb12cce6fea --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-categories/delete-product-categories.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Category } from 'src/app/openApis/productCatalogManagement/models'; +import { CategoryService } from 'src/app/openApis/productCatalogManagement/services'; + +@Component({ + selector: 'app-delete-product-categories', + templateUrl: './delete-product-categories.component.html', + styleUrls: ['./delete-product-categories.component.scss'] +}) +export class DeleteProductCategoriesComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Category, + private dialogRef: MatDialogRef, + private categoryService: CategoryService + ) { } + + ngOnInit(): void { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.categoryService.deleteCategory(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.html b/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.html new file mode 100644 index 0000000000000000000000000000000000000000..760219175d61c65554f57f3907c98e8513f70b77 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete offering {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.scss b/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d00254eee2a356c76138cf2dc5ac75eaa71ac69b --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteProductOfferingComponent } from './delete-product-offering.component'; + +describe('DeleteProductOfferingComponent', () => { + let component: DeleteProductOfferingComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DeleteProductOfferingComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteProductOfferingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.ts b/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..714399852347857c56e34ffc2a2da3483e1564f8 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-offering/delete-product-offering.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ProductOffering } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; + +@Component({ + selector: 'app-delete-product-offering', + templateUrl: './delete-product-offering.component.html', + styleUrls: ['./delete-product-offering.component.scss'] +}) +export class DeleteProductOfferingComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ProductOffering, + private dialogRef: MatDialogRef, + private offeringService: ProductOfferingService + + ) { } + + ngOnInit(): void { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.offeringService.deleteProductOffering(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + + +} diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.html b/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b008a3d155b2fc75a19f80ab359fa1c27cde41b0 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete specification {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.scss b/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..271936e407eef5eeef0d2eb8622a167744f1bcf4 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteProductSpecsComponent } from './delete-product-specs.component'; + +describe('DeleteProductSpecsComponent', () => { + let component: DeleteProductSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DeleteProductSpecsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteProductSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.ts b/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..f26aa8a84922ecce298329ff7a9e8dd82b0dd599 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/delete-product-specs/delete-product-specs.component.ts @@ -0,0 +1,35 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ProductSpecification } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; + +@Component({ + selector: 'app-delete-product-specs', + templateUrl: './delete-product-specs.component.html', + styleUrls: ['./delete-product-specs.component.scss'] +}) +export class DeleteProductSpecsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ProductSpecification, + private dialogRef: MatDialogRef, + private specService: ProductSpecificationService + ) { } + + ngOnInit(): void { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.specService.deleteProductSpecification(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..6b77845df275be3d1d5c750f877b1360d427e2a2 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.html @@ -0,0 +1,152 @@ +
+
+
+

Product Catalog with id #{{catalogID}} is not found

+
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+

Product Catalog Designer

+ +

Design a new Product Catalog

+ +

Edit the design of {{catalog?.name}} Product Catalog

+ +
+ Last updated at + {{catalog?.lastUpdate | date:'short'}} (Local Time) +
+ +
+ +
+
+
+ + +
+ + + + + Main Product Catalog properties + + + +
+ + + Name + + + + + Version + + + + + Description + + + + + Lifecycle Status + + + {{status}} + + + + + + + Assigned categories + + + {{category.name}} + cancel + + + + + + + {{category.name}} + + + + +
+
+ + Valid From + + + + date_range + + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + + date_range + + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+
+ +
+
+ +
+
+
+
+ +
+ + + +
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8a0a6b8b651310f0a3138090e12b40b5508b08a6 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditProductCatalogsComponent } from './edit-product-catalogs.component'; + +describe('EditProductCatalogsComponent', () => { + let component: EditProductCatalogsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EditProductCatalogsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EditProductCatalogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..496c9911202bc11b87be24b5f63cf89b0f81e90d --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-catalogs/edit-product-catalogs.component.ts @@ -0,0 +1,207 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; +import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { MatChipInputEvent } from '@angular/material/chips'; +import { HasElementRef } from '@angular/material/core/common-behaviors/color'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { Observable } from 'rxjs'; +import { map, startWith } from 'rxjs/operators' +import { CatalogCreate, CatalogUpdate, Category } from 'src/app/openApis/productCatalogManagement/models'; +import { Catalog } from 'src/app/openApis/productCatalogManagement/models'; +import { CatalogService, CategoryService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; + +@Component({ + selector: 'app-edit-product-catalogs', + templateUrl: './edit-product-catalogs.component.html', + styleUrls: ['./edit-product-catalogs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditProductCatalogsComponent implements OnInit { + + constructor( + private catalogService: CatalogService, + private categoryService: CategoryService, + private activatedRoute: ActivatedRoute, + private router: Router, + private toastrService: ToastrService + ) { } + + catalogID: string + catalog: Catalog + newCatalog: boolean = false + catalogNotFound: boolean = false + finishedLoading: boolean = false + + + editForm = new FormGroup({ + category: new FormControl([]), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + relatedParty: new FormControl(), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + nonSelectedRootCategories: Category[] + + categoryInputCtrl = new FormControl(); + filteredCategories: Observable; + + selectable = true; + removable = true; + addOnBlur = true; + @ViewChild('categoryInput') categoryInput: ElementRef; + @ViewChild('categoryInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + + ngOnInit(): void { + this.retrieveCategoriesList() + } + + retrieveCategoriesList() { + let categories: Category[] + this.categoryService.listCategory({}).subscribe( + data => categories = data, + error => console.error(error), + () => { + this.nonSelectedRootCategories = categories.filter(cat => cat.isRoot === true) + + this.filteredCategories = this.categoryInputCtrl.valueChanges.pipe( + startWith(null), + map((category: string | Category) => typeof (category) === 'string' ? this._filter(category) : this.nonSelectedRootCategories.slice())); + + if (this.activatedRoute.snapshot.params.id) { + this.catalogID = this.activatedRoute.snapshot.params.id + this.retrieveCatalog() + } + else { + this.newCatalog = true + this.finishedLoading = true + this.catalog = { + category: [] + } + } + + } + ) + } + + private _filter(value: string): Category[] { + const filterValue = value.toLowerCase(); + return this.nonSelectedRootCategories.filter(cat => cat.name.toLowerCase().indexOf(filterValue) !== -1); + } + + retrieveCatalog() { + this.catalogService.retrieveCatalog({ id: this.catalogID }).subscribe( + data => this.catalog = data, + error => console.error(error), + () => { + if (this.catalog) { + this.finishedLoading = true + this.editForm.patchValue(this.catalog) + this.catalog.category.forEach(cat => this.nonSelectedRootCategories.splice(this.nonSelectedRootCategories.findIndex((el) => el.id === cat.id), 1)) + } else { + this.catalogNotFound = true + } + } + ) + } + + addChip(event: MatChipInputEvent): void { + // Add category only when MatAutocomplete is not open + // To make sure this does not conflict with OptionSelected Event + + if (!this.matAutocomplete.isOpen && this.nonSelectedRootCategories.includes(event.input)) { + const input = event.input; + const value = event.value; + + // Add category + if ((value || '').trim()) { + this.catalog.category.push({"id": this.nonSelectedRootCategories.find( el => el.name === value.trim()).id}); + } + + // Reset the input value + if (input) { + input.value = ''; + } + this.categoryInputCtrl.setValue(null); + } + + event.input.value = ''; + } + + removeChip(category): void { + const index = this.catalog.category.indexOf(category); + + if (index >= 0) { + this.catalog.category.splice(index, 1); + this.nonSelectedRootCategories.push(category); + this.editForm.get('category').setValue(this.catalog.category) + + this.categoryInputCtrl.setValue(null); + } + } + + selected(event: MatAutocompleteSelectedEvent): void { + this.catalog.category.push(event.option.value); + this.editForm.get('category').setValue(this.catalog.category) + + this.nonSelectedRootCategories = this.nonSelectedRootCategories.filter(el => el.name != event.option.value.name) + + this.categoryInput.nativeElement.value = ''; + this.categoryInputCtrl.setValue(null); + } + + openList() { + this.categoryInputCtrl.setValue(null); + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + updateCatalog() { + const updateObj: CatalogCreate | CatalogUpdate = { + category: this.editForm.value.category.map(el => {return {'id': el.id}}), + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + let updatedCatalog: Catalog + if (this.newCatalog) { + this.catalogService.createCatalog(updateObj).subscribe( + data => { updatedCatalog = data}, + error => console.error(error), + () => { + this.newCatalog = false + this.router.navigate([updatedCatalog.id], {relativeTo: this.activatedRoute}) + this.catalogID = updatedCatalog.id + this.toastrService.success("Product Catalog is successfully created") + this.retrieveCatalog() + } + ) + } + + else { + this.catalogService.patchCatalog({id: this.catalogID, catalog: updateObj}).subscribe( + data => { }, + error => console.error(error), + () => { + this.toastrService.success("Product Catalog is successfully updated") + this.retrieveCatalog() + } + ) + } + } + +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.html new file mode 100644 index 0000000000000000000000000000000000000000..0bba15eefc99a50d1f88595492f718e3b5d2bebb --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.html @@ -0,0 +1,55 @@ +
+

+ + Manage the assignment of Product Offerings to Product Category + +

+ +
+ + + + + + {{offering.name}} + + + +
+ + +
+ + + + + + + + + + + + + + +
Product Offerings to be assigned + {{element.name}} Actions +
+ +
+ +
+ +
+
+ +
+ + +
+ +
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..aad886a804df4f07c3026340541cf342cbc01d3e --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.scss @@ -0,0 +1,11 @@ +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding: 4px; + } + + td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding: 4px; + } + + .dialog-content-container { + min-width: 40vw; + } \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..fcc9edfb5c012729a85a729b9a268d80684cf53d --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssignProductOfferingsComponent } from './assign-product-offerings.component'; + +describe('AssignProductOfferingsComponent', () => { + let component: AssignProductOfferingsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AssignProductOfferingsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AssignProductOfferingsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..9cafd36916fc19de7a1864adb32ac09e89b9dc4f --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-product-offerings/assign-product-offerings.component.ts @@ -0,0 +1,122 @@ +import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; +import { FormControl } from '@angular/forms'; +import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Observable } from 'rxjs'; +import { map, startWith } from 'rxjs/operators' +import { Category, CategoryUpdate, ProductOffering, ProductOfferingRef } from 'src/app/openApis/productCatalogManagement/models'; +import { CategoryService, ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; + +@Component({ + selector: 'app-assign-product-offerings', + templateUrl: './assign-product-offerings.component.html', + styleUrls: ['./assign-product-offerings.component.scss'] +}) +export class AssignProductOfferingsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Category, + private dialogRef: MatDialogRef, + private offeringService: ProductOfferingService, + private categoryService: CategoryService + ) { } + + @ViewChild('offeringInput') offeringInput: ElementRef; + @ViewChild('offeringInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + displayedOfferingTableColumns = ['name', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + + productCategory: Category = this.data + + assignedOfferings: ProductOffering[] = [] + availableOfferings: ProductOffering[] = [] + filteredOfferings$: Observable + + offeringInputCtrl = new FormControl() + + ngOnInit(): void { + this.listProductOfferings() + + } + + listProductOfferings() { + let allProductOfferings: ProductOffering[] + + this.offeringService.listProductOffering({}).subscribe( + data => allProductOfferings = data, + error => console.error(error), + () => { + const initiallyAssignedOfferingsIDs = this.productCategory.productOffering.map(el => el.id) + this.availableOfferings = allProductOfferings.filter(offering => offering.name && !initiallyAssignedOfferingsIDs.includes(offering.id)) + + this.assignedOfferings = this.data.productOffering.slice() + this.dataSource.data = this.assignedOfferings + this.dataSource.sort = this.sort + + this.filteredOfferings$ = this.offeringInputCtrl.valueChanges.pipe( + startWith(null), + map( (offering: string | ProductOffering) => typeof(offering) === 'string' ? this._filter(offering) : this.availableOfferings.slice() ) + ) + + } + + + ) + } + + onOptionSelected(event: MatAutocompleteSelectedEvent): void { + this.assignedOfferings.push(event.option.value); + this.dataSource.data = this.assignedOfferings + + + this.availableOfferings = this.availableOfferings.filter(el => el.name != event.option.value.name) + + this.offeringInput.nativeElement.value = ''; + this.offeringInputCtrl.setValue(null); + } + + private _filter(value: string): ProductOffering[] { + const filterValue = value.toLowerCase(); + return this.availableOfferings.filter(offering => offering.name && offering.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + // console.log(this.availableOfferings.slice()) + + } + + removeProductOffering(offering:ProductOffering) { + const index = this.assignedOfferings.indexOf(offering); + if (index >= 0) { + this.assignedOfferings.splice(index, 1); + this.dataSource.data = this.assignedOfferings + this.availableOfferings.push(offering); + + this.offeringInput.nativeElement.value = ''; + this.offeringInputCtrl.setValue(null); + } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + const categoryUpdateObj: CategoryUpdate = { productOffering: this.assignedOfferings.map(offering => {return {id: offering.id}}) } + this.categoryService.patchCategory({id: this.productCategory.id, category: categoryUpdateObj}).subscribe( + data => {}, + error => console.error(error), + () => { this.dialogRef.close('updated') } + ) + } + +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..d2531e330f286f3f1c6896cfdb86daf1a5d25fda --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.html @@ -0,0 +1,82 @@ +
+

+ + Create new Subcategory and assign it to the Product Category +

+
+ + +
+ + Name + + + + + Version + + + + + Description + + + + + + Lifecycle Status + + {{status}} + + + + +
+
+ + Valid From + + date_range + + + + + Valid Until + + date_range + + +
+
+ +
+ + + +
+ +
+
+ + +
+
+
+ +
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..04c6c7ff211fc3c6110783120beb2795ad21d7b2 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssignSubcategoriesComponent } from './assign-subcategories.component'; + +describe('AssignSubcategoriesComponent', () => { + let component: AssignSubcategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AssignSubcategoriesComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AssignSubcategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8d0f1e70252d4e04d65c8174cc36b14241797dbc --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/assign-subcategories/assign-subcategories.component.ts @@ -0,0 +1,74 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Category, CategoryCreate, CategoryUpdate } from 'src/app/openApis/productCatalogManagement/models'; +import { CategoryService } from 'src/app/openApis/productCatalogManagement/services'; + +@Component({ + selector: 'app-assign-subcategories', + templateUrl: './assign-subcategories.component.html', + styleUrls: ['./assign-subcategories.component.scss'] +}) +export class AssignSubcategoriesComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Category, + private dialogRef: MatDialogRef, + private categoryService: CategoryService + + ) { } + + editForm = new FormGroup({ + isRoot: new FormControl({value:false, disabled: true}), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + parentId: new FormControl({value:'', disabled: true}), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + parentCategory: Category + + ngOnInit(): void { + if (this.data) { + if (!this.data.validFor) this.data.validFor = {endDateTime:null, startDateTime:null} + this.parentCategory = this.data + this.editForm.patchValue({parentId: this.parentCategory.id}) + } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + const creationObj: CategoryCreate = this.editForm.value + creationObj.parentId = this.parentCategory.id + creationObj.isRoot = false + + let createdSubcategory: Category + this.categoryService.createCategory(creationObj).subscribe( + data => {createdSubcategory = data}, + error => console.error(error), + () => { + this.parentCategory.subCategory.push({id: createdSubcategory.id}) + const updateObj: CategoryUpdate = { + subCategory: this.parentCategory.subCategory + } + + this.categoryService.patchCategory({category: updateObj, id: this.parentCategory.id}).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('created') + ) + } + ) + } + +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..701aa9d29ffa213c744c80f72f4268fb8e28e234 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.html @@ -0,0 +1,217 @@ +
+
+
+

Product Category with id #{{categoryID}} is not found

+
+
+
+ +
+
+
+ +
+
+ +
+
+
+
+

Product Category Designer

+ +

Design a new Product Category

+ +

Edit the design of {{category?.name}} Product Category

+ +
+ Last updated at + {{category?.lastUpdate | date:'short'}} (Local Time) +
+ +
+ +
+ + + +
+
+ + +
+ + + + + Main Product Category properties + + + +
+ + + Name + + + + + Version + + + + + Description + + + +
+ is Root +
+ + + + + + {{category.name}} + + + + + + Lifecycle Status + + {{status}} + + + + +
+
+ + Valid From + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+
+
+
+ +
+
+
+ + + + + + Create and assign Subcategories to Product Category + + + +
+ + Apply Filter to Subcategories... + + + +
+ There are no Subcategories assigned yet +
+ + +
+ +
+
+ +
+ +
+ + + + +
+ +
+
+ + + + + + Manage the assignment of Product Offerings to Product Category + + + +
+ + Apply Filter to assigned Product Offerings... + + + +
+ + There are no Product Offerings assigned yet +
+ +
+ +
+
+ + +
+ + +
+ +
+ + + +
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..2ffba461a854f2cca7bf6f01993c620eea0ff782 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.scss @@ -0,0 +1,13 @@ +// .card-paper { +// box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +// } + +.sub-categories-font { + font-size: 1.1em; +} + +.sub-category-container { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9da616c1d9906dacd6fcdc6adc0b30c7f1a2bf6a --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditProductCategoriesComponent } from './edit-product-categories.component'; + +describe('EditProductCategoriesComponent', () => { + let component: EditProductCategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EditProductCategoriesComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EditProductCategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..f38c4e32d1da446be12cff6ea23d3cd93ebaa19e --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-categories/edit-product-categories.component.ts @@ -0,0 +1,280 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { ActivatedRoute, ActivationEnd, NavigationEnd, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { Observable, Subscription } from 'rxjs'; +import { map, startWith } from 'rxjs/operators' +import { Category, CategoryCreate, CategoryRef, CategoryUpdate, ProductOfferingRef } from 'src/app/openApis/productCatalogManagement/models'; +import { CategoryService, ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteProductCatalogsComponent } from '../delete-product-catalogs/delete-product-catalogs.component'; +import { AssignSubcategoriesComponent } from './assign-subcategories/assign-subcategories.component'; +import { AssignProductOfferingsComponent } from './assign-product-offerings/assign-product-offerings.component'; +import { DeleteProductCategoriesComponent } from '../delete-product-categories/delete-product-categories.component'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-edit-product-categories', + templateUrl: './edit-product-categories.component.html', + styleUrls: ['./edit-product-categories.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditProductCategoriesComponent implements OnInit { + + constructor( + private categoryService: CategoryService, + private offeringService: ProductOfferingService, + private activatedRoute: ActivatedRoute, + private dialog: MatDialog, + private router: Router, + private toastrService: ToastrService, + public appService: AppService + ) { } + + category: Category + categoryID: string + newCategory: boolean = false + categoryNotFound: boolean = false + finishedLoading: boolean = false + + + allCategories: Category[] + + editForm = new FormGroup({ + isRoot: new FormControl({value: true, disabled: true}), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + parentId: new FormControl({value:null, disabled: true}), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + filteredParentCategories$: Observable + + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + subCategoryFilterCtrl = new FormControl(); + filteredSubCategories$: Observable + + productOfferingsFilterCtrl = new FormControl(); + filteredProductOfferings$: Observable + + subscriptions = new Subscription() + + + ngOnInit(): void { + this.subscriptionsInit() + this.retrieveCategoryList() + } + + subscriptionsInit() { + this.subscriptions.add( + this.router.events.subscribe( + (event) => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.categoryID = event.snapshot.params.id + this.retrieveCategory() + } + } + ) + ) + + this.subscriptions.add( + this.editForm.get('isRoot').valueChanges.subscribe( + (value: MatCheckboxChange) => { + this.editForm.get('parentId').reset() + if (value) { + this.editForm.get('parentId').disable() + this.editForm.get('parentId').clearValidators() + } else { + this.editForm.get('parentId').enable() + this.editForm.get('parentId').setValidators(Validators.required) + this.editForm.get('parentId').updateValueAndValidity() + } + } + ) + ) + } + + retrieveCategory() { + this.categoryService.retrieveCategory({id: this.categoryID}).subscribe( + data => this.category = data, + error => console.error(error), + () => { + // if (!this.category.validFor) this.category.validFor = {endDateTime:null, startDateTime:null} + if (this.category) { + this.finishedLoading = true + this.editForm.patchValue(this.category) + if (this.category.parentId) { + this.editForm.get('isRoot').disable() + this.editForm.patchValue({parentId: this.allCategories.find(el => el.id === this.category.parentId)}) + this.editForm.get('parentId').disable() + } else { + // this.editForm.get('isRoot').enable() + } + + this.filteredSubCategories$ = this.subCategoryFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnSubCategories(value) : this.category.subCategory.slice() ) + ) + + this.filteredProductOfferings$ = this.productOfferingsFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnProductOfferings(value) : this.category.productOffering.slice() ) + ) + } else { + this.categoryNotFound = true + } + } + ) + } + + retrieveCategoryList() { + this.categoryService.listCategory({}).subscribe( + data => this.allCategories = data, + error => console.error(error), + () => { + this.filteredParentCategories$ = this.editForm.get('parentId').valueChanges.pipe( + startWith(null), + map( (value: null | string | Category) => typeof(value) === 'string' ? this._filterParentCategories(value) : this.allCategories.slice() ) + ) + + if (this.activatedRoute.snapshot.params.id) + { + this.categoryID = this.activatedRoute.snapshot.params.id + this.retrieveCategory() + } + else { + this.newCategory = true + this.finishedLoading = true + } + } + ) + } + + private _filterParentCategories(value: string): Category[] { + const filterValue = value.toLowerCase(); + + return this.allCategories.filter(cat => cat.name.toLowerCase().includes(filterValue)); + } + + + private _filterOnSubCategories(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.category.subCategory.filter( cat => cat.name.toLowerCase().includes(filterValue) ) + } + + private _filterOnProductOfferings(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.category.productOffering.filter( cand => cand.name.toLowerCase().includes(filterValue) ) + } + + displayFn(category?: Category): string | undefined { + return category ? category.name : undefined; + } + + updateServiceCategory() { + + if (this.editForm.valid) { + const updateObj: CategoryCreate | CategoryUpdate = { + // category: this.editForm.value.category.map(el => {return {'id': el.id}}), + isRoot: this.editForm.getRawValue().isRoot, + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + if (!this.editForm.get('isRoot').value) updateObj.parentId = this.editForm.get('parentId').value.id + + let updatedCategory: Category + if (this.newCategory) { + this.categoryService.createCategory(updateObj).subscribe( + data => { updatedCategory = data }, + error => console.error(error), + () => { + this.newCategory = false + this.router.navigate([updatedCategory.id], {relativeTo: this.activatedRoute}) + this.toastrService.success("Product Category is successfully created") + this.refreshCategory(updatedCategory) + } + ) + } + else { + this.categoryService.patchCategory({ id: this.categoryID, category: updateObj }).subscribe( + data => { updatedCategory = data }, + error => console.error(error), + () => { + this.toastrService.success("Service Category is successfully updated") + this.refreshCategory(updatedCategory) + } + ) + } + } + } + + refreshCategory(updatedCategory : Category) { + this.categoryID = updatedCategory.id + this.retrieveCategory() + } + + openCategoryDeleteDialog(element: Category) { + const dialogRef = this.dialog.open(DeleteProductCategoriesComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result instanceof HttpErrorResponse) { + this.toastrService.error("An error occurred while attempting to delete Product Category. Please check dependencies.") + } else { + this.toastrService.success("Subcategories' list is successfully updated") + this.retrieveCategory() + } + } + ) + } + + openSubcategoryDialog() { + const dialogRef = this.dialog.open(AssignSubcategoriesComponent, {data: this.category, disableClose: false}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toastrService.success("Subcategories' list is successfully updated") + this.retrieveCategory() + } + } + ) + } + + openAssignOfferingsDialog() { + const dialogRef = this.dialog.open(AssignProductOfferingsComponent, {data: this.category, disableClose: false, autoFocus:false}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toastrService.success("Product Offerings list is successfully updated") + this.retrieveCategory() + } + } + ) + } + + ngOnDestroy(): void { + this.subscriptions.unsubscribe() + } + +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/copy-specification-properties.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/copy-specification-properties.component.html new file mode 100644 index 0000000000000000000000000000000000000000..afe43a9373ad6c7e104446ea2656c3220bfcfbd9 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/copy-specification-properties.component.html @@ -0,0 +1,12 @@ +

+ + Copy properties +

+
+ Would you like to copy the common properties (ie. Name, Description) of the newly assigned Product Specification to this Product Offering? +
+ +
+ + +
diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/discard-changes.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/discard-changes.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b3511090b98ba9cba1a347000d8bb3ce26f1cad3 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/discard-changes.component.html @@ -0,0 +1,12 @@ +

+ + Discard Changes +

+
+ Unsubmitted changes will be discarded. Are you sure you want to discard changes and continue with the navigation? +
+ +
+ + +
diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.html new file mode 100644 index 0000000000000000000000000000000000000000..e62fdea4c0bb1feade6e47216e454c7256878d5b --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.html @@ -0,0 +1,162 @@ +
+
+
+

Product Offering with id #{{offeringID}} is not found

+
+
+
+ +
+
+
+
+
+
+
+
+

Product Offering Designer

+ +

Design a new Product + Offering

+ +

Edit Design of + {{offering?.name}} Product Offering +

+ +
+ Last updated at + {{offering?.lastUpdate | date:'short'}} (Local Time) +
+
+ +
+
+
+ +
+
+ +
+ +
+ +
+
+ + +
+
+
+
+
+ + Linked Product Specification (optional) + + + {{productSpec.name}} + + + + + + + Name + + + + + Version + + + + + + + Description (supports Markdown) + + + + + Lifecycle Status + + + {{status}} + + + + +
+
+ + Valid From + + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+ + + +
+ + +
+
+ +
+
+
+ +
+
+
+ + +
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d62d6583621b8bb12700e03a182b562043320010 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditProductOfferingsComponent } from './edit-product-offerings.component'; + +describe('EditProductOfferingsComponent', () => { + let component: EditProductOfferingsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EditProductOfferingsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EditProductOfferingsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..b0b64583f48ea8b6a057006df7bde7839e1d555f --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-offerings/edit-product-offerings.component.ts @@ -0,0 +1,252 @@ +import { trigger } from '@angular/animations'; +import { SelectionChange } from '@angular/cdk/collections'; +import { Component, OnInit } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MatOptionSelectionChange } from '@angular/material/core'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { MatSelectChange } from '@angular/material/select'; +import { ActivatedRoute, ActivationEnd, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { relative } from 'path'; +import { Subscription } from 'rxjs'; +import { ProductOffering, ProductOfferingCreate, ProductOfferingUpdate, ProductSpecification } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductOfferingService, ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; + +@Component({ + selector: 'app-edit-product-offerings', + templateUrl: './edit-product-offerings.component.html', + styleUrls: ['./edit-product-offerings.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditProductOfferingsComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private offeringService: ProductOfferingService, + private specService: ProductSpecificationService, + private dialog: MatDialog, + private toastrService: ToastrService, + private router: Router, + public appService: AppService + ) { } + + offeringID: string + offering: ProductOffering + offeringNotFound: boolean = false + finishedLoading: boolean = false + newOffering = false + + productSpecifications: ProductSpecification[] + + listItems = ["Main Properties"] + activeListItem = "Main Properties" + + editForm = new FormGroup({ + description: new FormControl(), + lifecycleStatus: new FormControl("In design", Validators.required), + name: new FormControl(null, Validators.required), + // isBundle: new FormControl(), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20)), Validators.required), + startDateTime: new FormControl(new Date(), Validators.required) + }), + version: new FormControl("0.1.0", Validators.required), + productSpecification: new FormControl() + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + subscriptions = new Subscription() + // valueChangeSubscription$: any + + + ngOnInit(): void { + this.initSubscriptions() + this.listProductSpecifications() + + if (this.activatedRoute.snapshot.params.id) + { + this.offeringID = this.activatedRoute.snapshot.params.id + this.retrieveOffering() + } else { + this.newOffering = true + this.finishedLoading = true + } + + } + + initSubscriptions() { + this.subscriptions.add(this.router.events.subscribe( + event => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.offeringID = event.snapshot.params.id + this.retrieveOffering() + } + } + )) + } + + + onSpecificationChange(event: MatSelectChange) { + const dialogRef = this.dialog.open(CopySpecificationPropertiesComponent, { autoFocus: true }) + + dialogRef.afterClosed().subscribe(confirmCopy => { + if (confirmCopy) { + this.editForm.patchValue({ + name: event.value.name, + description: event.value.description, + }) + } + }) + } + + + + selectListitem(item: string) { + if (this.editForm.pristine) { + this.activeListItem = item + } else { + const dialogRef = this.dialog.open(DiscardChangesComponent, {autoFocus: true}) + + dialogRef.afterClosed().subscribe (discardChanges => { + if (discardChanges) { + this.editForm.patchValue(this.offering) + this.editForm.markAsPristine() + this.activeListItem = item + } + }) + } + } + + listProductSpecifications() { + this.specService.listProductSpecification({}).subscribe( + data => this.productSpecifications = data, + error => {console.error(error), this.toastrService.error("An error occurred while loading Product Specifications")} + ) + } + + retrieveOffering() { + this.offeringService.retrieveProductOffering({id: this.offeringID}).subscribe( + data => this.offering = data, + error => {console.error(error), this.toastrService.error("An error occurred while loading Product Offering")}, + () => { + if (this.offering) { + this.finishedLoading = true + this.editForm.reset() + //populate General Panel Info + if (!this.offering.validFor) this.offering.validFor = { endDateTime: new Date(new Date().setFullYear(new Date().getFullYear()+20)).toISOString(), startDateTime: new Date().toISOString() } + this.editForm.patchValue(this.offering) + this.editForm.markAsPristine() + + if (this.offering.productSpecification) { + this.editForm.patchValue({productSpecification: this.productSpecifications.find(el => el.id === this.offering.productSpecification.id) }) + } + + //populate Product Specification Relationship + // this.filteredServiceSpecificationRel$ = this.serviceSpecificationRelationshipFilterCtrl.valueChanges.pipe( + // startWith(null), + // map( (value:null | string) => value ? this._filterOnRelatedSpecs(value) : this.spec.serviceSpecification.slice() ) + // ) + + } + else { + this.offeringNotFound = true + } + } + ) + } + + updateOfferingGeneral() { + if (this.editForm.valid) { + const updateObj: ProductOfferingCreate | ProductOfferingUpdate = { + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + if (this.editForm.value.productSpecification) { + updateObj.productSpecification = {name: this.editForm.value.productSpecification.name, id: this.editForm.value.productSpecification.id} + } + + let updatedOffering: ProductOffering + + if (this.newOffering) { + this.offeringService.createProductOffering(updateObj).subscribe( + data => { updatedOffering = data }, + error => console.error(error), + () => { + this.newOffering = false + this.router.navigate([updatedOffering.id], {relativeTo: this.activatedRoute}) + this.toastrService.success("Product Offering was successfully created") + this.refreshProductOffering(updatedOffering) + } + ) + } + else { + this.offeringService.patchProductOffering({ id: this.offeringID, productOffering: updateObj }).subscribe( + data => { updatedOffering = data }, + error => console.error(error), + () => { + this.toastrService.success("Product Offering was successfully updated") + this.refreshProductOffering(updatedOffering) + } + ) + } + } + + } + + refreshProductOffering(updatedOffering : ProductOffering) { + this.offeringID = updatedOffering.id + this.retrieveOffering() + } + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } + +} + +@Component({ + selector: 'app-discard-changes', + templateUrl: 'discard-changes.component.html', +}) + +export class DiscardChangesComponent { + + constructor( + public dialogRef: MatDialogRef, + ) {} + + onNoClick(): void { + this.dialogRef.close(false); + } + + onYesClick(): void { + this.dialogRef.close(true) + } +} + +@Component({ + selector: 'app-copy-specification-properties', + templateUrl: 'copy-specification-properties.component.html', +}) + +export class CopySpecificationPropertiesComponent { + + constructor( + public dialogRef: MatDialogRef, + ) {} + + onNoClick(): void { + this.dialogRef.close(false); + } + + onYesClick(): void { + this.dialogRef.close(true) + } +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.html new file mode 100644 index 0000000000000000000000000000000000000000..3e3dd66de889b9e7aa8944ce51e4f50613acf112 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.html @@ -0,0 +1,56 @@ +
+

+ + Assign Related Service Specifications + +

+ +
+ + + + + + + {{spec.name}} + + + +
+ + +
+ + + + + + + + + + + + + + +
Assigned Service Specifications + {{element.name}} Actions +
+ +
+ +
+ +
+
+ +
+ + +
+ +
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..9828c4477e9b16452ce1051ef4259e5d8618e00a --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.scss @@ -0,0 +1,11 @@ +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding: 4px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding: 4px; +} + +.dialog-content-container { + min-width: 40vw; +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..5a7ba36196f653b4010a771cfab78e1693cb680a --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssignServiceSpecificationComponent } from './assign-service-specification.component'; + +describe('AssignServiceSpecificationComponent', () => { + let component: AssignServiceSpecificationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AssignServiceSpecificationComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AssignServiceSpecificationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..f7a3cb7ae9ac788d11bcc0cdd76e0e14426fb0c5 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/assign-service-specification/assign-service-specification.component.ts @@ -0,0 +1,119 @@ +import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; +import { FormControl } from '@angular/forms'; +import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { HasElementRef } from '@angular/material/core/common-behaviors/color'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Observable } from 'rxjs'; +import { map, startWith } from 'rxjs/operators' +import { ProductSpecification, ProductSpecificationUpdate } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; +import { ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; + +@Component({ + selector: 'app-assign-service-specification', + templateUrl: './assign-service-specification.component.html', + styleUrls: ['./assign-service-specification.component.scss'] +}) +export class AssignServiceSpecificationComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + productSpec: ProductSpecification + }, + private dialogRef: MatDialogRef, + private productSpecService: ProductSpecificationService, + private serviceSpecService: ServiceSpecificationService + ) { } + + @ViewChild('specInput') specInput: ElementRef; + @ViewChild('specInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + @ViewChild('autoComplete') matAutocomplete: MatAutocomplete; + + + displayedColumns = ['name', 'actions'] + dataSource = new MatTableDataSource() + @ViewChild(MatSort, {static: true}) sort: MatSort; + + specInputCtrl = new FormControl(); + nonSelectedSpecs: ProductSpecification[] + filteredSpecs$: Observable + selectedSpecs: ProductSpecification[] = [] + + + ngOnInit(): void { + this.listServiceSpecs() + } + + listServiceSpecs() { + this.serviceSpecService.listServiceSpecification({}).subscribe( + data => this.nonSelectedSpecs = data, + error => console.error(error), + () => { + //remove self from available spec list as well as the allready assigned specs + const initiallyAssignedSpecIDs: string[] = this.data.productSpec.serviceSpecification.map(el => el.id) + this.nonSelectedSpecs = this.nonSelectedSpecs.filter(spec => !initiallyAssignedSpecIDs.includes(spec.id)) + + this.selectedSpecs = this.data.productSpec.serviceSpecification.slice() + this.dataSource.data = this.selectedSpecs + this.dataSource.sort = this.sort + + this.filteredSpecs$ = this.specInputCtrl.valueChanges.pipe( + startWith(null), + map( (spec: string | ServiceSpecification) => typeof(spec) === 'string' ? this._filter(spec) : this.nonSelectedSpecs.slice() ) + ) + } + ) + } + + selected(event: MatAutocompleteSelectedEvent): void { + this.selectedSpecs.push(event.option.value); + this.dataSource.data = this.selectedSpecs + + this.nonSelectedSpecs = this.nonSelectedSpecs.filter(el => el.name != event.option.value.name) + + this.specInput.nativeElement.value = ''; + this.specInputCtrl.setValue(null); + } + + private _filter(value: string): ProductSpecification[] { + const filterValue = value.toLowerCase(); + return this.nonSelectedSpecs.filter(cat => cat.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + + removeProductSpec(spec:ProductSpecification) { + const index = this.selectedSpecs.indexOf(spec); + if (index >= 0) { + this.selectedSpecs.splice(index, 1); + this.dataSource.data = this.selectedSpecs + this.nonSelectedSpecs.push(spec); + } + } + + + closeDialog() { + this.dialogRef.close() + } + + confirmAssignment() { + + const updateRelationshipsObj: ProductSpecificationUpdate = { + serviceSpecification: this.selectedSpecs.map(spec =>{ return {id: spec.id, name: spec.name}}) + } + + this.productSpecService.patchProductSpecification({id: this.data.productSpec.id, productSpecification: updateRelationshipsObj}).subscribe( + data => {}, + error => console.error(error), + () => {this.dialogRef.close('updated')} + ) + } + + +} diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/discard-changes.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/discard-changes.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b3511090b98ba9cba1a347000d8bb3ce26f1cad3 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/discard-changes.component.html @@ -0,0 +1,12 @@ +

+ + Discard Changes +

+
+ Unsubmitted changes will be discarded. Are you sure you want to discard changes and continue with the navigation? +
+ +
+ + +
diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.html b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..29881af9047ac6fc0bef8413ff9fdddaf911fcd8 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.html @@ -0,0 +1,211 @@ +
+
+
+

Product Specification with id #{{specID}} is not found

+
+
+
+ +
+
+
+
+
+
+
+
+

Product Specification Designer

+ +

Design a new Product + Specification

+ +

Edit Design of + {{spec?.name}} Product Specification +

+ +
+ Last updated at + {{spec?.lastUpdate | date:'short'}} (Local Time) +
+
+ +
+
+
+ +
+
+ +
+ +
+ +
+
+ + +
+
+
+
+
+ + Name + + + + + Version + + + + + + + Description (supports Markdown) + + + + + Lifecycle Status + + + {{status}} + + + + +
+
+ + Valid From + + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+ + + +
+ + +
+
+ +
+
+
+ +
+
+
+ + + +
+
+
+
+ + Apply Filter to related Service Specifications... + + + + +
+ There are not any Service Specification relationships assigned yet. +
+ +
+ +
+
+ + + +
+ + +
+
+ + + +
+
+
+
+ There are not any related parties assigned +
+ +
+
Username (Role)
+

{{relatedParty.name}} ({{relatedParty.role}})

+
+
+ + +
+
+ +
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.scss b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..00f7853720aa18eb5f4e0ffd9b151ab0b0058c31 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.scss @@ -0,0 +1,76 @@ +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled:not(.active) { + color: rgba(0,0,0,.30); +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.tab-pane > .card:nth-child(1) { + min-height: max(350px, 20vh); +} + +.tab-pane .card .card-body.space-between{ + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.card-paper { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding-left: 16px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding-right: 16px; +} + +span.hidden { + display: none; +} + +.mat-column-defaultValues span:last-child span span.comma-separator { + display: none; +} + +.value-measureUnits { + color: #727272; + font-size: 11px; + line-height: 1.1; +} + +.mat-cell { + font-size: 13px; +} + +.mat-header-cell { + font-size: 13px; + font-weight: 500; +} + +.spec-relationship-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +mat-chip { + cursor: pointer; +} + +file-upload { + outline-offset: -5px; +} + +file-upload.ng-touched.ng-invalid { + outline-color: #ff0000; + background-color: #fdf4f4; +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..780b8cbf1ecebcbb2d22c35c9f57cb75b7e5fc99 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditProductSpecsComponent } from './edit-product-specs.component'; + +describe('EditProductSpecsComponent', () => { + let component: EditProductSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EditProductSpecsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EditProductSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.ts b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8d7fb9d7479cd5e8f949e5d18303dd15476226ab --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/edit-product-specs/edit-product-specs.component.ts @@ -0,0 +1,219 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { ActivatedRoute, ActivationEnd, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { Observable, Subscription } from 'rxjs'; +import { map, startWith } from 'rxjs/operators'; +import { ProductSpecification, ProductSpecificationCreate, ProductSpecificationUpdate, ServiceSpecificationRef } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { AssignServiceSpecificationComponent } from './assign-service-specification/assign-service-specification.component'; + +@Component({ + selector: 'app-edit-product-specs', + templateUrl: './edit-product-specs.component.html', + styleUrls: ['./edit-product-specs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditProductSpecsComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private specService: ProductSpecificationService, + private dialog: MatDialog, + private toastrService: ToastrService, + private router: Router, + public appService: AppService + ) { } + + specID: string + spec: ProductSpecification + specNotFound: boolean = false + finishedLoading: boolean = false + newSpecification = false + + listItems = ["Main Properties", "Service Specification Relationships", "Related Parties"] + activeListItem = "Main Properties" + + editForm = new FormGroup({ + description: new FormControl(), + lifecycleStatus: new FormControl("In design", Validators.required), + name: new FormControl(null, Validators.required), + // isBundle: new FormControl(), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20)), Validators.required), + startDateTime: new FormControl(new Date(), Validators.required) + }), + version: new FormControl("0.1.0", Validators.required) + }) + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + serviceSpecificationRelationshipFilterCtrl = new FormControl(); + filteredServiceSpecificationRel$: Observable + + subscriptions = new Subscription() + + + ngOnInit(): void { + this.initSubscriptions() + + if (this.activatedRoute.snapshot.params.id) + { + this.specID = this.activatedRoute.snapshot.params.id + this.retrieveProductSpec() + } else { + this.newSpecification = true + this.finishedLoading = true + } + } + + initSubscriptions() { + this.subscriptions.add(this.router.events.subscribe( + event => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.specID = event.snapshot.params.id + this.retrieveProductSpec() + } + } + )) + } + + selectListitem(item: string) { + if (this.editForm.pristine) { + this.activeListItem = item + } else { + const dialogRef = this.dialog.open(DiscardChangesComponent, {autoFocus: true}) + + dialogRef.afterClosed().subscribe (discardChanges => { + if (discardChanges) { + this.editForm.patchValue(this.spec) + this.editForm.markAsPristine() + this.activeListItem = item + } + }) + } + } + + retrieveProductSpec() { + this.specService.retrieveProductSpecification({id: this.specID}).subscribe( + data => this.spec = data, + error => {console.error(error), this.toastrService.error("An error occurred while loading Product Specification")}, + () => { + if (this.spec) { + this.finishedLoading = true + + //populate General Panel Info + if (!this.spec.validFor) this.spec.validFor = { endDateTime: new Date(new Date().setFullYear(new Date().getFullYear()+20)).toISOString(), startDateTime: new Date().toISOString() } + this.editForm.patchValue(this.spec) + this.editForm.markAsPristine() + + //populate Service Specification Relationship Panel Info + this.filteredServiceSpecificationRel$ = this.serviceSpecificationRelationshipFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnRelatedSpecs(value) : this.spec.serviceSpecification.slice() ) + ) + + } + else { + this.specNotFound = true + } + } + ) + } + + private _filterOnRelatedSpecs(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.spec.serviceSpecification.filter( relatedSpec => relatedSpec.name.toLowerCase().includes(filterValue) ) + } + + openAssignSpecRelationshipDialog() { + const dialogRef = this.dialog.open(AssignServiceSpecificationComponent, { + data: { + productSpec: this.spec + }, + autoFocus: false, + disableClose: false + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toastrService.success("Service Specification Relationship list was successfully updated") + this.retrieveProductSpec() + } + } + ) + } + + updateProductSpecGeneral() { + if (this.editForm.valid) { + const updateObj: ProductSpecificationCreate | ProductSpecificationUpdate = { + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + let updatedSpec: ProductSpecification + + if (this.newSpecification) { + this.specService.createProductSpecification(updateObj).subscribe( + data => { updatedSpec = data }, + error => console.error(error), + () => { + this.newSpecification = false + this.toastrService.success("Product Specification was successfully created") + this.refreshProductSpecification(updatedSpec) + } + ) + } + else { + this.specService.patchProductSpecification({ id: this.specID, productSpecification: updateObj }).subscribe( + data => { updatedSpec = data }, + error => console.error(error), + () => { + this.toastrService.success("Product Specification was successfully updated") + this.refreshProductSpecification(updatedSpec) + } + ) + } + } + + } + + refreshProductSpecification(updatedSpec : ProductSpecification) { + this.specID = updatedSpec.id + this.retrieveProductSpec() + } + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } + +} + +@Component({ + selector: 'app-discard-changes', + templateUrl: 'discard-changes.component.html', +}) + +export class DiscardChangesComponent { + + constructor( + public dialogRef: MatDialogRef, + ) {} + + onNoClick(): void { + this.dialogRef.close(false); + } + + onYesClick(): void { + this.dialogRef.close(true) + } +} + diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.html b/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..6ed6a49775deb763deb0b8c7bf2b7c7ef0c2b351 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.html @@ -0,0 +1,75 @@ +
+
+
+
+
+
+

Product Catalogs

+

View and manage product catalogs

+
+
+ +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description | slice:0:49}}... + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} Version {{element.version}} Lifecycle Status {{element.lifecycleStatus}} Actions + + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.scss b/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6c61423bebb55df0dc47f1e1c3759d93885a0cf3 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..cd923f56ec1c1a30c00d11fafdc0d6bf98895e0c --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListProductCatalogsComponent } from './list-product-catalogs.component'; + +describe('ListProductCatalogsComponent', () => { + let component: ListProductCatalogsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ListProductCatalogsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ListProductCatalogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.ts b/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..83cf8a8f19935c9eb393ff0910542bba872850b5 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-catalogs/list-product-catalogs.component.ts @@ -0,0 +1,78 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { Catalog } from 'src/app/openApis/productCatalogManagement/models'; +import { CatalogService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { DeleteProductCatalogsComponent } from '../delete-product-catalogs/delete-product-catalogs.component'; +import { AppService } from 'src/app/shared/services/app.service'; + +@Component({ + selector: 'app-list-product-catalogs', + templateUrl: './list-product-catalogs.component.html', + styleUrls: ['./list-product-catalogs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListProductCatalogsComponent implements OnInit { + + constructor( + private catalogService: CatalogService, + public dialog: MatDialog, + private toastrService: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'actions'] + dataSource = new MatTableDataSource() + + productCatalogs: Catalog[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit(): void { + this.retrieveCatalogsList() + } + + retrieveCatalogsList() { + this.catalogService.listCatalog({}).subscribe( + data => { this.productCatalogs = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.productCatalogs + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + openCatalogDeleteDialog(element: Catalog) { + const dialogRef = this.dialog.open(DeleteProductCatalogsComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toastrService.success("Product Catalogs list is successfully updated") + this.retrieveCatalogsList() + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.html b/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..bec0b0e7bf2700886788bffc364fda8a0c95b3e3 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.html @@ -0,0 +1,99 @@ +
+
+
+
+
+
+

Product Categories

+

View and manage product categories

+
+
+ +
+
+
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description | slice:0:49}}... + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} + Lifecycle Status {{element.lifecycleStatus}} isRoot + check + close + Parent Category {{element.parentName}} Version {{element.version}} Actions + + + + +
+ + + + + +
+ +
+ *Root Categories' names are displayed in underlined text* +
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.scss b/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..ae6af10ef2c90c43b2413550ccc7c1228bde4ab9 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.scss @@ -0,0 +1,32 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} + +.isRoot-class td:first-of-type{ + // color:#3f51b5; + text-decoration: underline; + +} + +mat-hint { + background: #fff; +} + +.isRootDecoration { + text-decoration: underline; + +} + +.checked { + color: green +} + +.crossed { + color: red +} + +.table td:first-child { + border-top: 0 !important; +} \ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d020b31826878667c90f285cdf38e1b3e97be7b3 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListProductCategoriesComponent } from './list-product-categories.component'; + +describe('ListProductCategoriesComponent', () => { + let component: ListProductCategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ListProductCategoriesComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ListProductCategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.ts b/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..7c10c8a40fb8cdbf889685e799ae5ff69a332a15 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-categories/list-product-categories.component.ts @@ -0,0 +1,86 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { Category } from 'src/app/openApis/productCatalogManagement/models'; +import { CategoryService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteProductCategoriesComponent } from '../delete-product-categories/delete-product-categories.component'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-list-product-categories', + templateUrl: './list-product-categories.component.html', + styleUrls: ['./list-product-categories.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class ListProductCategoriesComponent implements OnInit { + + constructor( + private categoryService: CategoryService, + public dialog: MatDialog, + private toastrService: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'isRoot', 'parent', 'actions'] + dataSource = new MatTableDataSource() + + productCategories: Category[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveCategoriesList() + } + + retrieveCategoriesList() { + this.categoryService.listCategory({}).subscribe( + data => { this.productCategories = data }, + error => { console.error(error) }, + () => { + this.productCategories.forEach( cat => { + if (cat.parentId) cat['parentName'] = this.productCategories.find( el => el.id === cat.parentId).name + }) + + this.dataSource.data = this.productCategories + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + + openCategoryDeleteDialog(element: Category) { + const dialogRef = this.dialog.open(DeleteProductCategoriesComponent, {data: element}) + + dialogRef.afterClosed().subscribe( + result => { + if (result instanceof HttpErrorResponse) { + this.toastrService.error("An error occurred while attempting to delete Product Category. Please check dependencies.") + } else { + this.toastrService.success("Product Categories list is successfully updated") + this.retrieveCategoriesList() + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } +} diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.html b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ef55d8479542ec4f6317bf4b781ae66a639fa2d3 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.html @@ -0,0 +1,91 @@ +
+
+
+
+
+
+

Product Offerings

+

View and manage product offerings

+
+
+ + +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description}} + {{element.description | slice:0:49}}... + Version {{element.version}} Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} + Lifecycle Status {{element.lifecycleStatus}} Actions + + + + +
+ + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.scss b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..92c0ae0d08c35f24ac5e8bcc9bebeab71a9929ea --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..45efe315ede8336210fbd579294c0d2aaf34b0a4 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListProductOfferingsComponent } from './list-product-offerings.component'; + +describe('ListProductOfferingsComponent', () => { + let component: ListProductOfferingsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ListProductOfferingsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ListProductOfferingsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.ts b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..102cb45844cf58155a49e1ec599f049f5f84aba8 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-offerings/list-product-offerings.component.ts @@ -0,0 +1,83 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { ProductOffering, ProductSpecification } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteProductOfferingComponent } from '../delete-product-offering/delete-product-offering.component'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-list-product-offerings', + templateUrl: './list-product-offerings.component.html', + styleUrls: ['./list-product-offerings.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListProductOfferingsComponent implements OnInit { + + constructor( + private productOfferingService: ProductOfferingService, + public dialog: MatDialog, + private toastrService: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'actions'] + dataSource = new MatTableDataSource() + + productOfferings: ProductOffering[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit(): void { + this.retrieveOfferingsList() + } + + retrieveOfferingsList() { + this.productOfferingService.listProductOffering({}).subscribe( + data => { this.productOfferings = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.productOfferings + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + openSpecDeleteDialog(element: ProductSpecification) { + const dialogRef = this.dialog.open(DeleteProductOfferingComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toastrService.error("An error occurred while attempting to delete Product Offering") + } else { + this.toastrService.success("Product Offering list is successfully updated") + this.retrieveOfferingsList() + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.html b/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..524d0a2d25e080ba102bcf5bc8d70f60e4c54747 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.html @@ -0,0 +1,84 @@ +
+
+
+
+
+
+

Product Specifications

+

View and manage product specifications

+
+
+ + +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description}} + {{element.description | slice:0:49}}... + Version {{element.version}} Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} + Lifecycle Status {{element.lifecycleStatus}} Actions + + + + +
+ + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.scss b/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..92c0ae0d08c35f24ac5e8bcc9bebeab71a9929ea --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.spec.ts b/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a0abf10490d6ea82e60533940a2804d2b5182bd5 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListProductSpecsComponent } from './list-product-specs.component'; + +describe('ListProductSpecsComponent', () => { + let component: ListProductSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ListProductSpecsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ListProductSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.ts b/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..d982202e77cfa429560d74762c2f63f077d2e395 --- /dev/null +++ b/src/app/p_product/admin/productCatalogManagement/list-product-specs/list-product-specs.component.ts @@ -0,0 +1,84 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { ProductSpecification } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteProductSpecsComponent } from '../delete-product-specs/delete-product-specs.component'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-list-product-specs', + templateUrl: './list-product-specs.component.html', + styleUrls: ['./list-product-specs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListProductSpecsComponent implements OnInit { + + constructor( + private specService: ProductSpecificationService, + public dialog: MatDialog, + private toastrService: ToastrService, + public appService: AppService + + ) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'actions'] + dataSource = new MatTableDataSource() + + serviceSpecs: ProductSpecification[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveSpecsList() + } + + retrieveSpecsList() { + this.specService.listProductSpecification({}).subscribe( + data => { this.serviceSpecs = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.serviceSpecs + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + openSpecDeleteDialog(element: ProductSpecification) { + const dialogRef = this.dialog.open(DeleteProductSpecsComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toastrService.error("An error occurred while attempting to delete Product Specification") + } else { + this.toastrService.success("Product Specification list is successfully updated") + this.retrieveSpecsList() + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } +} diff --git a/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.html b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.html new file mode 100644 index 0000000000000000000000000000000000000000..e5645e7ff0ad9aa5893d52374cadfb03ae629c0f --- /dev/null +++ b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.html @@ -0,0 +1,88 @@ +
+ + + + +
+
+
+ Service Image + + +
+
+ +
+
{{productOffering?.name}}
+ +
+ +
+ +
+
+ Version +
+ {{productOffering?.version}} +
+
+
+ Bundle +
+ {{productSpec?.isBundle}} + Not Specified +
+
+ +
+ + + + +
+ + +
+
+ Description +
+ +
+
+
+ + +
+ + + + +
+ +
+ +
+ + +
+ +
+ + + + + + diff --git a/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.scss b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..2b6801944fbba50d781d50d2553088b1507bea89 --- /dev/null +++ b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.scss @@ -0,0 +1,75 @@ +.mat-dialog-title { + font-weight: 500; +} + +.description-text { + color: #9a9a9a; +} + +.image-container { + height: 150px; + // border: 2px solid #ccc; + margin-bottom: .5rem; + display: flex; + align-items: center; + justify-content: center; +} + +.image-container img { + border-radius: 6px; +} + + +.img-fluid { + max-height: 100%; +} + +.isConfigurable-class td{ + color:#3f51b5 +} + + +/////@at-root +.dialog-content-container { + min-width: 40vw; +} + +.header-section { + font-size: 1.4rem; + font-weight: 500; +} + +.general-info-tab { + margin-bottom: .75rem; +} + +.separator-div { + height: 0; + margin: 1rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.table th, .table td { + border-top: 0 +} + +.no-chars-found { + font-style: italic; + margin-top: 1rem; + // text-align: center; +} + +span.hidden { + display: none; +} + +.mat-column-defaultValues span:last-child span span.comma-separator { + display: none; +} + +.value-measureUnits { + color: #727272; + font-size: 11px; + line-height: 1.1; +} \ No newline at end of file diff --git a/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.spec.ts b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a007422c694cd86b5f8a9c2c3de728d9a25947c --- /dev/null +++ b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PreviewMarketPlaceItemComponent } from './preview-market-place-item.component'; + +describe('PreviewMarketPlaceItemComponent', () => { + let component: PreviewMarketPlaceItemComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PreviewMarketPlaceItemComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PreviewMarketPlaceItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.ts b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..2d5fff5821ed29c4c9edc03a5705a982bd932da7 --- /dev/null +++ b/src/app/p_product/marketplace/preview-market-place-item/preview-market-place-item.component.ts @@ -0,0 +1,62 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ProductOffering, ProductSpecification } from 'src/app/openApis/productCatalogManagement/models'; +import { ProductSpecificationService } from 'src/app/openApis/productCatalogManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { ThemingService } from 'src/app/theming/theming.service'; + +@Component({ + selector: 'app-preview-market-place-item', + templateUrl: './preview-market-place-item.component.html', + styleUrls: ['./preview-market-place-item.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class PreviewMarketPlaceItemComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + productOffering: ProductOffering + }, + private dialogRef: MatDialogRef, + private specService: ProductSpecificationService, + private themingService: ThemingService + ) { } + + productOffering: ProductOffering + productSpec: ProductSpecification + + finishedLoading: boolean = false + specLogoUrl: string + + + ngOnInit(): void { + this.productOffering = this.data.productOffering + if (this.productOffering.productSpecification && this.productOffering.productSpecification.id) { + this.retrieveProductSpec(this.data.productOffering) + } else { + this.specLogoUrl = this.themingService.getConfig().DEPLOYMENT_LOGO_PATH + this.finishedLoading = true + } + } + + retrieveProductSpec(offering: ProductOffering) { + this.specService.retrieveProductSpecification({ id: offering.productSpecification.id }).subscribe( + data => this.productSpec = data, + error => console.error(error), + () => { + this.finishedLoading = true + //Check if spec has a defined logo + this.specLogoUrl = this.themingService.getConfig().DEPLOYMENT_LOGO_PATH + } + ) + + + } + + closeDialog() { + this.dialogRef.close() + } + + +} diff --git a/src/app/p_product/marketplace/product-marketplace.component.html b/src/app/p_product/marketplace/product-marketplace.component.html new file mode 100644 index 0000000000000000000000000000000000000000..419c1aaa2a1f41057133aea9d622073a47850c5c --- /dev/null +++ b/src/app/p_product/marketplace/product-marketplace.component.html @@ -0,0 +1,106 @@ +
+
+
+ +
+
Product Catalog Explorer
+
+ +
+
+ +
+
+
+

Welcome to the {{config.TITLE}} Products Marketplace

+
Browse available products and sign in to order the respective services
+
+ +
+
+
Product offerings of {{selectedCategory.name}} category
+ {{selectedCategory.description}} + Description not available +
+
+ + Filter products... + + +
+ +
+
+
+
+
+ {{offering.name}} + +
+
+
+
+
+ Service Image + + +
+
+
+
Version: {{offering.version}}
+
+
+ {{category.name}} +
+
+ +
+ + + + {{offering.description | slice:0:59}} ... + + + {{offering.description}} + + +
+ + + +
+
+
+ + +
+
+
+ +
+ No results found... +
+ +
+ +
+ +
+
+ +
\ No newline at end of file diff --git a/src/app/p_product/marketplace/product-marketplace.component.scss b/src/app/p_product/marketplace/product-marketplace.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..d8605d588bb489077ad0f6882485cc99ba2f5df7 --- /dev/null +++ b/src/app/p_product/marketplace/product-marketplace.component.scss @@ -0,0 +1,96 @@ +.catalog-tree-header { + letter-spacing: 0px; + // font-size: 1.2em; + padding: 1rem; + // font-weight: bold; +} + +.catalog-tree-container { + padding: 0 .85rem .25rem .25rem +} + +.catalog-header { + padding: .5rem .5rem; + font-weight: bold; + letter-spacing: 1px; + text-decoration: underline; + font-size: 1.1rem; +} + +.appTitle { + font-size: 1.25rem; + // font-weight: bold; + // padding-left: 0px; + // border-bottom: rgb(238, 207, 207); + border-bottom-style: dotted; + border-bottom-width: 1px; + // margin-bottom: 5px; + // padding-bottom: 5px; +} + +.card.card-paper { + border-radius: 12px; + box-shadow: 0 6px 10px -4px rgba(0,0,0,.15); + background-color: #fff; + color: #252422; + margin-bottom: 20px; + position: relative; + border: 0; + transition: box-shadow .2s ease,-webkit-transform .3s cubic-bezier(.34,2,.6,1); + transition: transform .3s cubic-bezier(.34,2,.6,1),box-shadow .2s ease; + transition: transform .3s cubic-bezier(.34,2,.6,1),box-shadow .2s ease,-webkit-transform .3s cubic-bezier(.34,2,.6,1); +} + +.card.card-paper .card-header { + // padding: 15px 15px 0; + padding: 15px; + // border: 0; +} + +.card.card-paper .card-body { + padding: 15px 15px 0px; +} + +.card.card-paper .card-footer { + padding: 0px 15px 15px; + border: 0; + background: transparent; +} + +.img-container { + height: 200px; + display: flex; + align-items: center; + justify-content: center; +} + +.info-container { + display: flex; + flex-direction: column; + justify-content: center; + min-height: 200px; + // align-items: center; +} + +.description-container { + max-height: 80px; + overflow: hidden; +} + +.img-container img { + border-radius: 6px; +} + +.img-fluid { + max-height: 100%; +} + +.card-stats { + font-size: .9rem; + display: flex; + align-items: center; +} + +.card-stats i { + font-size: .9em; +} \ No newline at end of file diff --git a/src/app/p_product/marketplace/product-marketplace.component.spec.ts b/src/app/p_product/marketplace/product-marketplace.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8b0be45840dfaf707b5594a149166f851d30e849 --- /dev/null +++ b/src/app/p_product/marketplace/product-marketplace.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProductMarketplaceComponent } from './product-marketplace.component'; + +describe('ProductMarketplaceComponent', () => { + let component: ProductMarketplaceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ProductMarketplaceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ProductMarketplaceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/marketplace/product-marketplace.component.ts b/src/app/p_product/marketplace/product-marketplace.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..4717c16719fc1a288bc5cf53f9b117a2defcd39f --- /dev/null +++ b/src/app/p_product/marketplace/product-marketplace.component.ts @@ -0,0 +1,141 @@ +import { Component, OnInit } from '@angular/core'; +import { AppService } from 'src/app/shared/services/app.service'; +import { TreeServiceMarketPlaceService } from './services/tree-service-market-place.service'; +import { MatDialog } from '@angular/material/dialog'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { CatalogService, ProductOfferingService } from 'src/app/openApis/productCatalogManagement/services'; +import { Catalog, Category, CategoryRef, ProductOffering, ProductOfferingRef } from 'src/app/openApis/productCatalogManagement/models'; +import { FormControl } from '@angular/forms'; +import { Observable, Subscription } from 'rxjs'; +import { IAppConfig } from 'src/app/shared/models/app-config.model'; +import { map, startWith } from 'rxjs/operators'; +import { trigger } from '@angular/animations'; +import { simpleFade } from 'src/app/shared/animations/animations'; +import { PreviewMarketPlaceItemComponent } from './preview-market-place-item/preview-market-place-item.component'; +import { ThemingService } from 'src/app/theming/theming.service'; + +@Component({ + selector: 'app-product-marketplace', + templateUrl: './product-marketplace.component.html', + styleUrls: ['./product-marketplace.component.scss'], + animations: [ trigger('simpleFade', simpleFade()) ] + +}) +export class ProductMarketplaceComponent implements OnInit { + + constructor( + private appService: AppService, + private catalogService: CatalogService, + private productOfferingService: ProductOfferingService, + private treeMarketPlaceService: TreeServiceMarketPlaceService, + private dialog: MatDialog, + private sortingService: SortingService, + private themingService: ThemingService + ) { } + + productCatalogs: Catalog[] + isCatalogsCollapsed: Boolean[] = [] + + selectedCategoryRef: CategoryRef + + selectedCategory: Category + + productOfferings: ProductOffering[] = [] + + productOfferingsFilterCtrl = new FormControl(); + filteredProductOfferings$: Observable + + config: IAppConfig + + resultsNotFound: boolean = false + subscriptions = new Subscription() + + ngOnInit() { + this.config = this.appService.config + + this.retrieveCatalogsList() + + this.treeMarketPlaceService.categorySelected$.subscribe( + (category: Category) => { + this.selectedCategory = category + this.productOfferings = [] + this.productOfferingsFilterCtrl.reset() + this.resultsNotFound = category.productOffering.length === 0 + this.subscriptions.unsubscribe() + this.subscriptions = new Subscription() + category.productOffering.forEach((offeringRef) => { + this.retrieveOfferingFromRef(offeringRef) + }) + } + ) + } + + retrieveCatalogsList() { + this.catalogService.listCatalog({}).subscribe( + data => { this.productCatalogs = data }, + error => { console.error(error) }, + () => { + this.treeMarketPlaceService.catalogs$.next(this.productCatalogs) + } + ) + } + + retrieveOfferingFromRef(offeringRef: ProductOfferingRef) { + + this.subscriptions.add(this.productOfferingService.retrieveProductOffering({ id: offeringRef.id }).subscribe( + data => { + let productOffering: ProductOffering = data + // offering.fetchingLogo = true + productOffering['logo'] = this.themingService.getConfig().DEFAULT_SERVICE_LOGO_PATH //set Default App Image, path defined in theming.service.ts + + this.productOfferings.push(productOffering) + + // this.specificationService.getAttachment({id: data.serviceSpecification.id, attid:'logo'}).subscribe( + // data => { + // const reader = new FileReader(); + // reader.readAsDataURL(data); + // reader.onload = (__event) => { + // const base64data = reader.result; + // this.serviceCandidates.find(cand => cand.id === candidateRef.id).logo = base64data + // candidate.fetchingLogo = false + // } + // }, + // error => { + // candidate.fetchingLogo = false + // // console.error (error) + // } + // ) + + }, + error => { console.error(error) }, + () => { + this.productOfferings.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + this.filteredProductOfferings$ = this.productOfferingsFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnProductOfferings(value) : this.productOfferings.slice() ) + ) + } + )) + } + + private _filterOnProductOfferings (filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.productOfferings.filter( cand => cand.name.toLowerCase().includes(filterValue) ) + } + + previewProductOffering(offering: ProductOffering) { + const dialogRef = this.dialog.open(PreviewMarketPlaceItemComponent, { + data: { + productOffering: offering + }, + autoFocus: false + }) + + } + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } + +} diff --git a/src/app/p_product/marketplace/services/tree-service-market-place.service.spec.ts b/src/app/p_product/marketplace/services/tree-service-market-place.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..f531f0ad64917e57cf7e67f458f1fa9f28434b52 --- /dev/null +++ b/src/app/p_product/marketplace/services/tree-service-market-place.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { TreeServiceMarketPlaceService } from './tree-service-market-place.service'; + +describe('TreeServiceMarketPlaceService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: TreeServiceMarketPlaceService = TestBed.get(TreeServiceMarketPlaceService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/marketplace/services/tree-service-market-place.service.ts b/src/app/p_product/marketplace/services/tree-service-market-place.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..e26bed743c99d40053b6df93e6f4d724962e9f78 --- /dev/null +++ b/src/app/p_product/marketplace/services/tree-service-market-place.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; +import { Subject } from 'rxjs'; +import { Catalog, Category } from 'src/app/openApis/productCatalogManagement/models'; + +@Injectable({ + providedIn: 'root' +}) +export class TreeServiceMarketPlaceService { + + constructor() { } + + catalogs$: Subject = new Subject + categorySelected$: Subject = new Subject +} diff --git a/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.html b/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.html new file mode 100644 index 0000000000000000000000000000000000000000..f4513d62488cdfa2219e53c9fc053f528eb9b2e1 --- /dev/null +++ b/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.html @@ -0,0 +1,20 @@ + + + + {{node.item}} + {{node.item}} + + + + + {{node.item}} + {{node.item}} + + + + \ No newline at end of file diff --git a/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.scss b/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..be9032727f7401fb7032a0b1a7ec972606a7c138 --- /dev/null +++ b/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.scss @@ -0,0 +1,34 @@ +.mat-tree-node { + font-size: 0.9em; +} + +.catalog-header { + // padding: 5rem .5rem; + font-weight: bold; + // letter-spacing: 1px; + // text-decoration: underline; + font-size: 1em; + cursor: pointer; +} + +.node-header { + cursor: pointer; +} + +.catalog-divider { + height: 0; + // margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.active { + // padding: 0.5rem 1rem; + padding: 0.25rem 0.75rem; + color: #fff; + text-shadow: 4px 4px 6px #aaa; + border-radius: 0.25rem; + transition: all 0.2s; + +} + diff --git a/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.spec.ts b/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b4a7cb7a50baa8f81503243bffa28393c885c556 --- /dev/null +++ b/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TreeSidenavComponent } from './tree-sidenav.component'; + +describe('TreeSidenavComponent', () => { + let component: TreeSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TreeSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TreeSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.ts b/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8153c427394295d201635533320d0723592fce8c --- /dev/null +++ b/src/app/p_product/marketplace/tree-sidenav/tree-sidenav.component.ts @@ -0,0 +1,171 @@ +import {CollectionViewer, SelectionChange} from '@angular/cdk/collections'; +import {FlatTreeControl} from '@angular/cdk/tree'; +import {Component, Injectable} from '@angular/core'; +import {BehaviorSubject, merge, Observable, forkJoin} from 'rxjs'; +import {map} from 'rxjs/operators'; +import { TreeServiceMarketPlaceService } from '../services/tree-service-market-place.service'; +import { Catalog, Category } from 'src/app/openApis/productCatalogManagement/models'; +import { CategoryService } from 'src/app/openApis/productCatalogManagement/services'; + +export class DynamicFlatNode { + constructor(public item: string, public level = 1, public expandable = false, + public info: Category | Catalog, + public isLoading = false) {} +} + + +@Injectable() +export class DynamicDataSource { + + dataChange = new BehaviorSubject([]); + + get data(): DynamicFlatNode[] { return this.dataChange.value; } + set data(value: DynamicFlatNode[]) { + this._treeControl.dataNodes = value; + this.dataChange.next(value); + } + + constructor(private _treeControl: FlatTreeControl, + private _categoryService: CategoryService) {} + + connect(collectionViewer: CollectionViewer): Observable { + this._treeControl.expansionModel.changed.subscribe(change => { + if ((change as SelectionChange).added || + (change as SelectionChange).removed) { + this.handleTreeControl(change as SelectionChange); + } + }); + + return merge(collectionViewer.viewChange, this.dataChange).pipe(map(() => this.data)); + } + + /** Handle expand/collapse behaviors */ + handleTreeControl(change: SelectionChange) { + if (change.added) { + change.added.forEach(node => this.toggleNode(node, true)); + } + if (change.removed) { + change.removed.slice().reverse().forEach(node => this.toggleNode(node, false)); + } + } + + /** + * Toggle the node, remove from display list + */ + toggleNode(node: DynamicFlatNode, expand: boolean) { + + // const children = this._database.getChildren(node.item); + const index = this.data.indexOf(node); + + if ( ("category" in node.info && node.info.category.length === 0) || index < 0) { // If no children, or cannot find the node, no op + return; + } + + if ( ("subCategory" in node.info && node.info.subCategory.length === 0) || index < 0) { // If no children, or cannot find the node, no op + return; + } + + if (expand) { + let childrenCategoryRequests: Observable[] = [] + + if ("category" in node.info) { + node.info.category.forEach(child => { + childrenCategoryRequests.push(this._categoryService.retrieveCategory({ id: child.id })) + }) + } + + if ("subCategory" in node.info) { + node.info.subCategory.forEach(child => { + childrenCategoryRequests.push(this._categoryService.retrieveCategory({ id: child.id })) + }) + } + + forkJoin(childrenCategoryRequests).subscribe( + children => { + const nodes = children.map(category => + new DynamicFlatNode(category.name, node.level + 1, category.subCategory.length > 0, category)); + this.data.splice(index + 1, 0, ...nodes); + // notify the change + this.dataChange.next(this.data); + } + ) + } else { + let count = 0; + for (let i = index + 1; i < this.data.length + && this.data[i].level > node.level; i++ , count++) { } + this.data.splice(index + 1, count); + // notify the change + this.dataChange.next(this.data); + } + + // // notify the change + // this.dataChange.next(this.data); + + + // node.isLoading = true; + + // setTimeout(() => { + // if (expand) { + // const nodes = children_Categories.map(cat => + // new DynamicFlatNode(cat.name, node.level + 1, true, cat)); + // this.data.splice(index + 1, 0, ...nodes); + // } else { + // let count = 0; + // for (let i = index + 1; i < this.data.length + // && this.data[i].level > node.level; i++, count++) {} + // this.data.splice(index + 1, count); + // } + + // // notify the change + // console.log(this.data) + // this.dataChange.next(this.data); + // node.isLoading = false; + // }, 1000); + + // fetchCategoryFromRef() => {} + } +} + +/** + * @title Tree with dynamic data + */ + +@Component({ + selector: 'app-tree-sidenav', + templateUrl: './tree-sidenav.component.html', + styleUrls: ['./tree-sidenav.component.scss'] + +}) +export class TreeSidenavComponent { + + constructor(categoryService: CategoryService, private treeMarketPlaceService: TreeServiceMarketPlaceService) { + this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable); + this.dataSource = new DynamicDataSource(this.treeControl, categoryService); + } + + treeControl: FlatTreeControl; + + dataSource: DynamicDataSource; + + getLevel = (node: DynamicFlatNode) => node.level; + + isExpandable = (node: DynamicFlatNode) => node.expandable; + + hasChild = (_: number, _nodeData: DynamicFlatNode) => _nodeData.expandable; + + ngOnInit(): void { + this.treeMarketPlaceService.catalogs$.subscribe( + data => { + // this.initialDataObjArr = data + const initialData = data.map(catalog => new DynamicFlatNode(catalog.name, 0, catalog.category.length > 0, catalog )) + this.dataSource.data = initialData + } + ) + } + + selectedTreeNodeID: string + selectTreeNode(node: DynamicFlatNode) { + this.selectedTreeNodeID = node.info.id + this.treeMarketPlaceService.categorySelected$.next(node.info) + } +} diff --git a/src/app/p_product/readme.md b/src/app/p_product/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..2a23e746ebadf20a507e06b2a9c990e379da777c --- /dev/null +++ b/src/app/p_product/readme.md @@ -0,0 +1 @@ +Placeholder for product portal directory \ No newline at end of file diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.html b/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..61bb0c45afc419ba9fe6c8d67ed75a0975c5471d --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete catalog {{data.name}} ? +
+ +
+ + +
diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.scss b/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.spec.ts b/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..e4c43d35f1719491e4cd9ed7cf9a90636fa3e388 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteResourceCatalogsComponent } from './delete-resource-catalogs.component'; + +describe('DeleteResourceCatalogsComponent', () => { + let component: DeleteResourceCatalogsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteResourceCatalogsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteResourceCatalogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.ts b/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..a4e7f4697db2e788b69a9799f12382662a9613c9 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-catalogs/delete-resource-catalogs.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ResourceCatalog } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceCatalogService } from 'src/app/openApis/resourceCatalogManagement/services'; + + +@Component({ + selector: 'app-delete-resource-catalog', + templateUrl: './delete-resource-catalogs.component.html', + styleUrls: ['./delete-resource-catalogs.component.scss'] +}) +export class DeleteResourceCatalogsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ResourceCatalog, + private catalogService: ResourceCatalogService, + private dialogRef: MatDialogRef + ) { } + + ngOnInit() { + } + + confirmDelete() { + this.catalogService.deleteResourceCatalog(this.data.id).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.html b/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..67867f18e705f6c792a0ac0a245a87ec800f2afd --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete category {{data.name}} ? +
+ +
+ + +
diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.scss b/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.spec.ts b/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6fe28830608f807c2e55082cbf863f81b5846e2a --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteResourceCategoriesComponent } from './delete-resource-categories.component'; + +describe('DeleteResourceCategoriesComponent', () => { + let component: DeleteResourceCategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteResourceCategoriesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteResourceCategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.ts b/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..7755d02576e72c3848fdd65573b4354752324cde --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-categories/delete-resource-categories.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ResourceCategory } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceCategoryService } from 'src/app/openApis/resourceCatalogManagement/services'; + +@Component({ + selector: 'app-delete-resource-category', + templateUrl: './delete-resource-categories.component.html', + styleUrls: ['./delete-resource-categories.component.scss'] +}) +export class DeleteResourceCategoriesComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ResourceCategory, + private dialogRef: MatDialogRef, + private categoryService: ResourceCategoryService + + ) { } + + ngOnInit() { + } + + confirmDelete() { + this.categoryService.deleteResourceCategory(this.data.id).subscribe( + data => {}, + error => {this.dialogRef.close(error); console.error(error)}, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.html b/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.html new file mode 100644 index 0000000000000000000000000000000000000000..f09bed37747a77ab747097c59a8720fc8f00a926 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete specification {{data.name}} ? +
+ +
+ + +
diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.scss b/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.spec.ts b/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..e87f005744d34b2676917c229e676c9d9b7bc53e --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteResourceSpecComponent } from './delete-resource-spec.component'; + +describe('DeleteResourceSpecComponent', () => { + let component: DeleteResourceSpecComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteResourceSpecComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteResourceSpecComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.ts b/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..032d13642eff0384e9e6007012035d956242286d --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource-spec/delete-resource-spec.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ResourceSpecification } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; + +@Component({ + selector: 'app-delete-resource-spec', + templateUrl: './delete-resource-spec.component.html', + styleUrls: ['./delete-resource-spec.component.scss'] +}) +export class DeleteResourceSpecComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ResourceSpecification, + private dialogRef: MatDialogRef, + private specService: ResourceSpecificationService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.specService.deleteResourceSpecification(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.html b/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.html new file mode 100644 index 0000000000000000000000000000000000000000..07798748b5f656362142d1fee468fda99cc8ecbd --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete resource {{data.name}} ? +
+ +
+ + +
diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.scss b/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.spec.ts b/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..5c2afa5ccea39aed97912f541788ea0d54e01cc7 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteResourceComponent } from './delete-resource.component'; + +describe('DeleteResourceComponent', () => { + let component: DeleteResourceComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteResourceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteResourceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.ts b/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..ff6edd71447d0e0099cc3e237afd7bdc2b7fcc17 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/delete-resource/delete-resource.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Resource } from 'src/app/openApis/resourceInventoryManagement/models'; +import { ResourceService } from 'src/app/openApis/resourceInventoryManagement/services'; + +@Component({ + selector: 'app-delete-resource', + templateUrl: './delete-resource.component.html', + styleUrls: ['./delete-resource.component.scss'] +}) +export class DeleteResourceComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Resource, + private dialogRef: MatDialogRef, + private resourceService: ResourceService + ) { } + + ngOnInit() { + } + + + confirmDelete() { + // this.dialogRef.close('deleted') + this.resourceService.deleteResource(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..4fd23ec727df85b583760e3c2aecedc5bfaeaa47 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.html @@ -0,0 +1,112 @@ +
+

+ + Edit Resource Catalog +
+ Last updated at {{catalog?.lastUpdate | date:'short'}} (Local Time) +
+

+ +

+ + Create New Resource Catalog +

+
+ + +
+ + Name + + + + + Version + + + + + Description + + + + + Lifecycle Status + + + {{status}} + + + + + + + + + {{category.name}} + cancel + + + + + + {{category.name}} + + + + +
+
+ + Valid From + + + + date_range + + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + + date_range + + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+
+ + + +
+ +
+
+ + +
+
+
+ +
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..5b1ce11093927a5c291c95ee26867737b84b33d4 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditResourceCatalogsComponent } from './edit-resource-catalogs.component'; + +describe('EditResourceCatalogsComponent', () => { + let component: EditResourceCatalogsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditResourceCatalogsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditResourceCatalogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..6223e438d1fa088abb6524e264dc46a28a5190e8 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-catalogs/edit-resource-catalogs.component.ts @@ -0,0 +1,200 @@ +import { Component, OnInit, ViewChild, ElementRef, Inject } from '@angular/core'; +import { ResourceCatalogService, ResourceCategoryService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { FormGroup, FormControl } from '@angular/forms'; +import { ResourceCatalog, ResourceCatalogUpdate, ResourceCategory, ResourceCatalogCreate } from 'src/app/openApis/resourceCatalogManagement/models'; + + +import { Observable } from 'rxjs'; +import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { MatChipInputEvent } from '@angular/material/chips'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { startWith, map } from 'rxjs/operators'; + +@Component({ + selector: 'app-edit-resource-catalogs', + templateUrl: './edit-resource-catalogs.component.html', + styleUrls: ['./edit-resource-catalogs.component.scss'] +}) + +export class EditResourceCatalogsComponent implements OnInit { + constructor( + @Inject(MAT_DIALOG_DATA) public data: ResourceCatalog, + private catalogService: ResourceCatalogService, + private categoryService: ResourceCategoryService, + private dialogRef: MatDialogRef, + ) { } + + catalogID: string + catalog: ResourceCatalog + + editForm = new FormGroup({ + // categoryIDs: new FormControl([]), + category: new FormControl([]), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + relatedParty: new FormControl(), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + + + selectable = true; + removable = true; + addOnBlur = true; + + categoryInputCtrl = new FormControl(); + filteredCategories: Observable; + + // categories: string[] = ['Lemon']; + categories: ResourceCategory[] = [] + + // allCategories: string[] = ['Apple', 'Lemon', 'Lime', 'Orange', 'Strawberry']; + + nonSelectedCategories: ResourceCategory[] = [] + nonSelectedRootCategories: ResourceCategory[] = [] + + + @ViewChild('categoryInput') categoryInput: ElementRef; + + @ViewChild('categoryInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + // @ViewChild('auto', {static: false}) matAutocompleteTrigger: MatAutocompleteTrigger; + + newCatalog: boolean = false + + ngOnInit() { + this.retrieveResourceCategories() + + if (this.data) + { + this.catalogID = this.data.id + this.retrieveResourceCatalog() + } + else { this.newCatalog = true } + } + + retrieveResourceCategories() { + this.categoryService.listResourceCategory({}).subscribe( + data => this.nonSelectedCategories = data, + error => console.error(error), + () => { + this.nonSelectedRootCategories = this.nonSelectedCategories.filter(cat => cat.isRoot === true) + + this.filteredCategories = this.categoryInputCtrl.valueChanges.pipe( + startWith(null), + map( (category: string | ResourceCategory) => typeof(category) === 'string' ? this._filter(category) : this.nonSelectedRootCategories.slice() )); + } + ) + } + + retrieveResourceCatalog() { + this.catalogService.retrieveResourceCatalog({ id: this.catalogID }).subscribe( + data => this.catalog = data, + error => console.error(error), + () => { + this.editForm.patchValue(this.catalog) + this.categories = this.catalog.category + this.categories.forEach(cat => this.nonSelectedRootCategories.splice(this.nonSelectedRootCategories.findIndex((el) => el.id === cat.id), 1)) + } + ) + } + + + addChip(event: MatChipInputEvent): void { + // Add category only when MatAutocomplete is not open + // To make sure this does not conflict with OptionSelected Event + + if (!this.matAutocomplete.isOpen && this.nonSelectedRootCategories.includes(event.input)) { + const input = event.input; + const value = event.value; + + // Add category + if ((value || '').trim()) { + this.categories.push(this.nonSelectedRootCategories.find( el => el.name === value.trim())); + } + + // Reset the input value + if (input) { + input.value = ''; + } + + this.categoryInputCtrl.setValue(null); + } + + event.input.value = ''; + } + + removeChip(category): void { + const index = this.categories.indexOf(category); + + if (index >= 0) { + this.categories.splice(index, 1); + this.nonSelectedRootCategories.push(category); + this.editForm.get('category').setValue(this.categories) + + this.categoryInputCtrl.setValue(null); + } + } + + selected(event: MatAutocompleteSelectedEvent): void { + this.categories.push(event.option.value); + this.editForm.get('category').setValue(this.categories) + + this.nonSelectedRootCategories = this.nonSelectedRootCategories.filter(el => el.name != event.option.value.name) + + this.categoryInput.nativeElement.value = ''; + this.categoryInputCtrl.setValue(null); + } + + private _filter(value: string): ResourceCategory[] { + const filterValue = value.toLowerCase(); + return this.nonSelectedRootCategories.filter(cat => cat.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + this.categoryInputCtrl.setValue(null); + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + + submitDialog() { + + const updateObj: ResourceCatalogCreate | ResourceCatalogUpdate = { + category: this.editForm.value.category.map(el => {return {'id': el.id}}), + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + if (this.newCatalog) { + this.catalogService.createResourceCatalog(updateObj).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('created') + ) + } + + else { + this.catalogService.patchResourceCatalog({id: this.catalogID, body: updateObj}).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('updated') + ) + } + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.html new file mode 100644 index 0000000000000000000000000000000000000000..0712d138cf71670cd9f088d132a1df4d2181eae1 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.html @@ -0,0 +1,55 @@ +
+

+ + Assign Resource Specifications to Resource Category + +

+ +
+ + + + + + {{candidate.name}} + + + +
+ + +
+ + + + + + + + + + + + + + +
Assigned Resource Specifications + {{element.name}} Actions +
+ +
+ +
+ +
+
+ +
+ + +
+ +
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e6e1bd278018a5397de0a6bc9091f8e18d025514 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.scss @@ -0,0 +1,11 @@ +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding: 4px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding: 4px; +} + +.dialog-content-container { + min-width: 40vw; +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6fc3b5c899245536e9db00f11c18199b7dcd534a --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssignResourceCandidatesComponent } from './assign-resource-candidates.component'; + +describe('AssignResourceCandidatesComponent', () => { + let component: AssignResourceCandidatesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AssignResourceCandidatesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AssignResourceCandidatesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..4a0d24386ed810d3895ed46aab65624fe1e806c3 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/assign-resource-candidates/assign-resource-candidates.component.ts @@ -0,0 +1,121 @@ +import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; +import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ResourceCategory, ResourceCandidate, ResourceCandidateRef, ResourceCategoryUpdate, ResourceSpecification } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceCandidateService, ResourceCategoryService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { Observable } from 'rxjs'; +import { FormControl } from '@angular/forms'; +import { startWith, map } from 'rxjs/operators'; +@Component({ + selector: 'app-assign-service-candidates', + templateUrl: './assign-resource-candidates.component.html', + styleUrls: ['./assign-resource-candidates.component.scss'] +}) +export class AssignResourceCandidatesComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ResourceCategory, + private dialogRef: MatDialogRef, + private candidateService: ResourceCandidateService, + private categoryService: ResourceCategoryService + + ) { } + + @ViewChild('candidateInput') candidateInput: ElementRef; + @ViewChild('candidateInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + displayedCandidateTableColumns = ['name', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + + resourceCategory: ResourceCategory = this.data + + assignedCandidates: ResourceCandidateRef[] = [] + availableCandidates: ResourceCandidate[] = [] + filteredCandidates$: Observable + + candidateInputCtrl = new FormControl() + + ngOnInit() { + this.listResourceCandidates() + } + + + listResourceCandidates() { + let allResourceCandidates: ResourceCandidate[] + + this.candidateService.listResourceCandidate({}).subscribe( + data => allResourceCandidates = data, + error => console.error(error), + () => { + + const initiallyAssignedCandidatesIDs = this.resourceCategory.resourceCandidate.map(el => el.id) + this.availableCandidates = allResourceCandidates.filter(cand => cand.name && !initiallyAssignedCandidatesIDs.includes(cand.id)) + + + + // this.available = this.availableCandidates + + this.assignedCandidates = this.data.resourceCandidate.slice() + this.dataSource.data = this.assignedCandidates + this.dataSource.sort = this.sort + + this.filteredCandidates$ = this.candidateInputCtrl.valueChanges.pipe( + startWith(null), + map( (spec: string | ResourceSpecification) => typeof(spec) === 'string' ? this._filter(spec) : this.availableCandidates.slice() ) + ) + + } + + + ) + } + + selected(event: MatAutocompleteSelectedEvent): void { + this.assignedCandidates.push(event.option.value); + this.dataSource.data = this.assignedCandidates + + this.availableCandidates = this.availableCandidates.filter(el => el.name != event.option.value.name) + + this.candidateInput.nativeElement.value = ''; + this.candidateInputCtrl.setValue(null); + } + + private _filter(value: string): ResourceCandidate[] { + const filterValue = value.toLowerCase(); + return this.availableCandidates.filter(cat => cat.name && cat.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + removeResourceCandidate(spec:ResourceCandidate) { + const index = this.assignedCandidates.indexOf(spec); + if (index >= 0) { + this.assignedCandidates.splice(index, 1); + this.dataSource.data = this.assignedCandidates + this.availableCandidates.push(spec); + } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + const updateCandidatesObj: ResourceCategoryUpdate = { resourceCandidate: this.assignedCandidates.map(cand => {return {id: cand.id, name: cand.name}}) } + this.categoryService.patchResourceCategory({id: this.resourceCategory.id, resourceCategory: updateCandidatesObj}).subscribe( + data => {}, + error => console.error(error), + () => { this.dialogRef.close('updated') } + ) + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.html new file mode 100644 index 0000000000000000000000000000000000000000..159f0451caaf5a597223dfbd107582a5588642be --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.html @@ -0,0 +1,82 @@ +
+

+ + Create new Subcategory and assign it to the Resource Category +

+
+ + +
+ + Name + + + + + Version + + + + + Description + + + + + + Lifecycle Status + + {{status}} + + + + +
+
+ + Valid From + + date_range + + + + + Valid Until + + date_range + + +
+
+ +
+ + + +
+ +
+
+ + +
+
+
+ +
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b55ed4e6a0fe1e70880b0524e221c1c5192738c0 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CreateResourceCategoryChildrenComponent } from './create-resource-category-children.component'; + +describe('CreateResourceCategoryChildrenComponent', () => { + let component: CreateResourceCategoryChildrenComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CreateResourceCategoryChildrenComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CreateResourceCategoryChildrenComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..96ed4e4408197dd06346a61bb01c323bf4baabe2 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/create-resource-category-children/create-resource-category-children.component.ts @@ -0,0 +1,77 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; + + + +import { FormGroup, FormControl } from '@angular/forms'; +import { ResourceCategory, ResourceCategoryCreate, ResourceCategoryUpdate } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceCategoryService } from 'src/app/openApis/resourceCatalogManagement/services'; + + +@Component({ + selector: 'app-create-resource-category-children', + templateUrl: './create-resource-category-children.component.html', + styleUrls: ['./create-resource-category-children.component.scss'] +}) +export class CreateResourceCategoryChildrenComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ResourceCategory, + private dialogRef: MatDialogRef, + private categoryService: ResourceCategoryService + + ) { } + + editForm = new FormGroup({ + isRoot: new FormControl({value:false, disabled: true}), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + parentId: new FormControl({value:'', disabled: true}), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + parentCategory: ResourceCategory + + ngOnInit() { + if (this.data) { + if (!this.data.validFor) this.data.validFor = {endDateTime:null, startDateTime:null} + this.parentCategory = this.data + this.editForm.patchValue({parentId: this.parentCategory.id}) + } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + const creationObj: ResourceCategoryCreate = this.editForm.value + creationObj.parentId = this.parentCategory.id + creationObj.isRoot = false + + let createdChildCategory: ResourceCategory + this.categoryService.createResourceCategory(creationObj).subscribe( + data => {createdChildCategory = data}, + error => console.error(error), + () => { + this.parentCategory.category.push({id: createdChildCategory.id}) + const updateObj: ResourceCategoryUpdate = { + category: this.parentCategory.category + } + + this.categoryService.patchResourceCategory({resourceCategory: updateObj, id: this.parentCategory.id}).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('created') + ) + } + ) + } +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..6487496dd5f72bb47a7fa4ab3be9d42324536431 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.html @@ -0,0 +1,222 @@ +
+
+
+ +
+
+ +
+
+
+
+

Resource Category Designer

+ +

Design a new resource category

+ +

Edit Design of {{category?.name}} Resource Category

+ +
+ Last updated at + {{category?.lastUpdate | date:'short'}} (Local Time) +
+ +
+ +
+ + + + + +
+
+ + +
+ + + + + Main Resource Category properties + + + +
+ + + Name + + + + + Version + + + + + Description + + + +
+ is Root +
+ + + + + + {{category.name}} + + + + + + + + + Lifecycle Status + + {{status}} + + + + +
+
+ + Valid From + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+
+
+
+ +
+
+
+ + + + + + Create and assign Subcategories to Resource Category + + + +
+ +
{{category?.category.length}} Subcategory assigned
+
{{category?.category.length}} Subcategories assigned
+ +
+ +
+ + + Apply filter to assigned Subcategories... + + + +
+ +
+ {{category.name}} +
+ + +
+ +
+
+ + + + + + Manage the assignment of Resource Specifications to Resource Category + + + +
+
{{category?.resourceCandidate.length}} Resource Specification(s) assigned
+ +
+ +
+ + + Apply Filter to assigned Resource Specifications... + + +
+ + +
+ + +
+ +
+ + + +
+
+ +
+
+
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..eae84a0f0a7bf57f34d55a2c0c955c80b16f7d51 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.scss @@ -0,0 +1,18 @@ +.card-paper { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +.children-categories-font { + font-size: 1.1em; +} + +.child-category-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +.breadcrumb1 { + list-style: none; + padding: 0; +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..e3e720e3108764fb6e2a3327599d29c0c0e7b774 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditResourceCategoriesComponent } from './edit-resource-categories.component'; + +describe('EditResourceCategoriesComponent', () => { + let component: EditResourceCategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditResourceCategoriesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditResourceCategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..a670c2ce606c50881212d72cee4c0b27c3d8b03a --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-categories/edit-resource-categories.component.ts @@ -0,0 +1,294 @@ +import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core'; + +import { FormGroup, FormControl, Validators } from '@angular/forms'; + +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; + +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ResourceCategory, ResourceCategoryUpdate, ResourceCategoryCreate, ResourceCategoryRef, ResourceCandidateRef, ResourceCandidate } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceCategoryService, ResourceCandidateService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { Observable, Subscription } from 'rxjs'; +import { startWith, map } from 'rxjs/operators'; +import { CreateResourceCategoryChildrenComponent } from './create-resource-category-children/create-resource-category-children.component'; +import { DeleteResourceCategoriesComponent } from '../delete-resource-categories/delete-resource-categories.component'; +import { AssignResourceCandidatesComponent } from './assign-resource-candidates/assign-resource-candidates.component'; +import { ToastrService } from 'ngx-toastr'; +import { error } from 'protractor'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-edit-resource-categories', + templateUrl: './edit-resource-categories.component.html', + styleUrls: ['./edit-resource-categories.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditResourceCategoriesComponent implements OnInit, OnDestroy { + + constructor( + private categoryService: ResourceCategoryService, + private candidateService: ResourceCandidateService, + private activatedRoute: ActivatedRoute, + private dialog: MatDialog, + private router: Router, + private toast: ToastrService, + public appService: AppService + ) { } + + category: ResourceCategory + categoryID: string + + allCategories: ResourceCategory[] + + editForm = new FormGroup({ + category: new FormControl([]), + isRoot: new FormControl({value: true, disabled: true}), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + parentId: new FormControl({value:null, disabled: true}), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + resourceCandidate: new FormControl([]), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + filteredCategories$: Observable + + displayedColumnsChildrenCatalogs = ['name', 'actions'] + dataSource = new MatTableDataSource() + + subscriptions = new Subscription() + + childrenCategoryFilterCtrl = new FormControl(); + filteredChildrenCategories$: Observable + + resourceCandidatesFilterCtrl = new FormControl(); + filteredResourceCandidates$: Observable + + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + newCategory: boolean = false + ngOnInit() { + this.retrieveResourceCategoryList() + this.subscriptionsInit() + } + + subscriptionsInit() { + this.subscriptions.add( + this.router.events.subscribe( + (event) => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.categoryID = event.snapshot.params.id + this.retrieveResourceCategory() + } + } + ) + ) + + this.subscriptions.add( + this.editForm.get('isRoot').valueChanges.subscribe( + (value: MatCheckboxChange) => { + this.editForm.get('parentId').reset() + if (value) { + this.editForm.get('parentId').disable() + this.editForm.get('parentId').clearValidators() + } else { + this.editForm.get('parentId').enable() + this.editForm.get('parentId').setValidators(Validators.required) + this.editForm.get('parentId').updateValueAndValidity() + } + } + ) + ) + } + + retrieveResourceCategory() { + this.categoryService.retrieveResourceCategory({id: this.categoryID}).subscribe( + data => this.category = data, + error => console.error(error), + () => { + // if (this.category.validFor!==null) this.category.validFor = {endDateTime:null, startDateTime:null} + this.editForm.patchValue(this.category) + + if (this.category.parentId) { + this.editForm.get('isRoot').disable() + this.editForm.patchValue({parentId: this.allCategories.find(el => el.parentId === this.category.parentId)}) + this.editForm.get('parentId').disable() + } else { + // this.editForm.get('isRoot').enable() + } + + this.filteredChildrenCategories$ = this.childrenCategoryFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnChildrenCategories(value) : this.category.category.slice() ) + ) + + this.filteredResourceCandidates$ = this.resourceCandidatesFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnResourceCandidates(value) : this.category.resourceCandidate.slice() ) + ) + } + ) + } + + retrieveResourceCategoryList() { + this.categoryService.listResourceCategory({}).subscribe( + data => this.allCategories = data, + error => console.error(error), + () => { + this.filteredCategories$ = this.editForm.get('parentId').valueChanges.pipe( + startWith(null), + map( (value: null | string | ResourceCategory) => typeof(value) === 'string' ? this._filterParentCategories(value) : this.allCategories.slice() ) + ) + + if (this.activatedRoute.snapshot.params.id) + { + this.categoryID = this.activatedRoute.snapshot.params.id + this.retrieveResourceCategory() + } + else { this.newCategory = true } + } + ) + } + + private _filterParentCategories(value: string): ResourceCategory[] { + const filterValue = value.toLowerCase(); + + return this.allCategories.filter(cat => cat.name.toLowerCase().includes(filterValue)); + } + + displayFn(category?: ResourceCategory): string | undefined { + return category ? category.name : undefined; + } + + private _filterOnChildrenCategories(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.category.category.filter( cat => cat.name.toLowerCase().includes(filterValue) ) + } + + private _filterOnResourceCandidates(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.category.resourceCandidate.filter( cand => cand.name.toLowerCase().includes(filterValue) ) + } + + openCategoryChildDialog() { + const dialogRef = this.dialog.open(CreateResourceCategoryChildrenComponent, {data: this.category, disableClose: true}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Subcategories list is successfully updated") + this.retrieveResourceCategory() + } + } + ) + } + + openCategoryDeleteDialog(element: ResourceCategory) { + const dialogRef = this.dialog.open(DeleteResourceCategoriesComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Resource Category. Please check dependencies.") + } else { + this.toast.success("Subcategories list is successfully updated") + this.retrieveResourceCategory() + } + } + ) + } + + openAssignCandidatesDialog(element: ResourceCategory) { + const dialogRef = this.dialog.open(AssignResourceCandidatesComponent, {data: element, disableClose: true, autoFocus:false}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Resource Specifications list is successfully updated") + this.retrieveResourceCategory() + } + } + ) + } + + navigateToResourceSpec(cand: ResourceCandidateRef) { + let resourceCandidate: ResourceCandidate + this.candidateService.retrieveResourceCandidate({id: cand.id}).subscribe( + data => resourceCandidate = data, + error => this.toast.error("An error occured while retrieving Resource Specification Information"), + () => { + this.router.navigate(['../../resource_spec_update', resourceCandidate.resourceSpecification.id], { relativeTo: this.activatedRoute}) + } + ) + } + + + updateResourceCategory() { + + const updateObj: ResourceCategoryCreate | ResourceCategoryUpdate = { + // category: this.editForm.value.category.map(el => {return {'id': el.id}}), + name: this.editForm.value.name, + description: this.editForm.value.description, + isRoot: this.editForm.getRawValue().isRoot, + lifecycleStatus: this.editForm.value.lifecycleStatus, + version: this.editForm.value.version, + validFor: this.editForm.value.validFor, + } + + //we are taking parentID from the name of parent resource category + if (!this.editForm.get('isRoot').value) + { + updateObj.parentId = this.editForm.get('parentId').value.id + updateObj.isRoot=false + } + + let updatedCategory: ResourceCategory + + if (this.newCategory) { + this.categoryService.createResourceCategory(updateObj).subscribe( + data => { updatedCategory = data }, + error => console.error("Resource Category creation failed with error" + error), + () => { + this.newCategory = false + this.toast.success("Resource Category is successfully created") + this.refreshResourceCategory(updatedCategory) + } + ) + } + else { + this.categoryService.patchResourceCategory({ id: this.categoryID, resourceCategory: updateObj }).subscribe( + data => { updatedCategory = data }, + error => console.error(error), + () => { + this.toast.success("Resource Category is successfully updated") + this.refreshResourceCategory(updatedCategory) + } + ) + } + } + + refreshResourceCategory(updatedCategory : ResourceCategory) { + this.categoryID = updatedCategory.id + this.retrieveResourceCategory() + } + + ngOnDestroy(): void { + this.subscriptions.unsubscribe() + } + + +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.html new file mode 100644 index 0000000000000000000000000000000000000000..6393f0516be1077c59009bf85e1d4b5ce756663d --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.html @@ -0,0 +1,56 @@ +
+

+ + Assign Related Resource Specifications + +

+ +
+ + + + + + + {{spec.name}} + + + +
+ + +
+ + + + + + + + + + + + + + +
Assigned Resource Specifications + {{element.name}} Actions +
+ +
+ +
+ +
+
+ +
+ + +
+ +
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e6e1bd278018a5397de0a6bc9091f8e18d025514 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.scss @@ -0,0 +1,11 @@ +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding: 4px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding: 4px; +} + +.dialog-content-container { + min-width: 40vw; +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..78e633b4445c8145c6a6111750ac22efb0016d17 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssignResourceSpecRelationshipsComponent } from './assign-resource-spec-relationships.component'; + +describe('AssignResourceSpecRelationshipsComponent', () => { + let component: AssignResourceSpecRelationshipsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AssignResourceSpecRelationshipsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AssignResourceSpecRelationshipsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa055c89e22a887ea00cac6bc3b6ba627bb93b85 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/assign-resource-spec-relationships/assign-resource-spec-relationships.component.ts @@ -0,0 +1,123 @@ +import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; +import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; +import { MatChipInputEvent } from '@angular/material/chips'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { ResourceSpecification, ResourceSpecificationUpdate } from 'src/app/openApis/resourceCatalogManagement/models'; +import { Observable } from 'rxjs'; +import { FormControl, FormGroup } from '@angular/forms'; +import { startWith, map } from 'rxjs/operators'; + + + +@Component({ + selector: 'app-assign-resource-spec-relationships', + templateUrl: './assign-resource-spec-relationships.component.html', + styleUrls: ['./assign-resource-spec-relationships.component.scss'] +}) +export class AssignResourceSpecRelationshipsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + resourceSpec: ResourceSpecification + }, + private dialogRef: MatDialogRef, + private specService: ResourceSpecificationService + ) { } + + + @ViewChild('specInput') specInput: ElementRef; + @ViewChild('specInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + displayedColumnsSpecRelationships = ['name', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + + + specInputCtrl = new FormControl(); + + selectedSpecs: ResourceSpecification[] = [] + + nonSelectedSpecs: ResourceSpecification[] + filteredSpecs$: Observable + + ngOnInit() { + this.listResourceSpecs() + } + + listResourceSpecs() { + this.specService.listResourceSpecification({}).subscribe( + data => this.nonSelectedSpecs = data, + error => console.error(error), + () => { + //remove self from available spec list as well as the allready assigned specs + this.nonSelectedSpecs.splice(this.nonSelectedSpecs.findIndex(el => el.id === this.data.resourceSpec.id), 1) + const initiallyAssignedSpecIDs: string[] = this.data.resourceSpec.resourceSpecRelationship.map(el => el.id) + this.nonSelectedSpecs = this.nonSelectedSpecs.filter(spec => !initiallyAssignedSpecIDs.includes(spec.id)) + + this.selectedSpecs = this.data.resourceSpec.resourceSpecRelationship.slice() + this.dataSource.data = this.selectedSpecs + this.dataSource.sort = this.sort + + this.filteredSpecs$ = this.specInputCtrl.valueChanges.pipe( + startWith(null), + map( (spec: string | ResourceSpecification) => typeof(spec) === 'string' ? this._filter(spec) : this.nonSelectedSpecs.slice() ) + ) + } + ) + } + + + + selected(event: MatAutocompleteSelectedEvent): void { + this.selectedSpecs.push(event.option.value); + this.dataSource.data = this.selectedSpecs + + this.nonSelectedSpecs = this.nonSelectedSpecs.filter(el => el.name != event.option.value.name) + + this.specInput.nativeElement.value = ''; + this.specInputCtrl.setValue(null); + } + + private _filter(value: string): ResourceSpecification[] { + const filterValue = value.toLowerCase(); + return this.nonSelectedSpecs.filter(cat => cat.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + removeResourceSpec(spec:ResourceSpecification) { + const index = this.selectedSpecs.indexOf(spec); + if (index >= 0) { + this.selectedSpecs.splice(index, 1); + this.dataSource.data = this.selectedSpecs + this.nonSelectedSpecs.push(spec); + } + } + + + closeDialog() { + this.dialogRef.close() + } + + confirmAssignment() { + + const updateRelationshipsObj: ResourceSpecificationUpdate = { + resourceSpecRelationship: this.selectedSpecs.map(spec =>{ return {id: spec.id, name: spec.name}}) + } + + this.specService.patchResourceSpecification({id: this.data.resourceSpec.id, serviceSpecification: updateRelationshipsObj}).subscribe( + data => {}, + error => console.error(error), + () => {this.dialogRef.close('updated')} + ) + } +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.html new file mode 100644 index 0000000000000000000000000000000000000000..55f18d8ae0136f42a69133d80a82819e358c5b6b --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete attachment {{data.attachmentToBeDeleted.name}} ? +
+ +
+ + +
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..f5d9d6820b764f9e688bf257c4b9ec9cfa4cc1ea --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteResourceSpecAttachmentComponent } from './delete-resource-spec-attachment.component'; + +describe('DeleteResourceSpecAttachmentComponent', () => { + let component: DeleteResourceSpecAttachmentComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteResourceSpecAttachmentComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteResourceSpecAttachmentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..53a6e4cd99166bb388ff3491708f1ea0b3e4b0e5 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-attachment/delete-resource-spec-attachment.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { ResourceSpecificationUpdate, ResourceSpecification, AttachmentRefOrValue } from 'src/app/openApis/resourceCatalogManagement/models'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; + +@Component({ + selector: 'app-delete-resource-spec-attachment', + templateUrl: './delete-resource-spec-attachment.component.html', + styleUrls: ['./delete-resource-spec-attachment.component.scss'] +}) +export class DeleteResourceSpecAttachmentComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + resourceSpec: ResourceSpecification + resourceSpecAttachmentArray: AttachmentRefOrValue[], + attachmentToBeDeleted: AttachmentRefOrValue + }, + private dialogRef: MatDialogRef, + private specService: ResourceSpecificationService + + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + const updateSpecObj: ResourceSpecificationUpdate = { + attachment: this.data.resourceSpecAttachmentArray + } + + this.specService.patchResourceSpecification({ id: this.data.resourceSpec.id, serviceSpecification: updateSpecObj }).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..bef98417ff73252dfe43026af9241af96e52721f --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete characteristic {{data.specToBeDeleted.name}} ? +
+ +
+ + +
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..314dd3d4cf1f9e79deabc33001128f726ecb1bc6 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteResourceSpecCharacteristicsComponent } from './delete-resource-spec-characteristics.component'; + +describe('DeleteResourceSpecCharacteristicsComponent', () => { + let component: DeleteResourceSpecCharacteristicsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteResourceSpecCharacteristicsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteResourceSpecCharacteristicsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..00dffb7afe2f404422d487ccd0c84a4d9182d76f --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/delete-resource-spec-characteristics/delete-resource-spec-characteristics.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ResourceSpecificationCharacteristicReq, ResourceSpecificationUpdate, ResourceSpecification } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; + +@Component({ + selector: 'app-delete-resource-spec-characteristics', + templateUrl: './delete-resource-spec-characteristics.component.html', + styleUrls: ['./delete-resource-spec-characteristics.component.scss'] +}) +export class DeleteResourceSpecCharacteristicsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + resourceSpec: ResourceSpecification + resourceSpecCharacteristicArray:ResourceSpecificationCharacteristicReq[], + specToBeDeleted: ResourceSpecificationCharacteristicReq + }, + private dialogRef: MatDialogRef, + private specService: ResourceSpecificationService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + const updateSpecObj: ResourceSpecificationUpdate = { + resourceSpecCharacteristic: this.data.resourceSpecCharacteristicArray + } + + this.specService.patchResourceSpecification({ id: this.data.resourceSpec.id, serviceSpecification: updateSpecObj }).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/discard-changes.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/discard-changes.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b3511090b98ba9cba1a347000d8bb3ce26f1cad3 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/discard-changes.component.html @@ -0,0 +1,12 @@ +

+ + Discard Changes +

+
+ Unsubmitted changes will be discarded. Are you sure you want to discard changes and continue with the navigation? +
+ +
+ + +
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..3ce26fd21714af112704dc88527c8c96b62e7a4b --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.html @@ -0,0 +1,260 @@ +
+ +

+ + Design New Resource Characteristic +

+ +

+ + Edit Resource Characteristic +

+ +
+ + +
+ + Name + + This field is required + + + + Description + + + +
+
+ + Valid From + + + + date_range + + + + + + Valid Until + + + date_range + + + +
+
+ + + Value Type + + + {{type}} + + This field is required + + + + Of + + + {{type}} + + + + + + + Min Cardinality + + + + + Max Cardinality + + + +
+ Extensible +
+ +
+ Configurable +
+ +
+ +
+
+
+ + Resource Characteristic Value +
+
+ +
+
+ + +
+ +
+ +
+
+ + Alias + + + + Value + + + +
+
+ + + Unit Of Measure + + + +
+ Is + Default + +
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+ + + +
+ + + Alias + + +
+ + + Unit Of Measure + + + +
+ Is + Default + +
+ + +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+ + Value + + + +
+ +
+ + + + +
+ +
+ +
+ +
+
+
+ + +
+
+
+
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..2de02d9624bdbb4c94b31ce81fe68192b5e3642f --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.scss @@ -0,0 +1,16 @@ + +.form-array-container { + max-height: 250px; + overflow-x: hidden; + overflow-y: auto; +} + +.characteristic-value-container { + // padding-top: 0.75rem; + border: 1px; + border-style: dashed; + border-color: #ccc; + margin-bottom: 0.5rem; + background-color: #fafaff; + border-radius: 5px; +} \ No newline at end of file diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ff6e9a396ecf342331dfa0f45f3ab9befbaba2b --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditResourceSpecCharacteristicsComponent } from './edit-resource-spec-characteristics.component'; + +describe('EditResourceSpecCharacteristicsComponent', () => { + let component: EditResourceSpecCharacteristicsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditResourceSpecCharacteristicsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditResourceSpecCharacteristicsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c019ae9645b3759400b1632418d939009376e7c --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec-characteristics/edit-resource-spec-characteristics.component.ts @@ -0,0 +1,209 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ResourceSpecificationCharacteristicRes, ResourceSpecification, ResourceSpecificationUpdate, ResourceSpecificationCharacteristicValue } from 'src/app/openApis/resourceCatalogManagement/models'; +import { FormGroup, FormControl, FormArray, Validators } from '@angular/forms'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; + + +@Component({ + selector: 'app-edit-resource-spec-characteristics', + templateUrl: './edit-resource-spec-characteristics.component.html', + styleUrls: ['./edit-resource-spec-characteristics.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditResourceSpecCharacteristicsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + resourceSpec: ResourceSpecification, + specToBeUpdated: ResourceSpecificationCharacteristicRes, + }, + private dialogRef: MatDialogRef, + private specService: ResourceSpecificationService, + private toast: ToastrService + ) { } + + editFormCharacteristic = new FormGroup({ + name: new FormControl("", Validators.required), + description: new FormControl(), + configurable: new FormControl(), + extensible: new FormControl(), + maxCardinality: new FormControl(1), + minCardinality: new FormControl(0), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + valueType: new FormControl("", Validators.required), + resourceSpecCharacteristicValue: new FormArray([]) + }) + + subValueTypeCtrl = new FormControl('INTEGER') + + valueTypes = ['INTEGER', 'SMALLINT', 'LONGINT', 'FLOAT', 'BINARY', 'BOOLEAN', 'OBJECT', 'ARRAY', 'SET', 'TEXT', 'LONGTEXT', 'ENUM', 'TIMESTAMP'] + subValueTypes = ['INTEGER', 'SMALLINT', 'LONGINT', 'FLOAT', 'BINARY', 'BOOLEAN', 'TEXT', 'LONGTEXT', 'TIMESTAMP'] + + // valueSubType = new FormControl() + subTypeSelection: boolean = false + + newSpec: boolean = false + + compDestroy$ = new Subject() + + isCharValueBlockExpanded: boolean[] = [] + + ngOnInit() { + if (this.data.specToBeUpdated) { + if (!this.data.specToBeUpdated.validFor) this.data.specToBeUpdated.validFor = {endDateTime:null, startDateTime:null} + this.editFormCharacteristic.patchValue(this.data.specToBeUpdated) + + const formArray = this.editFormCharacteristic.get('resourceSpecCharacteristicValue') as FormArray + this.data.specToBeUpdated.resourceSpecCharacteristicValue.forEach( val => { + formArray.push(this.updateFormArrayItem(val)) + this.isCharValueBlockExpanded.push(false) + }) + + this.subValueTypeCtrl.patchValue(this.data.specToBeUpdated.resourceSpecCharacteristicValue[0].valueType) + if (['SET', 'ARRAY', 'ENUM'].includes(this.data.specToBeUpdated.valueType)) { + this.subTypeSelection = true + } + } + + else { this.newSpec = true } + + this.editFormCharacteristic.get('valueType').valueChanges.pipe( + takeUntil(this.compDestroy$) + ) + .subscribe( + val => { + this.editFormCharacteristic.setControl('resourceSpecCharacteristicValue', new FormArray([])) + this.createFormArrayItem() + + + if (['SET', 'ARRAY', 'ENUM'].includes(val)) { + this.subTypeSelection = true + this.subValueTypeCtrl.valueChanges.pipe( + takeUntil(this.compDestroy$) + ) + .subscribe ( + subVal => { + this.editFormCharacteristic.setControl('resourceSpecCharacteristicValue', new FormArray([])) + this.createFormArrayItem() + } + ) + } else { + this.subTypeSelection = false + } + // const formArray = this.editFormCharacteristic.get('resourceSpecCharacteristicValue') as FormArray + // if (val !== 'ARRAY' && val !=='ENUM' && val !=='SET') { + // this.subTypeSelection = false + // formArray.setControl(0, + // new FormGroup({ + // value: new FormGroup({ + // alias: new FormControl(), + // value: new FormControl(), + // }), + // unitOfMeasure: new FormControl(), + // isDefault: new FormControl(), + // valueType: new FormControl(this.editFormCharacteristic.get('valueType').value) + // })) + // } + } + ) + } + + + updateFormArrayItem(CharValue: ResourceSpecificationCharacteristicValue): FormGroup { + return new FormGroup({ + value: new FormGroup({ + alias: new FormControl(CharValue.value.alias), + value: new FormControl(CharValue.value.value), + }), + unitOfMeasure: new FormControl(CharValue.unitOfMeasure), + isDefault: new FormControl({value: (CharValue.isDefault || this.data.specToBeUpdated.valueType === 'ARRAY'), disabled: this.data.specToBeUpdated.valueType === 'ARRAY'}), + valueType: new FormControl(CharValue.valueType) + }) + } + + + createFormArrayItem() { + const formArray = this.editFormCharacteristic.get('resourceSpecCharacteristicValue') as FormArray + + // let isDisabled: boolean = true + let subType: string = this.editFormCharacteristic.get('valueType').value + + if (['SET', 'ARRAY', 'ENUM'].includes(this.editFormCharacteristic.get('valueType').value)) { + // isDisabled = false + subType = this.subValueTypeCtrl.value + } + + formArray.push( + new FormGroup({ + value: new FormGroup({ + alias: new FormControl(), + value: new FormControl(), + }), + unitOfMeasure: new FormControl(), + isDefault: new FormControl({value: this.editFormCharacteristic.get('valueType').value === 'ARRAY', disabled: this.editFormCharacteristic.get('valueType').value === 'ARRAY'}), + valueType: new FormControl(subType) + }) + ) + this.isCharValueBlockExpanded.push(false) + } + + deleteFormArrayItem(index) { + const formArray = this.editFormCharacteristic.get('resourceSpecCharacteristicValue') as FormArray + formArray.removeAt(index) + this.isCharValueBlockExpanded.splice(index, 1) + } + + expandCharValueBlock(index) { + this.isCharValueBlockExpanded[index] = !this.isCharValueBlockExpanded[index] + } + + isDefaultCheckboxChanged(index, event: MatCheckboxChange) { + if (this.editFormCharacteristic.get('valueType').value === "ENUM" && event.checked) { + const formArray = this.editFormCharacteristic.get('resourceSpecCharacteristicValue') as FormArray + for (let i = 0; i < formArray.controls.length; i++) { + if (i !== index) formArray.controls[i].get('isDefault').setValue(false) + } + } + } + + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + if (this.editFormCharacteristic.valid) { + if (this.newSpec) { + this.data.resourceSpec.resourceSpecCharacteristic.push(this.editFormCharacteristic.getRawValue()) + } else { + const updateCharacteristIndex = this.data.resourceSpec.resourceSpecCharacteristic.findIndex(char => char.uuid === this.data.specToBeUpdated.uuid) + this.data.resourceSpec.resourceSpecCharacteristic[updateCharacteristIndex] = this.editFormCharacteristic.getRawValue() + } + + const updateCharacteristicObj: ResourceSpecificationUpdate = { + resourceSpecCharacteristic: this.data.resourceSpec.resourceSpecCharacteristic + } + + this.specService.patchResourceSpecification({id: this.data.resourceSpec.id, serviceSpecification: updateCharacteristicObj}).subscribe( + data => {}, + error => { console.error(error); this.toast.error("An error occurred upon updating Spec Characteristics") }, + () => {this.dialogRef.close('updated')} + ) + } + } + + ngOnDestroy(): void { + this.compDestroy$.next() + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.html b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.html new file mode 100644 index 0000000000000000000000000000000000000000..2944cf1197adb7855b16756d509ee84775d6bf8e --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.html @@ -0,0 +1,472 @@ +
+
+
+

Resource Specification with id #{{specID}} is not found

+
+
+
+ +
+
+
+
+
+
+
+
+

Resource Specification Designer

+ +

Design a new resource + specification

+ +

Edit Design of + {{spec?.name}} Resource Specification +

+

{{spec['@type']}}

+ +
+ Last updated at + {{spec?.lastUpdate | date:'short'}} (Local Time) +
+
+ +
+
+
+ +
+
+ +
+ +
+ +
+
+ + +
+
+
+
+
+ + Name + + + + + Version + + + +
+ Bundle + +
+ + + Description (supports Markdown) + + + + + Lifecycle Status + + + {{status}} + + + + + Category + + + +
+
+ + Valid From + + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+
+ +
+
+ +
+
+
+ +
+
+
+ + + +
+
+
+
+ Resource Specification must be checked as Bundle in order to assign Resource Specification Relationships (See Main Properties Tab). +
+
+
+
{{spec.resourceSpecRelationship.length}} related Resource Specification(s) assigned
+ +
+ +
+
+ +
+ + Apply Filter to related Resource Specifications... + + + +
+ + +
+
+ + +
+
+ + + +
+
+
+
+ There are not any related parties assigned +
+ +
+
Username (Role)
+

{{relatedParty.name}} ({{relatedParty.role}})

+
+
+ + +
+
+ + + +
+
+
+
+ + Apply Filter... + + + +
+ +
+
+
+ + {{tag}} + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name + + {{element.name}} Value + Type + {{element.valueType}} + Default Values + + {{val.value.value}} + ({{val.value.alias}}) + + +
+
+ {{val.unitOfMeasure}}
+ +
+
+ Configurable + {{element.configurable}} Actions +
+ + + +
+
+ + +
+
+ +
+
+ + + +
+
+
+
+ There are not any attachments assigned yet +
+ + + + + + Supported file + types: .jpg, .png, .pdf, .zip, .yaml, .json, + .xml, .txt, .tar.gz + Supported file + types: .jpg, .png, .pdf, .zip, .yaml, .json, + .xml, .txt, .tar.gz + +
+
+ + +
+
+
+ +
+
+ + + + + + + +
+
+
+
+ +
+
+
+
diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.scss b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e8c54221ac6575815549d03567bb0fc970e46d1c --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.scss @@ -0,0 +1,87 @@ +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled:not(.active) { + color: rgba(0,0,0,.30); +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.tab-pane > .card:nth-child(1) { + min-height: max(350px, 20vh); +} + +.tab-pane .card .card-body.space-between{ + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.card-paper { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding-left: 16px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding-right: 16px; +} + +span.hidden { + display: none; +} + +.mat-column-defaultValues span:last-child span span.comma-separator { + display: none; +} + +.value-measureUnits { + color: #727272; + font-size: 11px; + line-height: 1.1; +} + +.mat-cell { + font-size: 13px; +} + +.mat-header-cell { + font-size: 13px; + font-weight: 500; +} + +.spec-relationship-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +mat-chip { + cursor: pointer; +} + +file-upload { + outline-offset: -5px; +} + +file-upload.ng-touched.ng-invalid { + outline-color: #ff0000; + background-color: #fdf4f4; +} + +.file-icon { + // border: 1px solid #c9c9c9; + border-radius: 4px; + // color: #909293; + height: 25px; + width: 25px; + display: inline-flex; + justify-content: center; + align-items: center; +} diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.spec.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..829df16b2147db7815024cf2c037f9656976eace --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditResourceSpecsComponent } from './edit-resource-spec.component'; + +describe('EditResourceSpecComponent', () => { + let component: EditResourceSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditResourceSpecsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditResourceSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.ts b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8178810adc16ffa575ae73adb5ef17315b8a8b7b --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/edit-resource-spec/edit-resource-spec.component.ts @@ -0,0 +1,453 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { HttpErrorResponse } from '@angular/common/http'; +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; +import { FormGroup, FormControl, FormArray, Validators } from '@angular/forms'; +import { ResourceSpecification, ResourceSpecificationCharacteristicValue, ResourceSpecificationUpdate, AttachmentRefOrValue, ResourceSpecificationCharacteristicRes, ResourceSpecificationRelationshipRes, ResourceSpecificationCharacteristicReq } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { MatExpansionPanel } from '@angular/material/expansion'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { EditResourceSpecCharacteristicsComponent } from './edit-resource-spec-characteristics/edit-resource-spec-characteristics.component'; +import { DeleteResourceSpecCharacteristicsComponent } from './delete-resource-spec-characteristics/delete-resource-spec-characteristics.component'; +import { ToastrService } from 'ngx-toastr'; +import { Observable, Subscription, timer } from 'rxjs'; +import { startWith, map } from 'rxjs/operators'; +import { AssignResourceSpecRelationshipsComponent } from './assign-resource-spec-relationships/assign-resource-spec-relationships.component'; +import { FileUploadControl, FileUploadValidators } from '@iplab/ngx-file-upload'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { DeleteResourceSpecAttachmentComponent } from './delete-resource-spec-attachment/delete-resource-spec-attachment.component'; +import { AppService } from 'src/app/shared/services/app.service'; + + +@Component({ + selector: 'app-edit-resource-specs', + templateUrl: './edit-resource-spec.component.html', + styleUrls: ['./edit-resource-spec.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class EditResourceSpecsComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private specResource: ResourceSpecificationService, + private dialog: MatDialog, + private toast: ToastrService, + private router: Router, + public appService: AppService + ) { } + + specID: string + spec: ResourceSpecification + specNotFound: boolean = false + finishedLoading: boolean = false + + editForm = new FormGroup({ + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + isBundle: new FormControl(false), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0"), + category: new FormControl("resource") + }) + + listItems = ["Main Properties", "Resource Specification Relationships", "Related Parties", "Resource Specification Characteristics", "Attachments"] + activeListItem = "Main Properties" + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + + displayedColumnsCharacteristics = ['name', 'type', 'defaultValues', 'configurable', 'actions'] + dataSource = new MatTableDataSource() + + specCharacteristicsTags: string[] = ["All"] + tagFiltervalue:string = "All" + + + + @ViewChild('specSort') set matSort(ms: MatSort) { + this.dataSource.sort = ms; + } + // @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + @ViewChild('specRelationshipsPanel') specRelationshipsPanel: MatExpansionPanel + + newSpecification = false + + resourceRelatedSpecsFilterCtrl = new FormControl(); + filteredRelatedSpecs$: Observable + + attachmentFilesCtrl = new FileUploadControl( null, FileUploadValidators.accept(['.jpeg', '.jpg', '.png', '.zip', '.pdf', '.yaml', '.json', '.xml', '.txt', '.gz', 'application/gzip', 'application/x-gzip'])) + + + dataUrlConverting = false + specResourceRootUrl : string + + subscriptions = new Subscription() + + ngOnInit() { + this.specResourceRootUrl = this.specResource.rootUrl + + this.initSubscriptions() + if (this.activatedRoute.snapshot.params.id) + { + this.specID = this.activatedRoute.snapshot.params.id + this.retrieveResourceSpec() + } else { + this.newSpecification = true + this.finishedLoading = true + } + } + + initSubscriptions() { + this.subscriptions.add(this.router.events.subscribe( + event => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.specID = this.activatedRoute.snapshot.params.id + this.retrieveResourceSpec() + } + } + )) + } + + selectListitem(item: string) { + if (this.editForm.pristine) { + this.activeListItem = item + } else { + const dialogRef = this.dialog.open(DiscardChangesComponent, {autoFocus: true}) + + dialogRef.afterClosed().subscribe (discardChanges => { + if (discardChanges) { + this.editForm.patchValue(this.spec) + this.editForm.markAsPristine() + this.activeListItem = item + } + }) + } + } + + + retrieveResourceSpec() { + this.specResource.retrieveResourceSpecification({id: this.specID}).subscribe( + data => this.spec = data, + error => console.error(error), + () => { + //populate General Panel Info + if (this.spec) { + this.finishedLoading = true + + if (!this.spec.validFor) this.spec.validFor = {endDateTime:null, startDateTime:null} + + this.editForm.patchValue(this.spec) + this.editForm.markAsPristine() + //populate Specification Relationships Panel Info + this.filteredRelatedSpecs$ = this.resourceRelatedSpecsFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnRelatedSpecs(value) : this.spec.resourceSpecRelationship.slice() ) + ) + + //populate Specification Characteristic Panel Info + // filter Spec Characteristic that does not have defined Value Type (parent spec char) + // this.dataSource.data = this.spec.resourceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) + + // update 17/10/2023: This filter was applied for the GST parent characteristic like "energy efficiency", not to show. But the designer/admin would need to see/edit these also + this.dataSource.data = this.spec.resourceSpecCharacteristic.slice() + + // this.dataSource.paginator = this.paginator; + + + this.specCharacteristicsTags = ["All"] + this.tagFiltervalue = "All" + this.specCharacteristicsTags = this.retrieveSpecCharaceristicsTags(this.dataSource.data) + + //populate Resource Descriptor Panel Info + // this.retrieveResourceDesriptor(this.spec.id) + } + else { + this.specNotFound = true + } + } + ) + } + + retrieveSpecCharaceristicsTags(dataSource: ResourceSpecificationCharacteristicRes[]) { + let tagsArray = this.specCharacteristicsTags + dataSource.forEach(char => { + char.resourceSpecCharRelationship.filter( e => e.relationshipType === "tag").forEach(rel => { + if (!tagsArray.includes(rel.name)) tagsArray.push(rel.name) + }) + }); + return tagsArray + } + + retrieveResourceDesriptor(specId) { + this.specResource.retrieveResourceSpecification(specId).subscribe( + data => {}, + error => console.error(error) + ) + } + + bundleCheckboxChanged(event:MatCheckboxChange) { + // if (!event.checked) this.specRelationshipsPanel.close() + if(!event.checked) + this.spec.resourceSpecRelationship=null + } + + private _filterOnRelatedSpecs(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.spec.resourceSpecRelationship.filter( relatedSpec => relatedSpec.name.toLowerCase().includes(filterValue) ) + } + + + applySpecCharFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + filterCharacteristicsByTag(tagName) { + this.tagFiltervalue = tagName + if (tagName === "All") { + this.dataSource.data = this.spec.resourceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) + } else { + this.dataSource.data = this.spec.resourceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) + .filter(specChar => specChar.resourceSpecCharRelationship.some( rel => rel.name === tagName )) + } + } + + openAssignSpecRelationshipDialog() { + const dialogRef = this.dialog.open(AssignResourceSpecRelationshipsComponent, { + data: { + resourceSpec: this.spec + }, + autoFocus: false, + disableClose: true + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Resource Specification Relationship list was successfully updated") + this.retrieveResourceSpec() + } + } + ) + } + + openCharacteristicDesignDialog(characteristic: ResourceSpecificationCharacteristicRes) { + const dialogRef = this.dialog.open(EditResourceSpecCharacteristicsComponent, { + data: { + resourceSpec: this.spec, + specToBeUpdated: characteristic + }, + disableClose: true + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Resource Specification Characteristics list was successfully updated") + this.retrieveResourceSpec() + } + } + ) + } + + openCharacteristicDeleteDialog(characteristic: ResourceSpecificationCharacteristicRes) { + const specToBeDeletedIndex = this.spec.resourceSpecCharacteristic.findIndex(char => char.uuid === characteristic.uuid) + + const newSpecCharacteristicArray: ResourceSpecificationCharacteristicRes[] = this.spec.resourceSpecCharacteristic.slice() + + newSpecCharacteristicArray.splice(specToBeDeletedIndex, 1) + + const dialogRef = this.dialog.open(DeleteResourceSpecCharacteristicsComponent, { + data: { + resourceSpec: this.spec, + resourceSpecCharacteristicArray: newSpecCharacteristicArray, + specToBeDeleted: this.spec.resourceSpecCharacteristic[specToBeDeletedIndex] + } + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Resource Specification Characteristics list was successfully updated") + this.retrieveResourceSpec() + } + } + ) + } + + cloneResourceSpecCharacteristic(characteristic: ResourceSpecificationCharacteristicRes) { + + const cloneCharacteristic: ResourceSpecificationCharacteristicReq = { + name: `Copy of ${characteristic.name}`, + description: characteristic.description, + configurable: characteristic.configurable, + extensible: characteristic.extensible, + minCardinality: characteristic.minCardinality, + maxCardinality: characteristic.maxCardinality, + resourceSpecCharRelationship: characteristic.resourceSpecCharRelationship, + resourceSpecificationCharacteristicValue: characteristic.resourceSpecCharacteristicValue, + validFor: characteristic.validFor, + valueType: characteristic.valueType + } + + this.spec.resourceSpecCharacteristic.push(cloneCharacteristic) + + const updateCharacteristicObj: ResourceSpecificationUpdate = { + resourceSpecCharacteristic: this.spec.resourceSpecCharacteristic + } + + this.specResource.patchResourceSpecification({id: this.specID, serviceSpecification: updateCharacteristicObj}).subscribe( + data => {}, + error => console.error(error), + () => { + this.toast.success("Resource Specification Characteristics list was successfully updated") + this.retrieveResourceSpec() + } + ) + } + + updateResourceSpecGeneral() { + const updateObj: ResourceSpecification = { + isBundle: this.editForm.value.isBundle, + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version, + category: this.editForm.value.category + } + + let updatedSpec: ResourceSpecification + + if (this.newSpecification) { + this.specResource.createResourceSpecification(updateObj).subscribe( + data => { updatedSpec = data }, + error => { + console.error(error) + this.toast.error("An error occurred while creating the new Resource Specification") + }, + () => { + this.newSpecification = false + this.toast.success("Resource Specification was successfully created") + this.router.navigate([updatedSpec.id], {relativeTo: this.activatedRoute}) + this.refreshResourceSpecification(updatedSpec) + } + ) + } + else { + this.specResource.patchResourceSpecification({ id: this.specID, serviceSpecification: updateObj }).subscribe( + data => { updatedSpec = data }, + error => { + console.error(error) + this.toast.error("An error occurred while updating the Resource Specification") + }, + () => { + this.toast.success("Resource Specification was successfully updated") + this.refreshResourceSpecification(updatedSpec) + } + ) + } + } + + refreshResourceSpecification(updatedSpec : ResourceSpecification) { + this.specID = updatedSpec.id + this.retrieveResourceSpec() + } + + submitAttachments() { + if (this.attachmentFilesCtrl.valid) { + // const reader = new FileReader(); + // tmp: File + // reader.readAsBinaryString(this.attachmentFilesCtrl.value[0]) + // this.specResource.addAttachmentToResourceSpec({id: this.specID, afile: reader.result as string}).subscribe( + this.specResource.addAttachmentToResourceSpec({id: this.specID, afile: this.attachmentFilesCtrl.value[0]}).subscribe( + data => { }, + error => { + console.error(error) + this.toast.error("An error occurred while uploading attachment") + }, + () => { + this.toast.success("Attachment was successfully uploaded") + this.clearAttachmentsList() + this.retrieveResourceSpec() + } + ) + } + } + + clearAttachmentsList() { + this.attachmentFilesCtrl.clear() + } + + convertImageToDataUrl (file) { + this.dataUrlConverting = true + + let reader = new FileReader() + reader.readAsDataURL(file) + reader.onload = (_event) => { + this.dataUrlConverting = false + } + } + + openAttachmentDeleteDialog(attachmentRef: AttachmentRefOrValue) { + const attToBeDeletedIndex = this.spec.attachment.findIndex(char => char.id === attachmentRef.id) + + const newSpecAttArray: AttachmentRefOrValue[] = this.spec.attachment.slice() + + newSpecAttArray.splice(attToBeDeletedIndex, 1) + + const dialogRef = this.dialog.open(DeleteResourceSpecAttachmentComponent, { + data: { + resourceSpec: this.spec, + resourceSpecAttachmentArray: newSpecAttArray, + attachmentToBeDeleted: this.spec.attachment[attToBeDeletedIndex] + } + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Resource Specification Characteristics list was successfully updated") + this.retrieveResourceSpec() + } + } + ) + } + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } + +} + +@Component({ + selector: 'app-discard-changes', + templateUrl: 'discard-changes.component.html', +}) +export class DiscardChangesComponent { + + constructor( + public dialogRef: MatDialogRef, + ) {} + + onNoClick(): void { + this.dialogRef.close(false); + } + + onYesClick(): void { + this.dialogRef.close(true) + } +} diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.html b/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..dd8d734ce0510309af200efecc7605d25d6bf54d --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.html @@ -0,0 +1,74 @@ +
+
+
+
+
+
+

Resource Catalogs

+

View and manage resource catalogs

+
+
+ +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description | slice:0:49}}... + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} Version {{element.version}} Lifecycle Status {{element.lifecycleStatus}} Actions + + +
+ + +
+
+
+
+
diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.scss b/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..17e0e4f2d9a72b2627f5700fc66888f7c186d08e --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.spec.ts b/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..4d05cfaffe8b1879ad004944988dc52715adb117 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListResourceCatalogsComponent } from './list-resource-catalogs.component'; + +describe('ListResourceCatalogsComponent', () => { + let component: ListResourceCatalogsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListResourceCatalogsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListResourceCatalogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.ts b/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..6de327a520a36ee4adac9ea3640744541d325c9f --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-catalogs/list-resource-catalogs.component.ts @@ -0,0 +1,88 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +import { ResourceCatalogService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { ResourceCatalog } from 'src/app/openApis/resourceCatalogManagement/models'; +import { EditResourceCatalogsComponent } from '../edit-resource-catalogs/edit-resource-catalogs.component'; +import { DeleteResourceCatalogsComponent } from '../delete-resource-catalogs/delete-resource-catalogs.component'; +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; + +@Component({ + selector: 'app-list-service-catalogs', + templateUrl: './list-resource-catalogs.component.html', + styleUrls: ['./list-resource-catalogs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListResourceCatalogsComponent implements OnInit { + + constructor(private catalogService: ResourceCatalogService, public dialog: MatDialog, private toast: ToastrService) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'actions'] + dataSource = new MatTableDataSource() + + resourceCatalogs: ResourceCatalog[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveCatalogsList() + } + + retrieveCatalogsList() { + this.catalogService.listResourceCatalog({}).subscribe( + data => { this.resourceCatalogs = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.resourceCatalogs + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + openCatalogUpdateDialog(element: ResourceCatalog) { + const dialogRef = this.dialog.open(EditResourceCatalogsComponent, {data: element, disableClose: true}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Resource Catalogs list is successfully updated") + this.retrieveCatalogsList() + } + } + ) + } + + openCatalogDeleteDialog(element: ResourceCatalog) { + const dialogRef = this.dialog.open(DeleteResourceCatalogsComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Service Catalogs list is successfully updated") + this.retrieveCatalogsList() + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.html b/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..44ab40c3f33f46f0c0c35454c39d68fcb7749f84 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.html @@ -0,0 +1,99 @@ +
+
+
+
+
+
+

Resource Categories

+

View and manage resource categories

+
+
+ +
+
+
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description | slice:0:49}}... + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} + Lifecycle Status {{element.lifecycleStatus}} isRoot + check + close + Parent Category {{element.parentName}} Version {{element.version}} Actions + + + + +
+ + + + + +
+ +
+ *Root Categories' names are displayed in underlined text* +
+ + +
+
+
+
diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.scss b/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..d91a7dfe3871f70cbc7e372cd383b98c6ca4a081 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.scss @@ -0,0 +1,30 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} + +.isRoot-class td:first-of-type{ + // color:#3f51b5 + text-decoration: underline; +} + +mat-hint { + background: #fff; +} + +.isRootDecoration { + text-decoration: underline; +} + +.checked { + color: green +} + +.crossed { + color: red +} + +.table td:first-child { + border-top: 0 !important; +} diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.spec.ts b/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a42147f4d5e44f9266b0e880f6081e449bc6d917 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListResourceCategoriesComponent } from './list-resource-categories.component'; + +describe('ListResourceCategoriesComponent', () => { + let component: ListResourceCategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListResourceCategoriesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListResourceCategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.ts b/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..5a6c043aab66467d54d5223f4d201f55e4a6947b --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-categories/list-resource-categories.component.ts @@ -0,0 +1,93 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +import { ResourceCategory } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceCategoryService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { DeleteResourceCategoriesComponent } from '../delete-resource-categories/delete-resource-categories.component'; +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-list-service-categories', + templateUrl: './list-resource-categories.component.html', + styleUrls: ['./list-resource-categories.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListResourceCategoriesComponent implements OnInit { + + constructor( + private categoryService: ResourceCategoryService, + public dialog: MatDialog, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'isRoot', 'parent', 'actions'] + dataSource = new MatTableDataSource() + + resourceCategories: ResourceCategory[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveCategoriesList() + } + + retrieveCategoriesList() { + this.categoryService.listResourceCategory({}).subscribe( + data => { this.resourceCategories = data }, + error => { console.error(error) }, + () => { + this.resourceCategories.forEach(cat => { + if (cat.parentId) { + const parentCategory = this.resourceCategories.find(el => el.id === cat.parentId) + if (parentCategory) { + cat['parentName'] = parentCategory.name + } + } + }) + + this.dataSource.data = this.resourceCategories + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + + openCategoryDeleteDialog(element: ResourceCategory) { + const dialogRef = this.dialog.open(DeleteResourceCategoriesComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Resource Category. Please check dependencies.") + } else if (result) { + this.toast.success("Resource Categories list is successfully updated") + this.retrieveCategoriesList() + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.html b/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.html new file mode 100644 index 0000000000000000000000000000000000000000..17627e3417b908c6da45d43c6667b5a1c0e66f34 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.html @@ -0,0 +1,91 @@ +
+
+
+
+
+
+

Resource Specifications

+

View and manage resource specifications

+
+
+ + +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description}} + {{element.description | slice:0:49}}... + Version {{element.version}} Category {{element.category}} Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} + Lifecycle Status {{element.lifecycleStatus}} Actions + + + + + +
+ + + +
+
+
+
+
diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.scss b/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..17e0e4f2d9a72b2627f5700fc66888f7c186d08e --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.spec.ts b/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8722c278d602b302ff8ba9ee437cc8f5931b6548 --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListResourceSpecsComponent } from './list-resource-spec.component'; + +describe('ListResourceSpecComponent', () => { + let component: ListResourceSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListResourceSpecsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListResourceSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.ts b/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..d15ec238cb0d1821d17342f6a3f77d591535d92a --- /dev/null +++ b/src/app/p_resources/admin/catalogManagement/list-resource-spec/list-resource-spec.component.ts @@ -0,0 +1,125 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +import { ResourceSpecification } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { DeleteResourceSpecComponent } from '../delete-resource-spec/delete-resource-spec.component'; +import { ToastrService } from 'ngx-toastr'; +import { HttpErrorResponse } from '@angular/common/http'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; + + +@Component({ + selector: 'app-list-resource-spec', + templateUrl: './list-resource-spec.component.html', + styleUrls: ['./list-resource-spec.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListResourceSpecsComponent implements OnInit { + + constructor( + private specService: ResourceSpecificationService, + public dialog: MatDialog, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'version', 'category', 'lastUpdate', 'lifecycleStatus', 'actions'] + dataSource = new MatTableDataSource() + + serviceSpecs: ResourceSpecification[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveSpecsList() + } + + retrieveSpecsList() { + this.specService.listResourceSpecification({}).subscribe( + data => { this.serviceSpecs = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.serviceSpecs + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + // case '@type': return item[property] === 'CustomerFacingResourceSpecification' ? 'CFSS': 'RFSS'; + default: return item[property]; + } + } + } + ) + } + + openSpecDeleteDialog(element: ResourceSpecification) { + const dialogRef = this.dialog.open(DeleteResourceSpecComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Resource Specification") + } else { + this.toast.success("Resource Specification list is successfully updated") + this.retrieveSpecsList() + } + } + } + ) + } + + // cloneResourceSpec(spec: ResourceSpecification) { + + // const cloneObj: ResourceSpecificationCreate = { + // name: `Copy of ${spec.name}`, + // description: spec.description, + // isBundle: spec.isBundle, + // lifecycleStatus: spec.lifecycleStatus, + // // relatedParty: spec.relatedParty, + // resourceSpecification: spec.resourceSpecification, + // serviceLevelSpecification: spec.serviceLevelSpecification, + // serviceSpecCharacteristic: spec.serviceSpecCharacteristic, + // serviceSpecRelationship: spec.serviceSpecRelationship, + // targetResourceSchema: spec.targetResourceSchema, + // validFor: spec.validFor, + // version: spec.version + // } + // console.log(cloneObj) + + // this.specService.createResourceSpecification(cloneObj).subscribe( + // data => console.log(data), + // error => console.error(error), + // () => this.retrieveSpecsList() + // ) + + // this.specService.cloneResourceSpecification(spec.id).subscribe( + // data => console.log(data), + // error => { + // console.error(error) + // this.toast.error("An error occured while attempting to clone Resource Specification") + // }, + // () => { + // this.retrieveSpecsList() + // this.toast.success("Resource Specification is successfully cloned") + // } + // ) + // } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.html b/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.html new file mode 100644 index 0000000000000000000000000000000000000000..770dd808e4e46e5151f57e05f46aef314c7f19de --- /dev/null +++ b/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.html @@ -0,0 +1,70 @@ +
+
+
+
+
+
+

Resource Inventory

+

View and manage Resource Inventory

+
+ +
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Type {{element['@type']}} Category {{element.category}} Status {{element.resourceStatus}} Starting Operating Date {{element.startOperatingDate | date:'d MMM y, h:mm a'}}Actions + + + + +
+ + + +
+
+
+
+
diff --git a/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.scss b/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..17e0e4f2d9a72b2627f5700fc66888f7c186d08e --- /dev/null +++ b/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.spec.ts b/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..eea6f225fea51e56b4e987bfd3e906796bbd2ccb --- /dev/null +++ b/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListResourceInventoryComponent } from './list-resource-inventory.component'; + +describe('ListResourceInventoryComponent', () => { + let component: ListResourceInventoryComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListResourceInventoryComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListResourceInventoryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.ts b/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..450f6b4228ccbff69fb12d21c73b234741ebf06a --- /dev/null +++ b/src/app/p_resources/admin/inventoryManagement/list-resource-inventory/list-resource-inventory.component.ts @@ -0,0 +1,104 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ResourceService } from 'src/app/openApis/resourceInventoryManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Resource } from 'src/app/openApis/resourceInventoryManagement/models'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { HttpErrorResponse } from '@angular/common/http'; +import { DeleteResourceComponent } from '../../catalogManagement/delete-resource/delete-resource.component'; + +@Component({ + selector: 'app-list-resource-inventory', + templateUrl: './list-resource-inventory.component.html', + styleUrls: ['./list-resource-inventory.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class ListResourceInventoryComponent implements OnInit { + + constructor( + public dialog: MatDialog, + private resourceService: ResourceService, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', '@type', 'category', 'resourceStatus', 'startOperatingDate', 'actions'] + dataSource = new MatTableDataSource() + + resources: Resource[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveResourceList() + } + + retrieveResourceList() { + this.resourceService.listResource({}).subscribe( + data => { this.resources = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.resources + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'startOperatingDate': return new Date(item.startOperatingDate).getTime(); + default: return item[property]; + } + } + } + ) + } + + openResourceDeleteDialog(element: Resource) { + const dialogRef = this.dialog.open(DeleteResourceComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + console.log(result) + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Resource") + } else { + this.toast.success("Resource list is successfully updated") + this.retrieveResourceList() + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + resourceStateClassSelector(state:'null'| 'enabled'| 'disabled') { + let cssClass: string = '' + switch (state) { + case 'enabled': + cssClass += ' text-primary' + break; + case 'null': + cssClass += ' text-danger' + break; + case 'disabled': + cssClass += ' text-success' + break; + default: + cssClass += ' text-warning' + } + return cssClass + } + +} diff --git a/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.html b/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.html new file mode 100644 index 0000000000000000000000000000000000000000..bdf2699a96bdb0a2024b74b4f84e7110f34e2913 --- /dev/null +++ b/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.html @@ -0,0 +1,304 @@ +
+
+
+

Resource with id #{{ resourceID }} is not found

+
+
+
+
+
+
+
+
+
+
+
+

New Resource

+

Resource Overview And Management

+

+ Overview and Manage + {{ resource?.name }} + resource +

+

+ {{ resource["@type"] }} +

+ + +
+ Resource started operating at {{ resource?.startOperatingDate | date: "short" }} (Local Time) +
+
+
+
+
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+
+
Name
+

{{ resource?.name }}

+
+ +
+
Category
+

{{ resource?.category }} + +

+
+ +
+
Resource Version
+

{{ resource?.resourceVersion }}

+
+ +
+
Description
+

{{ resource?.description }}

+
+ + +
+
Resource Specification
+

+ {{ resource?.resourceSpecification?.name }} +

+
+ +
+
Resource Status
+

{{ resource?.resourceStatus }}

+
+ +
+ +
+
+
Operational State
+

{{ resource?.operationalState }}

+
+ +
+
Administrative State
+

{{ resource?.administrativeState }}

+
+ +
+
Usage State
+

{{ resource?.usageState }}

+
+
+ +
+
+ +
Starting Date
+

+ {{ resource?.startOperatingDate | date: "d MMM y, h:mm a" }} - Local Time +

+

+ {{ resource?.startOperatingDate | date: "d MMM y, h:mm a":"UTC" }} - UTC +

+
+
+ +
+ +
Ending Date
+

+ {{ resource?.endOperatingDate | date: "d MMM y, h:mm a" }} - Local Time +

+

+ {{ resource?.endOperatingDate | date: "d MMM y, h:mm a":"UTC" }} - UTC +

+
+
+ +
+ +
+
+
Notes
+
+
+
+
+ {{ note.text }} +
+ written by {{ note.author }} @ + {{ note.date | date: "d MMM y, h:mm a" }} +
+
+
+
+
+
+
+
+ + +
+
+
+ +
+
+
+
+ There are not any Resource Characteristics + allocated. +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Characteristic
+
+
Value (Alias)
+
+ {{ specCharacteristic.name }} + + {{ specCharacteristic.value.value }} + ({{ + specCharacteristic.value.alias + }}) + + + + + + + +
+ {{ value.value }} + ({{ value.alias }}) +
+
+
+
+ +
+
+
+ +
+
+
+
+
{{resource.resourceRelationship.length}} related Resources assigned
+
+
+ + Apply Filter to related Resources... + + + +
+ + +
+ +
+ +
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.scss b/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..3cf02338086e3803ce0b669bceda6a875346c3b5 --- /dev/null +++ b/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.scss @@ -0,0 +1,16 @@ +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled:not(.active) { + color: rgba(0,0,0,.30); +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.tab-pane > .card:nth-child(1) { + min-height: max(350px, 20vh); +} diff --git a/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.spec.ts b/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8667ae28fa6a04ce186219f50f50e724814d8fa0 --- /dev/null +++ b/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PreviewResourceComponent } from './preview-resource.component'; + +describe('PreviewResourceComponent', () => { + let component: PreviewResourceComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PreviewResourceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PreviewResourceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.ts b/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..5e15c4602438b8661c1ecd9c96004f1d46cc4518 --- /dev/null +++ b/src/app/p_resources/admin/inventoryManagement/preview-resource/preview-resource.component.ts @@ -0,0 +1,124 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ActivatedRoute, ActivationEnd, Router } from '@angular/router'; +import { ResourceService } from 'src/app/openApis/resourceInventoryManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { Resource, ResourceRelationshipRes } from 'src/app/openApis/resourceInventoryManagement/models'; +import { FormControl } from '@angular/forms'; +import { Subscription, Observable } from 'rxjs'; +import { startWith, map} from 'rxjs/operators' +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { MatDialog } from '@angular/material/dialog'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { AppService } from 'src/app/shared/services/app.service'; +import { ResourceOrderService } from 'src/app/openApis/resourceOrderManagement/services'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { MatAutocomplete, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { MatTableDataSource } from '@angular/material/table'; +import { MatSort } from '@angular/material/sort'; + +@Component({ + selector: 'app-preview-resource', + templateUrl: './preview-resource.component.html', + styleUrls: ['./preview-resource.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) + +export class PreviewResourceComponent implements OnInit { + + constructor( + private resourceSpecificationService: ResourceSpecificationService, + private activatedRoute: ActivatedRoute, + private resourceService: ResourceService, + private resourceOrderCreate: ResourceOrderService, + private toast: ToastrService, + private router: Router, + private dialog: MatDialog, + private sortingService: SortingService, + private authService: AuthService, + private toastr: ToastrService, + public appService: AppService + ) { } + + resourceID: string + resource: Resource + resourceNotFound: boolean + finishedLoading: boolean + + newResource = false + + availableOperationalStates = ['disable','enable'] + availableAdministrativeStates = ['locked','shutdown','unlocked'] + availableUsageStates = ['active','busy','idle'] + availableResourceStatuses = ['alarm','available','reserved','standby','suspended','unknown'] + availableCategories = ['OSM Tenant', 'OSM VIM'] + + subscriptions = new Subscription() + + listItems = ["Main Properties", "Resource Characteristics","Resource Relationships"] + activeListItem = "Main Properties" + + relatedResourcesFilterCtrl = new FormControl(); + filteredResourceRelationships$: Observable + + + ngOnInit() { + this.initSubscriptions() + + if (this.activatedRoute.snapshot.params.id) + { + this.resourceID = this.activatedRoute.snapshot.params.id + this.retrieveResource() + } + } + + initSubscriptions() { + this.subscriptions.add(this.router.events.subscribe( + event => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.resourceID = this.activatedRoute.snapshot.params.id + this.retrieveResource() + } + } + )) + } + + + selectListitem(item: string) { + this.activeListItem = item + } + + retrieveResource() { + this.resourceService.retrieveResource({id: this.resourceID}).subscribe( + data => { + this.resource = data + }, + error => { + console.error(error) + }, + () => { + this.finishedLoading = true + if (!this.resource) { + this.resourceNotFound = true + } else { + this.resourceNotFound = false + + this.resource.resourceCharacteristic.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + this.resource.note.sort(this.sortingService.ascDateSortingFuncByDateProperty()) + + //populate Specification Relationships Panel Info + this.filteredResourceRelationships$ = this.relatedResourcesFilterCtrl.valueChanges.pipe( + startWith(null), + map((value: null | string) => value ? this._filterOnRelatedResources(value) : this.resource.resourceRelationship.slice()) + ) + } + } + ) + } + private _filterOnRelatedResources(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.resource.resourceRelationship.filter( relatedSpec => relatedSpec.resource.name.toLowerCase().includes(filterValue) ) + } +} diff --git a/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.html b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.html new file mode 100644 index 0000000000000000000000000000000000000000..c2489bcc0d86cacfb1bcb4dc92fddac59d44792b --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete resource pool {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.scss b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.spec.ts b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..c692577a65cbf8163350c9c40db55d0e09ef5b97 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.spec.ts @@ -0,0 +1,24 @@ +import { DeleteResourcePoolComponent } from './delete-resource-pool.component'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +describe('DeleteServiceCatalogComponent', () => { + let component: DeleteResourcePoolComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteResourcePoolComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteResourcePoolComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.ts b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c6f34803d07eaa6b128f96caad0190914d0f2939 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-pool/delete-resource-pool.component.ts @@ -0,0 +1,37 @@ +import { ResourcePoolService } from 'src/app/openApis/resourcePoolManagement/services'; +import { ResourcePool } from '../../../../openApis/resourcePoolManagement/models/resource-pool'; +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; + + +@Component({ + selector: 'delete-resource-pool', + templateUrl: './delete-resource-pool.component.html', + styleUrls: ['./delete-resource-pool.component.scss'] +}) +export class DeleteResourcePoolComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ResourcePool, + private resourcePoolervice: ResourcePoolService, + private dialogRef: MatDialogRef + ) { } + + ngOnInit() { + } + + confirmDelete() { + //params: DeleteResourcePoolParams; + + this.resourcePoolervice.deleteResourcePool({ id: this.data.id}).subscribe( + data => { }, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.html b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.html new file mode 100644 index 0000000000000000000000000000000000000000..363839e250b45831c0c6d658acc4954eb8ace97a --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete resource reservation {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.scss b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.spec.ts b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b1df19f9a728282158366479c7e957c4d632c7d7 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.spec.ts @@ -0,0 +1,25 @@ +import { DeleteResourceReservationComponent } from './delete-resource-reservation.component'; + +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +describe('DeleteResourceReservationComponent', () => { + let component: DeleteResourceReservationComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteResourceReservationComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteResourceReservationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.ts b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..1e5096cec620eda07cdb1dc869c2cbedc4f3a58f --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/delete-resource-reservation/delete-resource-reservation.component.ts @@ -0,0 +1,38 @@ +import { Reservation } from './../../../../openApis/resourcePoolManagement/models/reservation'; +import { ResourcePoolService, ReservationService } from 'src/app/openApis/resourcePoolManagement/services'; +import { ResourcePool } from '../../../../openApis/resourcePoolManagement/models/resource-pool'; +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; + + +@Component({ + selector: 'delete-resource-reservation', + templateUrl: './delete-resource-reservation.component.html', + styleUrls: ['./delete-resource-reservation.component.scss'] +}) +export class DeleteResourceReservationComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Reservation, + private resourceReservationService: ReservationService, + private dialogRef: MatDialogRef + ) { } + + ngOnInit() { + } + + confirmDelete() { + //params: DeleteResourcePoolParams; + + this.resourceReservationService.deleteReservation({ id: this.data.id}).subscribe( + data => { }, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.html b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ea005ffffbb8e0c76e17b2ccf8f3ee4078ac7a2a --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.html @@ -0,0 +1,56 @@ +
+

+ + Assign Related Resources + +

+ +
+ + + + + + + {{spec.name}} + + + +
+ + +
+ + + + + + + + + + + + + + +
Assigned Resources + {{element.name}} Actions +
+ +
+ +
+ +
+
+ +
+ + +
+ +
\ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.scss b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..d926c113a1bbc13d1bf42075597b8243a9cb8aea --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.scss @@ -0,0 +1,22 @@ +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding: 4px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding: 4px; +} + +.dialog-content-container { + min-width: 40vw; +} + +mat-dialog-content { + min-height: 15vw; +} + + +mat-dialog-content .spinner-container{ +display: flex; +align-items: center; +justify-content: center; +} \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.spec.ts b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b28b04f643122b019e912540f228c8ed20be9eeb --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.spec.ts @@ -0,0 +1,3 @@ + + + diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.ts b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..866bc0b4ccada5c249b8d663e462d06cb0970137 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/assign-resources/assign-pool-resources.component.ts @@ -0,0 +1,140 @@ +import { SortingService } from '../../../../../shared/functions/sorting.service'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { ResourcePoolUpdate } from '../../../../../openApis/resourcePoolManagement/models/resource-pool-update'; +import { ResourceRef } from '../../../../../openApis/serviceInventoryManagement/models/resource-ref'; +import { ResourceService } from 'src/app/openApis/resourceInventoryManagement/services'; +import { Resource } from 'src/app/openApis/resourceInventoryManagement/models'; +import { ResourcePool } from '../../../../../openApis/resourcePoolManagement/models/resource-pool'; +import { ResourcePoolService } from 'src/app/openApis/resourcePoolManagement/services'; +import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; +import { Observable } from 'rxjs'; +import { FormControl, FormGroup } from '@angular/forms'; +import { startWith, map } from 'rxjs/operators'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; + + + +@Component({ + selector: 'app-assign-pool-resources', + templateUrl: './assign-pool-resources.component.html', + styleUrls: ['./assign-pool-resources.component.scss'] +}) +export class AssignPoolResourceRelationshipsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public resourcePool: ResourcePool, + private dialogRef: MatDialogRef, + private resourcePoolService: ResourcePoolService, + private resourceService: ResourceService, + private sortingService: SortingService, + ) { } + + + @ViewChild('specInput', {static: false}) specInput: ElementRef; + @ViewChild('specInput', {static: false, read: MatAutocompleteTrigger}) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto', {static: false}) matAutocomplete: MatAutocomplete; + + displayedColumnsSpecRelationships = ['name', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + + + resourceInputCtrl = new FormControl(); + + + selectedResources: Resource[] = [] + nonSelectedResources: Resource[] + filteredResources$: Observable + + ngOnInit() { + this.listResources() + } + + listResources() { + this.resourceService.listResource({}).subscribe( + data => this.nonSelectedResources = data, + error => console.error(error), + () => { + //remove self from available spec list as well as the allready assigned resources + //this.nonSelectedResources.splice(this.nonSelectedResources.findIndex(el => el.id === this.resource.id), 1) + const initiallyAssignedResourceIDs: string[] = this.resourcePool.capacity?.resources.map(el => el.id) + this.nonSelectedResources = this.nonSelectedResources.filter(resource => !initiallyAssignedResourceIDs?.includes(resource.id)) + this.nonSelectedResources.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + if (!this.resourcePool.capacity){ + this.resourcePool.capacity = { resources:[] }; + } + + this.selectedResources = this.resourcePool.capacity.resources.slice() + this.dataSource.data = this.selectedResources + if (this.selectedResources){ + this.dataSource.sort = this.sort + } + + this.filteredResources$ = this.resourceInputCtrl.valueChanges.pipe( + startWith(null), + map( (resource: string | Resource) => typeof(resource) === 'string' ? this._filter(resource) : this.nonSelectedResources.slice() ) + ) + } + ) + } + + + + selected(event: MatAutocompleteSelectedEvent): void { + this.selectedResources.push(event.option.value); + this.dataSource.data = this.selectedResources + + this.nonSelectedResources = this.nonSelectedResources.filter(el => el.name != event.option.value.name) + + this.specInput.nativeElement.value = ''; + this.resourceInputCtrl.setValue(null); + } + + private _filter(value: string): Resource[] { + const filterValue = value.toLowerCase(); + return this.nonSelectedResources.filter(res => res.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + removeResources(spec:Resource) { + const index = this.selectedResources.indexOf(spec); + if (index >= 0) { + this.selectedResources.splice(index, 1); + this.dataSource.data = this.selectedResources + this.nonSelectedResources.push(spec); + } + } + + + closeDialog() { + this.dialogRef.close() + } + + confirmAssignment() { + + const updateRelationshipsObj: ResourcePoolUpdate = { + + capacity: { + resources : this.selectedResources.map(spec =>{ return {id: spec.id, name: spec.name}}) + } + + } + this.resourcePoolService.patchResourcePool({id: this.resourcePool.id , body : updateRelationshipsObj}).subscribe( + data => {}, + error => console.error(error), + () => { + this.dialogRef.close('updated') + } + ) + } +} diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/discard-changes.component.html b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/discard-changes.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b3511090b98ba9cba1a347000d8bb3ce26f1cad3 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/discard-changes.component.html @@ -0,0 +1,12 @@ +

+ + Discard Changes +

+
+ Unsubmitted changes will be discarded. Are you sure you want to discard changes and continue with the navigation? +
+ +
+ + +
diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.html b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.html new file mode 100644 index 0000000000000000000000000000000000000000..6972e02e10e64f3a3fa522c6356ddf274a955c11 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.html @@ -0,0 +1,142 @@ +
+
+
+

Resource Pool with id #{{resourcePoolID}} is not found

+
+
+
+ +
+
+
+
+
+
+
+
+

Resource Pool Designer

+ +

Design a new Resource Pool

+ +

Edit design of + {{resourcePool?.name}} Resource Pool +

+ +
+ Last updated at + {{resourcePool?.lastUpdate | date:'short'}} (Local Time) +
+
+
+
+
+ + + +
+
+ +
+ +
+ +
+
+ +
+
+
+
+ +
+ + Name + + + + + + Description + + + + +
+ +
+
+ +
+
+ +
+ +
+
+
+ + + +
+
+
+
+
+ 0 + + {{resourcePool.capacity.resources.length}} + assigned Resource(s) to the Resource Pool +
+ +
+ +
+
+ +
+ + Apply Filter to the assigned Resources... + + + +
+ + + +
+
+
+ + +
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.scss b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..dd74aeff40dc7acd2f22fd47bbd698e6054bf88f --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.scss @@ -0,0 +1,16 @@ +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled:not(.active) { + color: rgba(0,0,0,.4) !important; +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.tab-pane > .card:nth-child(1) { + min-height: max(350px, 20vh); +} diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.spec.ts b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6b09a51dd42ada892f0e62a2010f9150b0be7057 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditResourcePoolComponent } from './edit-resource-pool.component'; + +describe('EditServiceCatalogsComponent', () => { + let component: EditResourcePoolComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditResourcePoolComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditResourcePoolComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.ts b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..b5dc54eeadf50fb869a4b46f2e1677a60add648f --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-pool/edit-resource-pool.component.ts @@ -0,0 +1,188 @@ +import { ResourceRef } from './../../../../openApis/serviceOrderingManagement/models/resource-ref'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { ResourcePoolUpdate } from '../../../../openApis/resourcePoolManagement/models/resource-pool-update'; +import { ResourcePoolCreate } from '../../../../openApis/resourcePoolManagement/models/resource-pool-create'; +import { ResourcePoolService } from 'src/app/openApis/resourcePoolManagement/services'; +import { ResourcePool } from '../../../../openApis/resourcePoolManagement/models/resource-pool'; +import { Component, OnInit, ViewChild, ElementRef, Inject } from '@angular/core'; +import { FormGroup, FormControl } from '@angular/forms'; +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { Observable } from 'rxjs'; +import { startWith, map } from 'rxjs/operators'; +import { AssignPoolResourceRelationshipsComponent } from './assign-resources/assign-pool-resources.component'; +import { DiscardChangesComponent } from '../../catalogManagement/edit-resource-spec/edit-resource-spec.component'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; + + +@Component({ + selector: 'edit-resource-pool', + templateUrl: './edit-resource-pool.component.html', + styleUrls: ['./edit-resource-pool.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class EditResourcePoolComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private resourcePoolService: ResourcePoolService, + private dialog: MatDialog, + private toast: ToastrService, + private router: Router, + ) { } + + + resourcePoolID: string + resourcePool: ResourcePool + newResourcePool: boolean = false + + resourcePoolNotFound: boolean = false + finishedLoading: boolean = false + + editForm = new FormGroup({ + name: new FormControl([]), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + relatedParty: new FormControl(), + // validFor: new FormGroup({ + // endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + // startDateTime: new FormControl(new Date()) + // }), + // version: new FormControl("0.1.0") + }) + + listItems = ["Main Properties", "Capacity"] + activeListItem = "Main Properties" + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + // selectable = true; + // removable = true; + // addOnBlur = true; + + assignedResourcesFilterCtrl = new FormControl(); + filteredResourceRefs$: Observable + + + ngOnInit() { + if (this.activatedRoute.snapshot.params.id) { + this.resourcePoolID = this.activatedRoute.snapshot.params.id + this.retrieveResourcePool() + } + else { + this.newResourcePool = true + this.finishedLoading = true + } + } + + + retrieveResourcePool() { + this.resourcePoolService.retrieveResourcePool({ id: this.resourcePoolID }).subscribe( + data => this.resourcePool = data, + error => console.error(error), + () => { + if (this.resourcePool) { + this.finishedLoading = true + + // if (!this.resourcePool.capacity){ + // this.resourcePool = {capacity:{resources:[]}} + // } + this.editForm.patchValue(this.resourcePool) + this.editForm.markAsPristine() + //populate Relationships Panel Info + + this.filteredResourceRefs$ = this.assignedResourcesFilterCtrl.valueChanges.pipe( + startWith(null), + map((value: null | string) => value ? this._filterOnRelatedResourceRefs(value) : this.resourcePool.capacity?.resources.slice()) + ) + } else { + this.resourcePoolNotFound = true + } + } + ) + } + + private _filterOnRelatedResourceRefs(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.resourcePool.capacity.resources.filter( relatedSpec => relatedSpec.name.toLowerCase().includes(filterValue) ) + } + + selectListItem(item: string) { + if (this.editForm.pristine) { + this.activeListItem = item + } else { + const dialogRef = this.dialog.open(DiscardChangesComponent, {autoFocus: true}) + + dialogRef.afterClosed().subscribe (discardChanges => { + if (discardChanges) { + this.editForm.patchValue(this.resourcePool) + this.editForm.markAsPristine() + this.activeListItem = item + } + }) + } + } + + updateResourcePoolMainProperties() { + + const updateObj: ResourcePoolCreate | ResourcePoolUpdate = { + description: this.editForm.value.description, + name: this.editForm.value.name + } + + const params: ResourcePoolService.CreateResourcePoolParams = { + body: updateObj, + } + + let updatedRP: ResourcePool + + if (this.newResourcePool) { + this.resourcePoolService.createResourcePool(params).subscribe( + data => { updatedRP = data }, + error => console.error(error), + () => { + this.newResourcePool = false + this.toast.success("Resource Pool was successfully created") + this.router.navigate([updatedRP.id], {relativeTo: this.activatedRoute}) + this.refreshResourcePool(updatedRP) + } + ) + } + + else { + this.resourcePoolService.patchResourcePool({id: this.resourcePoolID, body: updateObj}).subscribe( + data => { updatedRP = data }, + error => console.error(error), + () => { + this.toast.success("Resource Pool was successfully updated") + this.refreshResourcePool(updatedRP) + } + ) + } + } + + refreshResourcePool(updatedSpec: ResourcePool) { + this.resourcePoolID = updatedSpec.id + this.retrieveResourcePool() + } + + openAssignResourceRelationshipDialog() { + const dialogRef = this.dialog.open(AssignPoolResourceRelationshipsComponent, { + data: this.resourcePool, + autoFocus: false, + disableClose: true + }) + + dialogRef.afterClosed().subscribe( + result => { + if (result) { + this.toast.success("Resource Pool Capacity list was successfully updated") + this.retrieveResourcePool() + } + } + ) + } +} \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component.html b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component.html new file mode 100644 index 0000000000000000000000000000000000000000..4130ff392fe0cd9c394ee267bd6762ed78a0a821 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component.html @@ -0,0 +1,118 @@ +
+
+
+

Resource reservation with id #{{resourceReservationID}} is not found

+
+
+
+ + + + +
+
+
+
+
+
+
+
+

Resource Reservation Designer

+ +

Create a new Resource Reservation

+ +

Edit + {{resourceReservation?.name}} Resource Reservation +

+ + +
+ Last updated at + {{resourceReservation?.lastUpdate | date:'short'}} (Local Time) +
+
+ +
+
+
+ + + +
+
+
+ + + Name + + + + + Description + + + + + From Resource Pool + + + + + {{ rPool.name + }} + + + + + Resources to reserve + + + {{r.name}} + + + + +
+ + Requested Period Start DateTime + + date_range + + Date is displayed in Local Time (UTC: + {{editForm.value.requestedPeriodStartDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+ +
+ + Requested Period End DateTime + + date_range + + Date is displayed in Local Time (UTC: + {{editForm.value.requestedPeriodEndDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+ +
+ + +
+
+ +
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component.scss b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component.ts b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..7062b59cd955d2f68c3802ec6f87e2889b010d57 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/edit-resource-reservation/edit-resource-reservation.component.ts @@ -0,0 +1,263 @@ +import { ResourceRef } from './../../../../openApis/serviceInventoryManagement/models/resource-ref'; +import { MatTableDataSource } from '@angular/material/table'; +import { SortingService } from './../../../../shared/functions/sorting.service'; +import { ResourceService } from 'src/app/openApis/resourceInventoryManagement/services'; +import { Resource } from './../../../../openApis/serviceCatalogManagement/models/resource'; +import { ResourcePool } from './../../../../openApis/resourcePoolManagement/models/resource-pool'; + +import { ReservationUpdate } from '../../../../openApis/resourcePoolManagement/models/reservation-update'; +import { ReservationCreate } from '../../../../openApis/resourcePoolManagement/models/reservation-create'; +import { ReservationService, ResourcePoolService } from 'src/app/openApis/resourcePoolManagement/services'; +import { Reservation } from '../../../../openApis/resourcePoolManagement/models/reservation'; +import { Component, OnInit, ViewChild, ElementRef, Inject } from '@angular/core'; +import { FormGroup, FormControl, Validators } from '@angular/forms'; +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; +import { Observable } from 'rxjs'; +import { startWith, map } from 'rxjs/operators'; + +@Component({ + selector: 'edit-resource-reservation', + templateUrl: './edit-resource-reservation.component.html', + styleUrls: ['./edit-resource-reservation.component.scss'] + }) +export class EditResourceReservationComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private resourceReservationService: ReservationService, + private dialog: MatDialog, + private toast: ToastrService, + private router: Router, + private resourcePoolService: ResourcePoolService, + private resourceService: ResourceService, + private sortingService: SortingService, + ) { } + + + resourceReservationID: string + resourceReservation: Reservation + specNotFound: boolean = false + finishedLoading: boolean = false + selectedResourcePoolId: string + + + + editForm = new FormGroup({ + name: new FormControl("", [Validators.required]), + description: new FormControl(), + requestedPeriodStartDateTime: new FormControl(new Date()), + requestedPeriodEndDateTime: new FormControl(new Date(new Date().setHours (new Date().getHours() + 24))), + resourceInput : new FormControl([], [Validators.required]) + // resourcePool: new FormControl(), + // resourcesToReserve: new FormControl(), + // relatedParty: new FormControl(), + // validFor: new FormGroup({ + // endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + // startDateTime: new FormControl(new Date()) + // }), + // version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + selectable = true; + removable = true; + addOnBlur = true; + + newReservation: boolean = false + + + listResources: ResourceRef[] = [] + listResourcePools: ResourcePool[] = [] + + filteredResourcePools$: Observable + filteredResources$: Observable + + resourcePoolInputCtrl = new FormControl("", [Validators.required]); + resourceInputCtrl = new FormControl(); + + dataSourceResourcePools = new MatTableDataSource() + + selectedResourcePool: ResourcePool; + //selectedResource: ResourceRef; + //selectedResourcesValue: ResourceRef[]; + + @ViewChild('resourcePoolInput', {static: false}) resourcePoolInput: ElementRef; + @ViewChild('resourcePoolInput', {static: false, read: MatAutocompleteTrigger}) matAutocompleteTrigger: MatAutocompleteTrigger; + @ViewChild('autoResourcePool', {static: false}) matAutocomplete: MatAutocomplete; + + + + ngOnInit() { + this.createListResourcePools() + if (this.activatedRoute.snapshot.params.id) { + this.resourceReservationID = this.activatedRoute.snapshot.params.id + this.retrieveReservation() + } + else { + this.finishedLoading = true + this.newReservation = true + } + } + + retrieveReservation() { + this.resourceReservationService.retrieveReservation({ id: this.resourceReservationID }).subscribe( + data => this.resourceReservation = data, + error => console.error(error), () => { + if (this.resourceReservation) { + this.finishedLoading = true + this.editForm.patchValue(this.resourceReservation) + // this.editForm.value.resourceInput = this.resourceReservation.reservationItem[0].resourceCapacity.resourcePool.map(r =>{ return {id: r.id, name: r.name}}) + this.selectedResourcePoolId = this.resourceReservation.reservationItem[0].resourceCapacity.resourcePool.id; + this.resourcePoolInputCtrl.setValue(this.selectedResourcePoolId); + this.createListResources(this.selectedResourcePool) + + + + this.editForm.controls.resourceInput.setValue(this.resourceReservation.reservationItem[0].appliedCapacityAmount.resources.map(r => { return r.id })); + + // this.editForm.controls.resourceInput.setValue( [ + // this.resourceReservation.reservationItem[0].appliedCapacityAmount.resources[0], + // this.resourceReservation.reservationItem[0].appliedCapacityAmount.resources[1]] ); + } + else { + this.specNotFound = true + } + } + ) + } + + submitDialog() { + + if (this.editForm.valid && this.resourcePoolInputCtrl.valid) { + const updateObj: ReservationCreate | ReservationUpdate = { + description: this.editForm.value.description, + name: this.editForm.value.name, + requestedPeriodStartDateTime: this.editForm.value.requestedPeriodStartDateTime, + requestedPeriodEndDateTime: this.editForm.value.requestedPeriodEndDateTime, + reservationItem: [ + { + resourceCapacity: { + resourcePool: { + id: this.selectedResourcePool.id, + resources: this.editForm.value.resourceInput.map(r => { return { id: r } }) + + } + } + } + + ] + + } + + //updateObj.reservationItem[0].resourceCapacity.resourcePool.resources.push + const params: ReservationService.CreateReservationParams = { + + body: updateObj, + } + + let updatedRP: Reservation + + if (this.newReservation) { + this.resourceReservationService.createReservation(params).subscribe( + data => { updatedRP = data }, + error => console.error(error), + () => { + this.newReservation = false + this.toast.success("Resource Pool was successfully created") + this.router.navigate([updatedRP.id], {relativeTo: this.activatedRoute}) + this.refreshReservation(updatedRP) + } + ) + } + else { + const paramsPatch: ReservationService.PatchReservationParams = { + id: this.resourceReservationID, + name: this.editForm.value.name, + body: updateObj, + } + this.resourceReservationService.patchReservation(paramsPatch).subscribe( + data => { updatedRP = data }, + error => console.error(error), + () => { + this.toast.success("Resource Pool was successfully updated") + this.refreshReservation(updatedRP) + } + ) + } + } + + } + + refreshReservation(updatedSpec: Reservation) { + this.resourceReservationID = updatedSpec.id + this.retrieveReservation() + } + + + openResourcePoolList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + createListResourcePools() { + this.resourcePoolService.listResourcePool({}).subscribe( + data => this.listResourcePools = data, + error => console.error(error), + () => { + this.dataSourceResourcePools.data = this.listResourcePools + this.filteredResourcePools$ = this.resourcePoolInputCtrl.valueChanges.pipe( + startWith(null), + map( (rPool: string | ResourcePool) => typeof( rPool ) === 'string' ? this._filter( rPool ) : this.listResourcePools.slice() ) + ) + } + ) + } + + private _filter(value: string): ResourcePool[] { + const filterValue = value.toLowerCase(); + return this.listResourcePools.filter(res => res.name.toLowerCase().indexOf(filterValue) !== -1); + } + + selectedRPool(event: MatAutocompleteSelectedEvent): void { + //this.listResourcePools.push(event.option.value); + this.resourceInputCtrl.reset() + this.dataSourceResourcePools.data = this.listResourcePools + this.selectedResourcePoolId = event.option.value; + this.createListResources( event.option.value ) + } + + + createListResources(value: any) { + this.resourcePoolService.retrieveResourcePool({id:this.selectedResourcePoolId }).subscribe( + data => this.selectedResourcePool = data, + error => console.error(error), + () => { + this.listResources = [] + + this.resourcePoolInput.nativeElement.value = this.selectedResourcePool.name; + if (this.selectedResourcePool.capacity && this.selectedResourcePool.capacity.resources) { + this.listResources = this.selectedResourcePool.capacity.resources; + } + + this.listResources.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + this.filteredResources$ = this.resourceInputCtrl.valueChanges.pipe( + startWith(null), + map( (r: string | ResourceRef) => typeof( r ) === 'string' ? this._filterRef( r ) : this.listResources.slice() ) + ) + } + ) + } + + private _filterRef(value: string): ResourceRef[] { + const filterValue = value.toLowerCase(); + return this.listResources.filter(res => res.name.toLowerCase().indexOf(filterValue) !== -1); + } + + selectedR(event: MatAutocompleteSelectedEvent): void { + //this.selectedResource = event.option.value; + } +} \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.html b/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ab476ec7090494b8ac94794aa7424dcd569599bd --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.html @@ -0,0 +1,70 @@ +
+
+
+
+
+
+

Resource Pools

+

View and manage resource pools

+
+
+ +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description | slice:0:49}}... + Allocated Resources + 0 + {{element.capacity.resources.length}} + Actions + + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.scss b/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6c61423bebb55df0dc47f1e1c3759d93885a0cf3 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.ts b/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..da33b8ba817c34eca40302a712d9de7560bd7b57 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.component.ts @@ -0,0 +1,98 @@ +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { ResourcePoolService } from 'src/app/openApis/resourcePoolManagement/services'; +import { EditResourcePoolComponent } from '../edit-resource-pool/edit-resource-pool.component'; +import { DeleteResourcePoolComponent } from '../delete-resource-pool/delete-resource-pool.component'; +import { ResourcePool } from 'src/app/openApis/resourcePoolManagement/models'; +import { AppService } from 'src/app/shared/services/app.service'; + + +@Component({ + selector: 'list-resource-pools', + templateUrl: './list-resource-pools.component.html', + styleUrls: ['./list-resource-pools.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) + +export class ListResourcePoolsComponent implements OnInit { + + + constructor( + private resourcePoolService: ResourcePoolService, + public dialog: MatDialog, + private toast: ToastrService, + public appService: AppService + ) { } + + //displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'actions'] + displayedColumns = ['name', 'description', 'resources_allocated', 'actions'] + dataSource = new MatTableDataSource() + resourcePools: ResourcePool[] + + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveResourcePoolsList() + } + + + retrieveResourcePoolsList() { + this.resourcePoolService.listResourcePool({}).subscribe( + data => { this.resourcePools = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.resourcePools + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + case 'resources_allocated': {return item.capacity ? item.capacity.resources.length : 0}; + default: return item[property]; + } + } + } + ) + } + + openResourcePoolUpdateDialog(element: ResourcePool) { + const dialogRef = this.dialog.open(EditResourcePoolComponent, {data: element, disableClose: true}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Resource Pools list is successfully updated") + this.retrieveResourcePoolsList() + } + } + ) + } + + openResourcePoolDeleteDialog(element: ResourcePool) { + const dialogRef = this.dialog.open(DeleteResourcePoolComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Resource Pools list is successfully updated") + this.retrieveResourcePoolsList() + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.spec.ts b/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d9ad4bdee853c067847957b0da8cb403ca405214 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-pools/list-resource-pools.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListResourcePoolsComponent } from './list-resource-pools.component'; + +describe('ListResourcePoolsComponent', () => { + let component: ListResourcePoolsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListResourcePoolsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListResourcePoolsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.html b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.html new file mode 100644 index 0000000000000000000000000000000000000000..2cddf8f4e7068ea15074106383b54fb61fe61d5b --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.html @@ -0,0 +1,96 @@ +
+
+ +
+
+
+
+

Resource Reservations

+

View and manage resource reservations

+
+
+ +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Name + + {{element.name | slice:0:49}}... + + Requested Start DateTime (Local) {{element.requestedPeriodStartDateTime | date:'d MMM y, h:mm a'}} Requested End DateTime (Local) {{element.requestedPeriodEndDateTime | date:'d MMM y, h:mm a'}}Actions + + + + + + +
+ + +
+
+
+ +
+
+
+
+

Resource Reservation Calendar

+

View resource reservations in calendar

+
+ +
+ +
+ +
+ + + + + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.scss b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6c61423bebb55df0dc47f1e1c3759d93885a0cf3 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.spec.ts b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..37416df598dc297f9e5a66172c74218b1c6f7f24 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListResourceReservationsComponent } from './list-resource-reservations.component'; + +describe('ListResourceReservationsComponent', () => { + let component: ListResourceReservationsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ListResourceReservationsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ListResourceReservationsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.ts b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..1fb727998ff20a0172ef7f2b88a0e67d8d47e466 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/list-resource-reservations.component.ts @@ -0,0 +1,256 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Router } from '@angular/router'; +import { CalendarOptions, DateSelectArg, EventApi, EventClickArg } from '@fullcalendar/core'; +import { ToastrService } from 'ngx-toastr'; +import { Reservation, ResourcePool } from 'src/app/openApis/resourcePoolManagement/models'; +import { ReservationService, ResourcePoolService } from 'src/app/openApis/resourcePoolManagement/services'; +import { ResourceRef } from 'src/app/openApis/serviceOrderingManagement/models'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteResourceReservationComponent } from '../delete-resource-reservation/delete-resource-reservation.component'; + +@Component({ + selector: 'app-list-resource-reservations', + templateUrl: './list-resource-reservations.component.html', + styleUrls: ['./list-resource-reservations.component.scss'] +}) +export class ListResourceReservationsComponent implements OnInit { + + constructor( + private reservationService: ReservationService, + public dialog: MatDialog, + private toast: ToastrService, + public appService: AppService, + private resourcePoolService: ResourcePoolService, + private router: Router + ) { } + + displayedColumns = [ 'name', 'requestedPeriodStartDateTime', 'requestedPeriodEndDateTime', 'actions'] + dataSource = new MatTableDataSource() + reservations: Reservation[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + //------------------------Calendar Start ---------------------------- + + + resourcePools: ResourcePool[] + + calendarOptions: CalendarOptions = { + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'resourceTimelineMonth,resourceTimelineWeek,resourceTimelineDay,listWeek' + }, + initialView: 'resourceTimelineMonth', + resourceAreaWidth: "200px", + + schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives', + //schedulerLicenseKey: 'XXX', + //initialEvents: INITIAL_EVENTS, // alternatively, use the `events` setting to fetch from a feed + weekends: true, + editable: true, + selectable: true, + selectMirror: true, + dayMaxEvents: true, + select: this.handleDateSelect.bind(this), + eventClick: this.handleEventClick.bind(this), + eventsSet: this.handleEvents.bind(this), + /* you can update a remote database when these fire: + eventAdd: + eventChange: + eventRemove: + */ + resourceGroupField: 'groupId', + refetchResourcesOnNavigate: true, + + // resources: [ + // { + // id: '0', + // groupId: 'Group 1', + // title: 'Resource A' + // }, + // { + // id: '1', + // groupId: 'Group 1', + // title: 'Resource B' + // }, + // { + // id: '2', + // groupId: 'Group 2', + // title: 'Resource C' + // } + // ], + + resources: function( fetchInfo, successCallback, failureCallback) { + + if ( this == null){ + console.info("this is null") + return + } + + var str = fetchInfo.start.valueOf(); + const adate = new Date(str); + adate.setDate(adate.getDate() - 30); + const dateTimeNow = adate.toISOString(); + + this.resourcePoolService.listResourcePool({ }).subscribe( + + data => { this.resourcePools = data }, + error => { + console.error(error) + failureCallback(error) + }, + () => { + + var calRes = new Array(); + // calRes.push( { + // id: '2', + // groupId: 'rpool', + // title: 'atitle' + // }) + + this.resourcePools.forEach( function( rp: ResourcePool) { + + if (rp.capacity){ + + rp.capacity.resources.forEach( function(rRef: ResourceRef) { + // console.info("this is Resource generated: " + rRef.id +", name= " + rRef.name ) + calRes.push( { + id: rRef.id, + groupId: rp.name, + title: rRef.name + }) + + }) + } + }); + // console.info("this is Resource calRes: " + calRes ) + successCallback( calRes ) + } + ) + }.bind(this), + + events: function(info, successCallback, failureCallback) { + + if ( this == null){ + console.info("this is null") + return + } + + var str = info.start.valueOf(); + const adate = new Date(str); + adate.setDate(adate.getDate() - 30); + const dateTimeNow = adate.toISOString(); + + this.reservationService.listReservation ({ }).subscribe( + + data => { this.reservations = data }, + error => { + console.error(error) + failureCallback(error) + }, + () => { + var calEvents = new Array(); + + this.reservations.forEach( function( resrv: Reservation ) { + resrv.reservationItem[0].appliedCapacityAmount.resourceCapacityDemand.resources.forEach( function( eventEl: ResourceRef ) { + calEvents.push( { + title: resrv.name , + extendedProps: resrv , + start: resrv.requestedPeriodStartDateTime, + end: resrv.requestedPeriodEndDateTime, + resourceId: eventEl.id + }); + } + ) + + }) + successCallback( calEvents ) + } + ) + }.bind(this) + }; + currentEvents: EventApi[] = []; + + handleCalendarToggle() { + } + + handleWeekendsToggle() { + const { calendarOptions } = this; + calendarOptions.weekends = !calendarOptions.weekends; + } + + handleDateSelect(selectInfo: DateSelectArg) { + // const title = prompt('Please enter a new title for your event'); + // const calendarApi = selectInfo.view.calendar; + + // calendarApi.unselect(); // clear date selection + + // if (title) { + // calendarApi.addEvent({ + // id: createEventId(), + // title, + // start: selectInfo.startStr, + // end: selectInfo.endStr, + // allDay: selectInfo.allDay + // }); + // } + } + + handleEventClick(clickInfo: EventClickArg) { + this.router.navigate([`resources/resource_reservation_update/${clickInfo.event.extendedProps.id}`]); + } + + handleEvents(events: EventApi[]) { + this.currentEvents = events; + } + + //------------------------Calendar END + + ngOnInit(): void { + this.retrieveReservationsList() + } + + retrieveReservationsList() { + this.reservationService.listReservation({}).subscribe( + data => { this.reservations = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.reservations + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + openResourceReservationDeleteDialog(element: Reservation) { + const dialogRef = this.dialog.open(DeleteResourceReservationComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Reservations list is successfully updated") + this.retrieveReservationsList() + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.html b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.html new file mode 100644 index 0000000000000000000000000000000000000000..0fb3d50d1532282521984c44acc425368b2a24be --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.html @@ -0,0 +1 @@ +

resource-reservations-calendar works!

diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.scss b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.spec.ts b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..fd328039bb4a006bf9363a0add00424ffff9062b --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ResourceReservationsCalendarComponent } from './resource-reservations-calendar.component'; + +describe('ResourceReservationsCalendarComponent', () => { + let component: ResourceReservationsCalendarComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ResourceReservationsCalendarComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ResourceReservationsCalendarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.ts b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..868be70e876fabea8819441b0d919fa0932d4228 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/list-resource-reservations/resource-reservations-calendar/resource-reservations-calendar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-resource-reservations-calendar', + templateUrl: './resource-reservations-calendar.component.html', + styleUrls: ['./resource-reservations-calendar.component.scss'] +}) +export class ResourceReservationsCalendarComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/event-utils.ts b/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/event-utils.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee8ccd5a80e78fcbd7f02128dfab72d8c3ce160e --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/event-utils.ts @@ -0,0 +1,23 @@ +import { EventInput } from '@fullcalendar/angular'; + +let eventGuid = 0; +const TODAY_STR = new Date().toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today + +export const INITIAL_EVENTS: EventInput[] = [ + { + id: createEventId(), + title: 'All-day event', + start: TODAY_STR, + resourceId: '0', + }, + { + id: createEventId(), + title: 'Timed event', + start: TODAY_STR + 'T12:00:00', + resourceId: '1', + } +]; + +export function createEventId() { + return String(eventGuid++); +} diff --git a/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.html b/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.html new file mode 100644 index 0000000000000000000000000000000000000000..4a0931824b3cc2db9b57de91324dd7c77d7721ff --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.html @@ -0,0 +1,22 @@ +
+
+
+
+
+
+

Resource Reservation Calendar

+

View resource reservations..

+
+ +
+ +
+ +
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.scss b/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6c61423bebb55df0dc47f1e1c3759d93885a0cf3 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.ts b/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..1727f5c9c254102f719f10f920d9f24395f64382 --- /dev/null +++ b/src/app/p_resources/admin/resourcePoolManagement/resource-reservation-calendar/resource-reservation-calendar.component.ts @@ -0,0 +1,139 @@ +import { MatTableDataSource } from '@angular/material/table'; +import { Router } from '@angular/router'; +import { Reservation } from '../../../../openApis/resourcePoolManagement/models/reservation'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { ReservationService, ResourcePoolService } from 'src/app/openApis/resourcePoolManagement/services'; +import { EditResourcePoolComponent } from '../edit-resource-pool/edit-resource-pool.component'; +import { DeleteResourcePoolComponent } from '../delete-resource-pool/delete-resource-pool.component'; +import { ResourcePool } from 'src/app/openApis/resourcePoolManagement/models'; +import { AppService } from 'src/app/shared/services/app.service'; +import { CalendarOptions, DateSelectArg, EventClickArg, EventApi } from '@fullcalendar/angular'; +import { INITIAL_EVENTS, createEventId } from './event-utils'; +import { ResourceRef } from 'src/app/openApis/serviceOrderingManagement/models'; + +@Component({ + selector: 'resource-reservation-calendar', + templateUrl: './resource-reservation-calendar.component.html', + styleUrls: ['./resource-reservation-calendar.component.scss'] + }) +export class ResourceReservationCalendarComponent implements OnInit { + + + + constructor( + private reservationService: ReservationService, + public dialog: MatDialog, + public appService: AppService, + private router: Router + ) { } + + + reservations: Reservation[] + resourcePools: ResourcePool[] + dataSource = new MatTableDataSource() + + calendarVisible = true; + calendarOptions: CalendarOptions = { + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek' + }, + initialView: 'dayGridMonth', + //initialEvents: INITIAL_EVENTS, // alternatively, use the `events` setting to fetch from a feed + weekends: true, + editable: true, + selectable: true, + selectMirror: true, + dayMaxEvents: true, + select: this.handleDateSelect.bind(this), + eventClick: this.handleEventClick.bind(this), + eventsSet: this.handleEvents.bind(this), + /* you can update a remote database when these fire: + eventAdd: + eventChange: + eventRemove: + */ + + events: function(info, successCallback, failureCallback) { + + if ( this == null){ + console.info("this is null") + return + } + + var str = info.start.valueOf(); + const adate = new Date(str); + adate.setDate(adate.getDate() - 30); + const dateTimeNow = adate.toISOString(); + + this.reservationService.listReservation ({ }).subscribe( + + data => { this.reservations = data }, + error => { + console.error(error) + failureCallback(error) + }, + () => { + successCallback( + Array.prototype.slice.call( // convert to array + this.reservations + ).map(function(eventEl: Reservation) { + + console.info("this is event: " + eventEl.id +" " + eventEl.requestedPeriodStartDateTime ) + // var result = new Date(eventEl.startDate); + // var evd = result.toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today + + return { + title: eventEl.name , + start: eventEl.requestedPeriodStartDateTime, + end: eventEl.requestedPeriodEndDateTime + } + }) + ) + + } + ) + + }.bind(this) + + + + }; + currentEvents: EventApi[] = []; + + + + + + handleWeekendsToggle() { + const { calendarOptions } = this; + calendarOptions.weekends = !calendarOptions.weekends; + } + + handleDateSelect(selectInfo: DateSelectArg) { + + } + + handleEventClick(clickInfo: EventClickArg) { + this.router.navigate([`resources/resource_reservation_update/${clickInfo.event.title}`]); + } + + handleEvents(events: EventApi[]) { + this.currentEvents = events; + } + + + + + ngOnInit() { + + + } + + +} \ No newline at end of file diff --git a/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.html b/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.html new file mode 100644 index 0000000000000000000000000000000000000000..4e4bc26ca23ddeb74b676d5f6515429a4c4f8c61 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.html @@ -0,0 +1,14 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete the selected + {{data.perceivedSeverity}} + severity alarm generated by {{data.sourceSystemId}} @ {{data.alarmReportingTime | date:'d MMM y, h:mm:ss a'}} ? +
+ +
+ + +
\ No newline at end of file diff --git a/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.scss b/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..2d6c65409f9a1935e99992982b5cd0039db19753 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.scss @@ -0,0 +1,20 @@ +.critical_alarm_color { + color: #780000 +} + +.major_alarm_color { + // color:#dc3545 + color: #ee0000 +} + +.minor_alarm_color { + color: #fd8f00 +} + +.warning_alarm_color { + color: #fdc500; +} + +.cleared_alarm_color { + color: #28a745 +} \ No newline at end of file diff --git a/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.spec.ts b/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..704331ea476b5315a3655eb332a354a12c381d2c --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteAlarmComponent } from './delete-alarm.component'; + +describe('DeleteAlarmComponent', () => { + let component: DeleteAlarmComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteAlarmComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteAlarmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.ts b/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..999711b3a1e44bec84da4a4b3dd931145cb60ae1 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/delete-alarm/delete-alarm.component.ts @@ -0,0 +1,34 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { Alarm } from 'src/app/openApis/alarmManagement/models'; +import { AlarmService } from 'src/app/openApis/alarmManagement/services'; + +@Component({ + selector: 'app-delete-alarm', + templateUrl: './delete-alarm.component.html', + styleUrls: ['./delete-alarm.component.scss'] +}) +export class DeleteAlarmComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Alarm, + private alarmService: AlarmService, + private dialogRef: MatDialogRef + ) { } + + ngOnInit() { + } + + confirmDelete() { + this.alarmService.deleteAlarm(this.data.id).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.html b/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.html new file mode 100644 index 0000000000000000000000000000000000000000..dadfe54bee84e0640a745fe9d17cd396a3cd4dbf --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.html @@ -0,0 +1,159 @@ +
+
+
+

Alarm with id #{{alarmId}} is not found

+
+
+
+ +
+
+
+
+
+ +
+
+
+
+

Alarm Management

+

Review and manage alarm #{{alarmId}}

+
+
+
+
+ +
+ + + + + Main Alarm properties + + + +
+
+
Source System
+

{{alarm?.sourceSystemId}}

+
+ +
+
Alarm Type
+

{{alarm?.alarmType}}

+
+ +
+
Probable Cause
+

{{alarm?.probableCause}}

+
+ +
+
Raised Time
+

{{alarm.alarmRaisedTime | date:'d MMM y, h:mm:ss a'}} - Local Time

+

{{alarm.alarmRaisedTime | date:'d MMM y, h:mm:ss a':'UTC'}} - UTC

+
+ +
+
Reporting Time
+

{{alarm.alarmReportingTime | date:'d MMM y, h:mm:ss a'}} - Local Time

+

{{alarm.alarmReportingTime | date:'d MMM y, h:mm:ss a':'UTC'}} - UTC

+
+ +
+
Updated Time
+

{{alarm.alarmChangedTime | date:'d MMM y, h:mm:ss a'}} - Local Time

+

{{alarm.alarmChangedTime | date:'d MMM y, h:mm:ss a':'UTC'}} - UTC

+
+ + + Severity + + + + {{editForm.value.perceivedSeverity}} + + + + {{severity}} + + + + + + Ack State + + {{ackState}} + + + + + State + + + + {{editForm.value.state}} + + + + + {{state}} + + + + +
+
Comments
+
+
+
+
+ {{comment.comment}} +
written by + {{comment.systemId}} + {{comment.userId}} + @ {{comment.time | date:'d MMM y, h:mm:ss a'}} (Local Time) +
+
+
+
+
+ + +
+
+
+ + New Comment + + + +
+
+ +
+
+ +
+
+
+ +
+
+
+
+ +
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.scss b/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..508f60699dcb4ea725fdc3fd3a9db9831da96f76 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.scss @@ -0,0 +1,65 @@ +.critical_alarm_color { + color: #780000 +} + +.major_alarm_color { + // color:#dc3545 + color: #ee0000 +} + +.minor_alarm_color { + color: #fd8f00 +} + +.warning_alarm_color { + color: #fdc500; +} + +.cleared_alarm_color { + color: #28a745 +} + +.indeterminate_alarm_color { + color: #666; +} + +.critical_alarm_bg { + background-color: #780000 +} + +.major_alarm_bg { + // color:#dc3545 + background-color: #ee0000 +} + +.minor_alarm_bg { + background-color: #fd8f00 +} + +.warning_alarm_bg { + background-color: #fdc500; +} + +.cleared_alarm_bg { + background-color: #28a745 +} + +.indeterminate_alarm_bg { + background-color: currentColor; +} + +.severity_circle { + border-radius: 50%; + width: 10px; + height: 10px; + display: inline-block; +} + +.notes-container { + max-height: 200px; + overflow-y: auto; +} + +.note-card-body { + padding: .5rem; +} \ No newline at end of file diff --git a/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.spec.ts b/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..ed240a1cc613bd48e7e8b9d25672506708ab9843 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditAlarmComponent } from './edit-alarm.component'; + +describe('EditAlarmComponent', () => { + let component: EditAlarmComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditAlarmComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditAlarmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.ts b/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..9eb83d42e4e4f9e2691c252a4b44b2e5fff635b1 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/edit-alarm/edit-alarm.component.ts @@ -0,0 +1,128 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit } from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; +import { MatSelectChange } from '@angular/material/select'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { stricterDefinedAlarm } from 'src/app/shared/models/augmentedOpenAPImodels/stricter-defined-alarm-management.model'; +import { AlarmUpdate } from 'src/app/openApis/alarmManagement/models'; +import { AlarmService } from 'src/app/openApis/alarmManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { SharedAlarmService } from '../shared/shared-alarm.service'; + +@Component({ + selector: 'app-edit-alarm', + templateUrl: './edit-alarm.component.html', + styleUrls: ['./edit-alarm.component.scss'], + animations: [ + trigger('fadeIn', fadeIn()) + ] +}) +export class EditAlarmComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private router: Router, + private alarmService: AlarmService, + private authService: AuthService, + private toast: ToastrService, + private sortingService: SortingService, + public sharedAlarmService: SharedAlarmService + ) { } + + alarmId: string + alarmNotFound: boolean + alarm: stricterDefinedAlarm + + editForm = new FormGroup({ + ackState: new FormControl(), + perceivedSeverity: new FormControl(), + state: new FormControl(), + comment: new FormControl() + }) + + severitiesList = ["critical", "major", "minor", "warning", "indeterminate", "cleared"] + ackStateList = ["unacknowledged", "acknowledged"] + stateList = ["raised", "updated", "cleared"] + + addCommentModeActive = false + + ngOnInit() { + this.alarmId = this.activatedRoute.snapshot.params.id + + if (this.alarmId) { + this.retrieveAlarm() + } else { + this.router.navigate(['../alarms'], { relativeTo: this.activatedRoute}) + } + } + + retrieveAlarm() { + this.alarmService.retrieveAlarm({id: this.alarmId}).subscribe( + (data:stricterDefinedAlarm) => this.alarm = data, + (error) => { console.error(error) }, + () => { + if (this.alarm) { + this.editForm.patchValue({ + state: this.alarm.state, + perceivedSeverity: this.alarm.perceivedSeverity, + ackState: this.alarm.ackState + }) + this.alarm.comment.sort(this.sortingService.ascDateSortingFuncByTimeProperty()) + } else { + this.alarmNotFound = true + } + } + ) + } + + onAlarmClearSelection(event: MatSelectChange) { + if (event.value === "cleared") { + this.editForm.patchValue({ + state: "cleared", + perceivedSeverity: "cleared" + }) + } + } + + onAlarmStateUpdateSelection(event: MatSelectChange) { + if (this.editForm.get('state').value === "raised") { + this.editForm.patchValue({ + state:"updated" + }) + } + } + + triggerNewComment() { + this.addCommentModeActive = !this.addCommentModeActive + this.editForm.get("comment").reset() + } + + updateAlarm() { + this.addCommentModeActive = false + let alarmUpdate: AlarmUpdate = { + state: this.editForm.get('state').value, + perceivedSeverity: this.editForm.get('perceivedSeverity').value, + ackState: this.editForm.get('ackState').value + } + + if (this.editForm.get('comment').value) { + alarmUpdate.comment = [{ + comment: this.editForm.get('comment').value, + userId: this.authService.portalUserJWT.preferred_username, + time: new Date().toISOString() + }] + } + + this.alarmService.patchAlarm({body: alarmUpdate, id: this.alarmId}).subscribe( + data => { this.toast.success("Alarm was successfully updated")}, + error => {console.error(error); this.toast.error("An error occurred while editing alarm")}, + () => { + this.retrieveAlarm() + } + ) + } + +} diff --git a/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.html b/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.html new file mode 100644 index 0000000000000000000000000000000000000000..a43a9fe3f37da1cd0117bfccc3c357fc7a819042 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.html @@ -0,0 +1,94 @@ +
+
+
+
+
+
+

Alarms

+

View and manage alarms raised by the system components

+
+
+ +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Source System {{element.sourceSystemId}} Severity + + + + {{element.perceivedSeverity}} + Ack State {{element.ackState}} State + + {{element.state}} + Type {{element.alarmType}} Probable Cause {{element.probableCause}} Raised Time (Local Time) {{element.alarmRaisedTime | date:'d MMM y, h:mm:ss a'}} Actions + + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.scss b/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..dbc84faac3a74b87d46aab5c68b937b6fbc8d4a4 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.scss @@ -0,0 +1,56 @@ +.critical_alarm_color { + color: #780000 +} + +.major_alarm_color { + // color:#dc3545 + color: #ee0000 +} + +.minor_alarm_color { + color: #fd8f00 +} + +.warning_alarm_color { + color: #fdc500; +} + +.cleared_alarm_color { + color: #28a745 +} + +.indeterminate_alarm_color { + color: #666 +} + +.critical_alarm_bg { + background-color: #780000 +} + +.major_alarm_bg { + // color:#dc3545 + background-color: #ee0000 +} + +.minor_alarm_bg { + background-color: #fd8f00 +} + +.warning_alarm_bg { + background-color: #fdc500; +} + +.cleared_alarm_bg { + background-color: #28a745 +} + +.indeterminate_alarm_bg { + background-color: currentColor; +} + +.severity_circle { + border-radius: 50%; + width: 10px; + height: 10px; + display: inline-block; +} diff --git a/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.spec.ts b/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a93e199898328eeb80c38b35898f3857aa1d4f41 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListAlarmsComponent } from './list-alarms.component'; + +describe('ListAlarmsComponent', () => { + let component: ListAlarmsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListAlarmsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListAlarmsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.ts b/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..39084ff78d0802be799ae9eab8536bf7fb5cc424 --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/list-alarms/list-alarms.component.ts @@ -0,0 +1,108 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { stricterDefinedAlarmCreate } from 'src/app/shared/models/augmentedOpenAPImodels/stricter-defined-alarm-management.model'; +import { Alarm, AlarmCreate } from 'src/app/openApis/alarmManagement/models'; +import { AlarmService } from 'src/app/openApis/alarmManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteAlarmComponent } from '../delete-alarm/delete-alarm.component'; +import { SharedAlarmService } from '../shared/shared-alarm.service'; + +@Component({ + selector: 'app-list-alarms', + templateUrl: './list-alarms.component.html', + styleUrls: ['./list-alarms.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListAlarmsComponent implements OnInit { + + constructor( + private alarmService: AlarmService, + public dialog: MatDialog, + private toast: ToastrService, + public sharedAlarmService: SharedAlarmService, + public appService: AppService + ) { } + + displayedColumns = ['sourceSystemId', 'perceivedSeverity', 'ackState', 'state', 'alarmType', 'probableCause', 'alarmRaisedTime', 'actions'] + dataSource = new MatTableDataSource() + + alarms: Alarm[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveAlarmsList() + } + + retrieveAlarmsList() { + this.alarmService.listAlarm({}).subscribe( + data => { this.alarms = data }, + error => console.error(error), + () => { + this.dataSource.data = this.alarms + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'alarmRaisedTime': return new Date(item.alarmRaisedTime).getTime() + default: return item[property] + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + //toBeDeleted + // + createDummyAlarm() { + const severities: Array<"critical"|"major"|"minor"|"warning"|"indeterminate"|"cleared"> = ["critical","major","minor","warning","indeterminate"] + + let dummyAlarm: stricterDefinedAlarmCreate = { + alarmRaisedTime: new Date(new Date().setSeconds(new Date().getSeconds()-30)).toISOString(), + alarmReportingTime: new Date().toISOString(), + state: "raised", + alarmType: "qualityOfServiceAlarm", + probableCause: "thresholdCrossed", + ackState: "unacknowledged", + perceivedSeverity: severities[Math.floor(Math.random()*5)], + sourceSystemId: "mano-client-service-test", + alarmDetails: "NSID=a1dqw1eqw2e21asdg2opoqwe1,DeploymentRequestID=sd23d1ed221he2g2opo11eaa", + specificProblem: "action=scaledOut" + } + + this.alarmService.createAlarm(dummyAlarm).subscribe( + data => {}, + error => console.error(error), + () => this.retrieveAlarmsList() + ) + } + // + // + + openDeleteAlarmDialog(alarm: Alarm) { + const dialogRef = this.dialog.open(DeleteAlarmComponent, {data: alarm}) + + dialogRef.afterClosed().subscribe( + res => { + if (res) { + this.toast.success("Alarm is successfully deleted") + this.retrieveAlarmsList() + } + } + ) + } +} diff --git a/src/app/p_services/admin/alarmManagement/shared/shared-alarm.service.spec.ts b/src/app/p_services/admin/alarmManagement/shared/shared-alarm.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..220149cd4908332b0817b57eb5943115f2d8060d --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/shared/shared-alarm.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { SharedAlarmService } from './shared-alarm.service'; + +describe('SharedAlarmService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: SharedAlarmService = TestBed.get(SharedAlarmService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/alarmManagement/shared/shared-alarm.service.ts b/src/app/p_services/admin/alarmManagement/shared/shared-alarm.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..7a9f20133c0f552afe35835fb865398f930e234e --- /dev/null +++ b/src/app/p_services/admin/alarmManagement/shared/shared-alarm.service.ts @@ -0,0 +1,53 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class SharedAlarmService { + + constructor() { } + + returnSeverityIconClass(severity: "critical"|"major"|"minor"|"warning"|"indeterminate"|"cleared") { + let cssClass = 'mr-2 fa-lg ' + switch (severity) { + case 'critical': + cssClass += 'fas fa-arrow-alt-circle-up major_alarm_color' + break; + case 'major': + cssClass += 'fas fa-chevron-circle-up major_alarm_color' + break; + case 'minor': + cssClass += 'fas fa-chevron-circle-down cleared_alarm_color' + break; + case 'warning': + cssClass += 'fas fa-arrow-alt-circle-down cleared_alarm_color' + break; + case 'cleared': + cssClass += 'far fa-check-circle cleared_alarm_color' + break; + default: + cssClass += 'fas fa-minus-circle indeterminate_alarm_color' + break; + } + return cssClass + } + + returnStateIconClass(state: "raised"|"updated"|"cleared") { + let cssClass = 'mr-1 ' + switch (state) { + case 'raised': + cssClass += 'far fa-bell major_alarm_color' + break; + case 'updated': + cssClass += 'fas fa-pencil-alt minor_alarm_color' + break; + case 'cleared': + cssClass += 'fas fa-check-double cleared_alarm_color' + break; + default: + cssClass += 'fas fa-minus indeterminate_alarm_color' + break; + } + return cssClass + } +} diff --git a/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.html b/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.html new file mode 100644 index 0000000000000000000000000000000000000000..a65cdf5f4d1b163cdbc308f55c3da9f1d9dd38cb --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete action rule {{data.name}}? +
+ +
+ + +
\ No newline at end of file diff --git a/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.scss b/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.spec.ts b/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ed9f86c53bcd2dc0e3bd9e51c3c15e1ed975d3c --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteActionRulesComponent } from './delete-action-rules.component'; + +describe('DeleteActionRulesComponent', () => { + let component: DeleteActionRulesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteActionRulesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteActionRulesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.ts b/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c025d01eeca425a2cf88e5848306a98d830f7dd3 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/delete-action-rules/delete-action-rules.component.ts @@ -0,0 +1,35 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ActionSpecification } from 'src/app/openApis/assuranceServicesManagementAPI/models'; +import { RuleSpecificationService } from 'src/app/openApis/assuranceServicesManagementAPI/services'; + +@Component({ + selector: 'app-delete-action-rules', + templateUrl: './delete-action-rules.component.html', + styleUrls: ['./delete-action-rules.component.scss'] +}) +export class DeleteActionRulesComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ActionSpecification, + private ruleSpecService: RuleSpecificationService, + private dialogRef: MatDialogRef + ) { } + + ngOnInit() { + } + + confirmDeletion() { + this.ruleSpecService.deleteRuleSpecification(this.data.uuid).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + + +} diff --git a/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.html b/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.html new file mode 100644 index 0000000000000000000000000000000000000000..1590df76452e2ab1359b07ef07e184e3582490b4 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete action specification {{data.name}}? +
+ +
+ + +
\ No newline at end of file diff --git a/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.scss b/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.spec.ts b/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..89ce18ca389b9e16b630aa65547e03fb02c871b1 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteActionSpecComponent } from './delete-action-spec.component'; + +describe('DeleteActionSpecComponent', () => { + let component: DeleteActionSpecComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteActionSpecComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteActionSpecComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.ts b/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..545074372e260fbcf7e64d8fd399afe670ba2355 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/delete-action-spec/delete-action-spec.component.ts @@ -0,0 +1,33 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ActionSpecification } from 'src/app/openApis/assuranceServicesManagementAPI/models'; +import { ActionSpecificationService } from 'src/app/openApis/assuranceServicesManagementAPI/services'; + +@Component({ + selector: 'app-delete-actions', + templateUrl: './delete-action-spec.component.html', + styleUrls: ['./delete-action-spec.component.scss'] +}) +export class DeleteActionSpecComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ActionSpecification, + private actionSpecificationService: ActionSpecificationService, + private dialogRef: MatDialogRef + ) { } + + ngOnInit() { + } + + confirmDeletion() { + this.actionSpecificationService.deleteActionSpecification(this.data.uuid).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.html b/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.html new file mode 100644 index 0000000000000000000000000000000000000000..62afce60f2bcadf22ccee0369255f72a3c9f78c7 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.html @@ -0,0 +1,188 @@ +
+
+
+

Action rule with id #{{actionRuleId}} is not found

+
+
+
+ +
+
+
+
+
+ +
+
+
+
+

Action Rule Designer

+

Design a new action rule

+

Review and manage action rule #{{actionRuleId}}

+
+
+
+
+ +
+ + + + + Main action rule properties + + + +
+ + + Name + + + + + Scope + + + {{service.name}} ({{service.serviceDate | date:'d/M/yy, HH:mm'}}) + + + + + + + Openslice Event Type + + {{eventType}} + + + + + + Description + + +
+ +
Conditions
+
+
+ + Event Attribute Name + + {{eventAttributeName}} + + + + + Comparison Operator + + {{comparisonOp}} + + + + + + Event Attribute Value + + {{eventAttributeValue}} + + + + + + Boolean Operator + + {{booleanOp}} + + + + +
+ +
+ +
+ + +
+ + +
+
Action List
+ + + Available actions on met conditions + + {{actionSpec.name}} + + + +
+ +
+ +
Select action(s) from the available list to assign to the action rule.
+
+ +
+
+
+
+
+
Action #{{i+1}} - {{action.value.name}}
+
+ +
+
+
+
Action does + not have any configurable parameters.
+
+ + + {{actionChar.value.name}} + + + + {{suppService.name}} + + + +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.scss b/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.spec.ts b/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f7a7d86c7688916dcfbf5e4c15903f45550ed85 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditActionRulesComponent } from './edit-action-rules.component'; + +describe('EditActionRulesComponent', () => { + let component: EditActionRulesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditActionRulesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditActionRulesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.ts b/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..5874455a605e1af90799c7b070425f00b1d856a0 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/edit-action-rules/edit-action-rules.component.ts @@ -0,0 +1,288 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit } from '@angular/core'; +import { FormArray, FormControl, FormGroup } from '@angular/forms'; +import { MatOptionSelectionChange } from '@angular/material/core'; +import { MatSelectChange } from '@angular/material/select'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { Action, ActionSpecification, RuleSpecification, RuleSpecificationCreate, RuleSpecificationUpdate } from 'src/app/openApis/assuranceServicesManagementAPI/models'; +import { ActionSpecificationService, RuleSpecificationService } from 'src/app/openApis/assuranceServicesManagementAPI/services'; +import { Service } from 'src/app/openApis/serviceInventoryManagement/models'; +import { ServiceService } from 'src/app/openApis/serviceInventoryManagement/services'; +import { ServiceOrderService } from 'src/app/openApis/serviceOrderingManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; + +@Component({ + selector: 'app-edit-action-rules', + templateUrl: './edit-action-rules.component.html', + styleUrls: ['./edit-action-rules.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditActionRulesComponent implements OnInit { + + constructor( + private actionSpecService: ActionSpecificationService, + private serviceService: ServiceService, + private ruleSpecService: RuleSpecificationService, + private serviceOrderService: ServiceOrderService, + private toast: ToastrService, + private activatedRoute: ActivatedRoute, + private router: Router, + private sortingService: SortingService + ) { } + + newActionRule = false + alarmNotFound: boolean + actionRule: RuleSpecification + actionRuleId: string + + actionSpecs: ActionSpecification[] + selectedActionSpec: ActionSpecification + + activeRFSsFromInventory: Service[] + scopeRelatedSupportingServices = [] + + editForm = new FormGroup({ + name: new FormControl(""), + description: new FormControl(""), + eventType: new FormControl(""), + condition: new FormArray([]), + scope: new FormControl(""), + actions: new FormArray([]) + }) + + availableEventTypes = ['AlarmCreateEvent', 'AlarmAttributeValueChangeEvent', 'AlarmStateChangeEvent', 'AlarmDeleteEvent'] + availableAttrNameConditions = ['sourceSystemId', 'perceivedSeverity', 'alarmType', 'probableCause'] + availableConditions = { + sourceSystemId: ['mano-client-service'], + perceivedSeverity: ["critical","major","minor","warning","indeterminate","cleared"], + // ackState: ["unacknowledged", "acknowledged"], + // state: ["raised", "updated", "cleared"], + alarmType: ["communicationsAlarm","environmentalAlarm","equipmentAlarm","integrityViolation","mechanismViolation","operationalViolation","physicalViolation","processingErrorAlarm","qualityOfServiceAlarm","securityService","timeDomainViolation", "ANY"], + probableCause: ["antennaFailure","communicationsSubsystemFailure","connectionEstablishmentError","cpuCyclesLimitExceeded","denialOfService","diskFailure","excessiveResponseTime","other","outOfCpuCycles","outOfMemory","outOfService","performanceDegraded","resourceAtOrNearingCapacity","systemResourcesOverload","thresholdCrossed", "ANY"] + } + booleanOperators = ["AND", "OR"] + comparisonOperators = ["EQUALS", "NOTEQUAL","GREATER_THAN","LESS_THAN"] + + ngOnInit() { + this.retrieveActionsList() + this.retrieveActiveRFSs() + } + + retrieveActionsList() { + this.actionSpecService.listActionSpecification({}).subscribe( + data => this.actionSpecs = data, + error => console.error(error), + () => { + this.actionRuleId = this.activatedRoute.snapshot.params.id + if (this.actionRuleId) { + this.retrieveActionRule() + } else { + this.newActionRule = true + } + } + ) + } + + retrieveActiveRFSs() { + let serviceInventory: Service[] + this.serviceService.listService({}).subscribe( + data => { serviceInventory = data }, + error => { console.error(error) }, + () => { + this.activeRFSsFromInventory = serviceInventory.filter( serv => serv.state === "active" && serv.category === "ResourceFacingServiceSpecification") + } + ) + } + + retrieveActionRule() { + this.ruleSpecService.retrieveRuleSpecification({id: this.actionRuleId}).subscribe( + data => this.actionRule = data, + error => console.error(error), + () => { + if (this.actionRule) { + this.editForm.patchValue(this.actionRule) + this.editForm.patchValue({ + scope: this.actionRule.scope.entityUUID, + // actions: this.actions.filter( action => this.actionRule.actions.map( actionRuleAction => actionRuleAction.actionId).includes(action.uuid)) + }) + this.initConditionsValueFA() + this.initActionsValueFA() + // this.initSelectedActionSpec() + } else { + this.alarmNotFound = true + } + } + ) + } + + // initSelectedActionSpec() { + // this.selectedActionSpecs = this.actionSpecs.filter( actionSpec => this.actionRule.actions.some( actionRuleAction => actionRuleAction.actionSpecificationRef.actionId === actionSpec.uuid)) + // } + + initActionsValueFA() { + this.editForm.setControl('actions', new FormArray([])) + const formArray = this.editForm.get('actions') as FormArray + + this.actionRule.actions.forEach( (action) => { + formArray.push( + new FormGroup({ + name: new FormControl(action.name), + actionSpecificationRef: new FormControl({actionId:action.actionSpecificationRef.actionId}), + actionCharacteristics: pushToActionCharArray(action, this.sortingService) + }) + ) + }) + + + function pushToActionCharArray(action: Action, sortingService: SortingService) { + let charArr = new FormArray([]) + + action.actionCharacteristics.sort(sortingService.ascStringSortingFunctionByNameProperty()) + action.actionCharacteristics.forEach(char => { + charArr.push( + new FormGroup({ + name: new FormControl(char.name), + value: new FormControl(char.value) + }) + ) + }) + return charArr + } + } + + initConditionsValueFA() { + this.editForm.setControl('condition', new FormArray([])) + const formArray = this.editForm.get('condition') as FormArray + + this.actionRule.condition.forEach( (condition) => { + formArray.push( + new FormGroup({ + booleanOperator: new FormControl(condition.booleanOperator), + eventAttributeName: new FormControl(condition.eventAttributeName), + eventAttributeValue: new FormControl(condition.eventAttributeValue), + operator: new FormControl(condition.operator) + }) + ) + }) + } + + onScopeSelect(event:MatOptionSelectionChange) { + if (event.isUserInput) { + this.scopeRelatedSupportingServices = [] + const selectedRFS = this.activeRFSsFromInventory.find(el => el.id === event.source.value) + + selectedRFS.serviceOrder.forEach (so => { + this.serviceOrderService.retrieveServiceOrder({id: so.id}).subscribe( + data => { + if (data && data.orderItem) { + data.orderItem.forEach(orderItem => { + orderItem.service.supportingService.forEach( suppService => { + this.scopeRelatedSupportingServices.push(suppService) + }) + }) + } + }, + error => console.error(error) + ) + }) + + } + } + + addToActionRuleConditionsArray() { + const formArray = this.editForm.get('condition') as FormArray + + formArray.push( + new FormGroup({ + booleanOperator: new FormControl(), + eventAttributeName: new FormControl(), + eventAttributeValue: new FormControl(), + operator: new FormControl() + }) + ) + } + + deleteFromActionRuleConditionsArray(conditionIndex: number) { + const formArray = this.editForm.get('condition') as FormArray + formArray.removeAt(conditionIndex) + } + + addToActionList(actionSpec: ActionSpecification) { + if (actionSpec) { + this.addToActionSpecArray(actionSpec) + this.selectedActionSpec = null + } + } + + removeFromActionList(index: number) { + this.deleteFromSpecArray(index) + } + + addToActionSpecArray(actionSpec: ActionSpecification) { + const formArray = this.editForm.get('actions') as FormArray + + formArray.push( + new FormGroup({ + name: new FormControl(actionSpec.name), + actionSpecificationRef: new FormControl({actionId:actionSpec.uuid}), + actionCharacteristics: pushToActionCharArray() + }) + ) + + function pushToActionCharArray() { + let paramsArr = new FormArray([]) + actionSpec.params.forEach(param => { + paramsArr.push( + new FormGroup({ + name: new FormControl(param.paramName), + value: new FormControl(param.paramValue) + }) + ) + }) + return paramsArr + } + } + + deleteFromSpecArray(index: number) { + const formArray = this.editForm.get('actions') as FormArray + formArray.removeAt(index) + } + + updateActionRule() { + + const updateObj: RuleSpecificationCreate | RuleSpecificationUpdate = { + // actions: this.editForm.value.actions.map( act => { return {actionId: act.uuid, uuid: act.uuid}} ), + actions: this.editForm.value.actions, + condition: this.editForm.value.condition, + description: this.editForm.value.description, + eventType: this.editForm.value.eventType, + name: this.editForm.value.name, + scope: {"entityUUID": this.editForm.value.scope} + } + + if (this.newActionRule) { + this.ruleSpecService.createRuleSpecification(updateObj).subscribe( + data => { this.actionRuleId = data.uuid }, + error => { console.error(error) }, + () => { + this.toast.success("Action Rule is successfully created") + this.router.navigate([this.actionRuleId], { relativeTo: this.activatedRoute}) + + // this.retrieveActionRule() + } + ) + } else { + this.ruleSpecService.patchRuleSpecification({id: this.actionRuleId, body: updateObj}).subscribe( + data => { }, + error => {console.error(error)}, + () => { + this.toast.success("Action Rule is successfully updated") + this.retrieveActionRule() + } + ) + } + } + +} diff --git a/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.html b/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..d6adbd82e98cbe2dee979fb23a293f04504dca48 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.html @@ -0,0 +1,59 @@ +
+

+ + Edit Action Specification +

+ +

+ + Create New Action Specification +

+
+ + +
+ + Name + + + + + Description + + +
+ +
Action Parameters
+
+
+ + Param Name + + + + + Param Value + + + +
+ +
+ +
+ + +
+
+ +
+
+ + +
+
+
+ +
\ No newline at end of file diff --git a/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.scss b/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.spec.ts b/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..504882bed350f81396f2a8428ad37e573867df41 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditActionSpecsComponent } from './edit-action-specs.component'; + +describe('EditActionsComponent', () => { + let component: EditActionSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditActionSpecsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditActionSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.ts b/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..618cea64984f03b14c03f235526ac3f372ef8e0c --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/edit-action-specs/edit-action-specs.component.ts @@ -0,0 +1,108 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { FormArray, FormControl, FormGroup } from '@angular/forms'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ActionSpecification, ActionSpecificationCreate, ActionSpecificationUpdate } from 'src/app/openApis/assuranceServicesManagementAPI/models'; +import { ActionSpecificationService } from 'src/app/openApis/assuranceServicesManagementAPI/services'; + +@Component({ + selector: 'app-edit-actions', + templateUrl: './edit-action-specs.component.html', + styleUrls: ['./edit-action-specs.component.scss'] +}) +export class EditActionSpecsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ActionSpecification, + private actionSpecificationService: ActionSpecificationService, + private dialogRef: MatDialogRef + ) { } + + editForm = new FormGroup({ + name: new FormControl(), + description: new FormControl(), + params: new FormArray([]) + }) + + actionId: string + action: ActionSpecification + newAction = false + + ngOnInit() { + if (this.data) { + this.actionId = this.data.uuid + this.retrieveAction() + } else { + this.newAction = true + } + } + + retrieveAction() { + this.actionSpecificationService.retrieveActionSpecification({id: this.actionId}).subscribe( + data => this.action = data, + error => console.error(error), + () => { + this.editForm.patchValue(this.action) + this.initValuesFA() + } + ) + } + + initValuesFA() { + const formArray = this.editForm.get('params') as FormArray + + this.action.params.forEach( (actionParam) => { + formArray.push( + new FormGroup({ + paramName: new FormControl(actionParam.paramName), + paramValue: new FormControl(actionParam.paramValue) + }) + ) + }) + } + + addToActionParamsArray() { + const formArray = this.editForm.get('params') as FormArray + + formArray.push( + new FormGroup({ + paramName: new FormControl(), + paramValue: new FormControl() + }) + ) + } + + deleteFromActionParamsArray(actionParamIndex: number) { + const formArray = this.editForm.get('params') as FormArray + formArray.removeAt(actionParamIndex) + } + + submitDialog() { + + const updateObj: ActionSpecificationCreate | ActionSpecificationUpdate = { + description: this.editForm.value.description, + name: this.editForm.value.name, + params: this.editForm.value.params + } + + if (this.newAction) { + this.actionSpecificationService.createActionSpecification(updateObj).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('created') + ) + } + + else { + this.actionSpecificationService.patchActionSpecification({id: this.actionId, body: updateObj}).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('updated') + ) + } + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.html b/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.html new file mode 100644 index 0000000000000000000000000000000000000000..56d00bfb9ec82783a3115de19e8a80d5e421b738 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.html @@ -0,0 +1,64 @@ +
+
+
+
+
+
+

Action Rules

+

View and manage action rules to be checked upon alarm detections

+
+
+ +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Action Rule Name {{element.name}} Description {{element.description}} Event Type {{element.eventType}} Actions + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.scss b/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.spec.ts b/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..73a1964c3fd3f3481632836164948cd23245dac3 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListActionRulesComponent } from './list-action-rules.component'; + +describe('ListActionRulesComponent', () => { + let component: ListActionRulesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListActionRulesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListActionRulesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.ts b/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..9c02a830797189b3a459ee28391187cf10f850b6 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/list-action-rules/list-action-rules.component.ts @@ -0,0 +1,75 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { ActionSpecification, RuleSpecification } from 'src/app/openApis/assuranceServicesManagementAPI/models'; +import { ActionSpecificationService, RuleSpecificationService } from 'src/app/openApis/assuranceServicesManagementAPI/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteActionRulesComponent } from '../delete-action-rules/delete-action-rules.component'; + +@Component({ + selector: 'app-list-action-rules', + templateUrl: './list-action-rules.component.html', + styleUrls: ['./list-action-rules.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListActionRulesComponent implements OnInit { + + constructor( + private actionSpecService: ActionSpecificationService, + private ruleSpecService: RuleSpecificationService, + public dialog: MatDialog, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'eventType', 'actions'] + dataSource = new MatTableDataSource() + + actionRules: RuleSpecification[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveActionRulesList() + } + + retrieveActionRulesList() { + this.ruleSpecService.listRuleSpecification({}).subscribe( + data => { this.actionRules = data }, + error => console.error(error), + () => { + this.dataSource.data = this.actionRules + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + + openDeleteActionRulesDialog(actionRule: RuleSpecification) { + const dialogRef = this.dialog.open(DeleteActionRulesComponent, {data: actionRule}) + + dialogRef.afterClosed().subscribe( + res => { + if (res) { + this.toast.success("Action rule is successfully deleted") + this.retrieveActionRulesList() + } + } + ) + } + +} diff --git a/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.html b/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..c5296bda41f95c572c377129eb2d8d6ad8ef37a8 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.html @@ -0,0 +1,63 @@ +
+
+
+
+
+
+

Action Specifications

+

View and manage action specifications to be provided and populated in rule checking engine upon alarm detections

+
+
+ + +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + +
Action Name {{element.name}} Description {{element.description}} Actions + + + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.scss b/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.spec.ts b/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..7275616356b965234467f663677845e941de4f30 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListActionsSpecsComponent } from './list-actions-specs.component'; + +describe('ListActionsComponent', () => { + let component: ListActionsSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListActionsSpecsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListActionsSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.ts b/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..d5df2a9d447189374d37962541c3d7ef0c25da88 --- /dev/null +++ b/src/app/p_services/admin/assuranceServicesManagement/list-actions-specs/list-actions-specs.component.ts @@ -0,0 +1,86 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { ActionSpecification } from 'src/app/openApis/assuranceServicesManagementAPI/models'; +import { ActionSpecificationService } from 'src/app/openApis/assuranceServicesManagementAPI/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { DeleteActionSpecComponent } from '../delete-action-spec/delete-action-spec.component'; +import { EditActionSpecsComponent } from '../edit-action-specs/edit-action-specs.component'; + +@Component({ + selector: 'app-list-actions', + templateUrl: './list-actions-specs.component.html', + styleUrls: ['./list-actions-specs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListActionsSpecsComponent implements OnInit { + + constructor( + private actionSpecService: ActionSpecificationService, + public dialog: MatDialog, + private toast: ToastrService + ) { } + + displayedColumns = ['name', 'description', 'actions'] + dataSource = new MatTableDataSource() + + actions: ActionSpecification[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveActionsList() + } + + retrieveActionsList() { + this.actionSpecService.listActionSpecification({}).subscribe( + data => { this.actions = data }, + error => console.error(error), + () => { + this.dataSource.data = this.actions + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + + openDeleteActionDialog(action: ActionSpecification) { + const dialogRef = this.dialog.open(DeleteActionSpecComponent, {data: action}) + + dialogRef.afterClosed().subscribe( + res => { + if (res) { + this.toast.success("Action is successfully deleted") + this.retrieveActionsList() + } + } + ) + } + + openUpdateActionDialog(element: ActionSpecification) { + const dialogRef = this.dialog.open(EditActionSpecsComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Action list is successfully updated") + this.retrieveActionsList() + } + } + ) + } + +} diff --git a/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.html b/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.html new file mode 100644 index 0000000000000000000000000000000000000000..07b17e6cd28452bc5ee569ca8a8d5ba2822c1674 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete catalog {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.scss b/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.spec.ts b/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..741c3ef0f33d6f5962fada856955f5a518d9e6da --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteServiceCatalogComponent } from './delete-service-catalog.component'; + +describe('DeleteServiceCatalogComponent', () => { + let component: DeleteServiceCatalogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteServiceCatalogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteServiceCatalogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.ts b/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..1292c5e35fe97b62f575872e54a86e397f652ff9 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-catalog/delete-service-catalog.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ServiceCatalog } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceCatalogService } from 'src/app/openApis/serviceCatalogManagement/services'; + + +@Component({ + selector: 'app-delete-service-catalog', + templateUrl: './delete-service-catalog.component.html', + styleUrls: ['./delete-service-catalog.component.scss'] +}) +export class DeleteServiceCatalogComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceCatalog, + private catalogService: ServiceCatalogService, + private dialogRef: MatDialogRef + ) { } + + ngOnInit() { + } + + confirmDelete() { + this.catalogService.deleteServiceCatalog(this.data.id).subscribe( + data => { }, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.html b/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.html new file mode 100644 index 0000000000000000000000000000000000000000..9ad50fb4cbea4002fa70ae5b19fba82414b9d563 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete category {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.scss b/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.spec.ts b/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..e08d0abd218eb055fdfd132deef1374fdb41d2db --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteServiceCategoryComponent } from './delete-service-category.component'; + +describe('DeleteServiceCategoryComponent', () => { + let component: DeleteServiceCategoryComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteServiceCategoryComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteServiceCategoryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.ts b/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..e5cf86929790dd082c03c220f070c05c89db3097 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ServiceCategory } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceCategoryService } from 'src/app/openApis/serviceCatalogManagement/services'; + +@Component({ + selector: 'app-delete-service-category', + templateUrl: './delete-service-category.component.html', + styleUrls: ['./delete-service-category.component.scss'] +}) +export class DeleteServiceCategoryComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceCategory, + private dialogRef: MatDialogRef, + private categoryService: ServiceCategoryService + + ) { } + + ngOnInit() { + } + + confirmDelete() { + this.categoryService.deleteServiceCategory(this.data.id).subscribe( + data => {}, + error => {this.dialogRef.close(error); console.error(error)}, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.html b/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.html new file mode 100644 index 0000000000000000000000000000000000000000..aa219d3507c26b450e64846a473064eedfe855bb --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete specification {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.scss b/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.spec.ts b/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..2553013ccf8369675cbefcd7401026f7875964a7 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteServiceSpecComponent } from './delete-service-spec.component'; + +describe('DeleteServiceSpecComponent', () => { + let component: DeleteServiceSpecComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteServiceSpecComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteServiceSpecComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.ts b/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..44e63c60a0aa6c34fd7076e518ce410161164d28 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; + +@Component({ + selector: 'app-delete-service-spec', + templateUrl: './delete-service-spec.component.html', + styleUrls: ['./delete-service-spec.component.scss'] +}) +export class DeleteServiceSpecComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceSpecification, + private dialogRef: MatDialogRef, + private specService: ServiceSpecificationService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.specService.deleteServiceSpecification(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.html b/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..621a8c848bc6a03477cdf7964b6375863c36f59c --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.html @@ -0,0 +1,114 @@ +
+

+ + Edit Service Catalog +
+ Last updated at {{catalog?.lastUpdate | date:'short'}} (Local Time) +
+

+ +

+ + Create New Service Catalog +

+
+ + +
+ + Name + + + + + Version + + + + + Description + + + + + Lifecycle Status + + + {{status}} + + + + + + + Assigned categories + + + {{category.name}} + cancel + + + + + + + {{category.name}} + + + + +
+
+ + Valid From + + + + date_range + + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + + date_range + + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+
+ + + +
+ +
+
+ + +
+
+
+ +
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..47d89bb4972eddd284a9f5e5e1ca4d9010466bf0 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditServiceCatalogsComponent } from './edit-service-catalogs.component'; + +describe('EditServiceCatalogsComponent', () => { + let component: EditServiceCatalogsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditServiceCatalogsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditServiceCatalogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..36f76df714ab1de60f1eff3178d0e53eed158ef9 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-catalogs/edit-service-catalogs.component.ts @@ -0,0 +1,203 @@ +import { Component, OnInit, ViewChild, ElementRef, Inject } from '@angular/core'; +import { ServiceCatalogService, ServiceCategoryService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { FormGroup, FormControl } from '@angular/forms'; +import { ServiceCatalog, ServiceCatalogUpdate, ServiceCategory, ServiceCatalogCreate } from 'src/app/openApis/serviceCatalogManagement/models'; + + +import { Observable } from 'rxjs'; +import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { MatChipInputEvent } from '@angular/material/chips'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { startWith, map } from 'rxjs/operators'; + +@Component({ + selector: 'app-edit-service-catalogs', + templateUrl: './edit-service-catalogs.component.html', + styleUrls: ['./edit-service-catalogs.component.scss'] +}) + +export class EditServiceCatalogsComponent implements OnInit { + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceCatalog, + private catalogService: ServiceCatalogService, + private categoryService: ServiceCategoryService, + private dialogRef: MatDialogRef, + ) { } + + catalogID: string + catalog: ServiceCatalog + + editForm = new FormGroup({ + // categoryIDs: new FormControl([]), + category: new FormControl([]), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + relatedParty: new FormControl(), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + + + selectable = true; + removable = true; + addOnBlur = true; + + categoryInputCtrl = new FormControl(); + filteredCategories: Observable; + + // categories: string[] = ['Lemon']; + categories: ServiceCategory[] = [] + + // allCategories: string[] = ['Apple', 'Lemon', 'Lime', 'Orange', 'Strawberry']; + + nonSelectedCategories: ServiceCategory[] = [] + nonSelectedRootCategories: ServiceCategory[] = [] + + + @ViewChild('categoryInput') categoryInput: ElementRef; + + @ViewChild('categoryInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + // @ViewChild('auto', {static: false}) matAutocompleteTrigger: MatAutocompleteTrigger; + + newCatalog: boolean = false + + ngOnInit() { + // this.editForm.get('category').valueChanges.subscribe( val => console.log(val)) + this.retrieveServiceCategories() + + if (this.data) + { + this.catalogID = this.data.id + this.retrieveServiceCatalog() + } + else { this.newCatalog = true } + } + + retrieveServiceCategories() { + this.categoryService.listServiceCategory({}).subscribe( + data => this.nonSelectedCategories = data, + error => console.error(error), + () => { + this.nonSelectedRootCategories = this.nonSelectedCategories.filter(cat => cat.isRoot === true) + + this.filteredCategories = this.categoryInputCtrl.valueChanges.pipe( + startWith(null), + map( (category: string | ServiceCategory) => typeof(category) === 'string' ? this._filter(category) : this.nonSelectedRootCategories.slice() )); + + // console.log(this.nonSelectedCategories) + } + ) + } + + retrieveServiceCatalog() { + this.catalogService.retrieveServiceCatalog({ id: this.catalogID }).subscribe( + data => this.catalog = data, + error => console.error(error), + () => { + this.editForm.patchValue(this.catalog) + this.categories = this.catalog.category + this.categories.forEach(cat => this.nonSelectedRootCategories.splice(this.nonSelectedRootCategories.findIndex((el) => el.id === cat.id), 1)) + } + ) + } + + + addChip(event: MatChipInputEvent): void { + // Add category only when MatAutocomplete is not open + // To make sure this does not conflict with OptionSelected Event + + if (!this.matAutocomplete.isOpen && this.nonSelectedRootCategories.includes(event.input)) { + const input = event.input; + const value = event.value; + + // Add category + if ((value || '').trim()) { + this.categories.push(this.nonSelectedRootCategories.find( el => el.name === value.trim())); + } + + // Reset the input value + if (input) { + input.value = ''; + } + + this.categoryInputCtrl.setValue(null); + } + + event.input.value = ''; + } + + removeChip(category): void { + const index = this.categories.indexOf(category); + + if (index >= 0) { + this.categories.splice(index, 1); + this.nonSelectedRootCategories.push(category); + this.editForm.get('category').setValue(this.categories) + + this.categoryInputCtrl.setValue(null); + } + } + + selected(event: MatAutocompleteSelectedEvent): void { + this.categories.push(event.option.value); + this.editForm.get('category').setValue(this.categories) + + this.nonSelectedRootCategories = this.nonSelectedRootCategories.filter(el => el.name != event.option.value.name) + + this.categoryInput.nativeElement.value = ''; + this.categoryInputCtrl.setValue(null); + } + + private _filter(value: string): ServiceCategory[] { + const filterValue = value.toLowerCase(); + return this.nonSelectedRootCategories.filter(cat => cat.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + this.categoryInputCtrl.setValue(null); + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + + submitDialog() { + + const updateObj: ServiceCatalogCreate | ServiceCatalogUpdate = { + category: this.editForm.value.category.map(el => {return {'id': el.id}}), + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + if (this.newCatalog) { + this.catalogService.createServiceCatalog(updateObj).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('created') + ) + } + + else { + this.catalogService.patchServiceCatalog({id: this.catalogID, serviceCatalog: updateObj}).subscribe( + data => { }, + error => console.error(error), + () => this.dialogRef.close('updated') + ) + } + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.html b/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.html new file mode 100644 index 0000000000000000000000000000000000000000..69a2d3737559c78af3b6fe62bbb251fcd3d7e87c --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.html @@ -0,0 +1,55 @@ +
+

+ + Manage the assignment of Service Specifications to Service Category + +

+ +
+ + + + + + {{candidate.name}} + + + +
+ + +
+ + + + + + + + + + + + + + +
Service Specifications to be assigned + {{element.name}} Actions +
+ +
+ +
+ +
+
+ +
+ + +
+ +
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..862054ee30d31d9d4b96cb81c93f1a7c72c6405e --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.scss @@ -0,0 +1,11 @@ +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding: 4px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding: 4px; +} + +.dialog-content-container { + min-width: 40vw; +} \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d26dda4df0f5f734ed8bb8821aac0d2cf6f0b43b --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssignServiceCandidatesComponent } from './assign-service-candidates.component'; + +describe('AssignServiceCandidatesComponent', () => { + let component: AssignServiceCandidatesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AssignServiceCandidatesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AssignServiceCandidatesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..b3b71ad40a9eace978f153f13529cb8b1376aa15 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/assign-service-candidates/assign-service-candidates.component.ts @@ -0,0 +1,124 @@ +import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; +import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ServiceCategory, ServiceCandidate, ServiceCandidateRef, ServiceCategoryUpdate, ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceCandidateService, ServiceCategoryService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { Observable } from 'rxjs'; +import { FormControl } from '@angular/forms'; +import { startWith, map } from 'rxjs/operators'; + +@Component({ + selector: 'app-assign-service-candidates', + templateUrl: './assign-service-candidates.component.html', + styleUrls: ['./assign-service-candidates.component.scss'] +}) +export class AssignServiceCandidatesComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceCategory, + private dialogRef: MatDialogRef, + private candidateService: ServiceCandidateService, + private categoryService: ServiceCategoryService + + ) { } + + @ViewChild('candidateInput') candidateInput: ElementRef; + @ViewChild('candidateInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + displayedCandidateTableColumns = ['name', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + + serviceCategory: ServiceCategory = this.data + + assignedCandidates: ServiceCandidateRef[] = [] + availableCandidates: ServiceCandidate[] = [] + filteredCandidates$: Observable + + candidateInputCtrl = new FormControl() + + ngOnInit() { + this.listServiceCandidates() + } + + + listServiceCandidates() { + let allServiceCandidates: ServiceCandidate[] + + this.candidateService.listServiceCandidate({}).subscribe( + data => allServiceCandidates = data, + error => console.error(error), + () => { + + const initiallyAssignedCandidatesIDs = this.serviceCategory.serviceCandidate.map(el => el.id) + this.availableCandidates = allServiceCandidates.filter(cand => cand.name && !initiallyAssignedCandidatesIDs.includes(cand.id)) + + + // this.available = this.availableCandidates + + this.assignedCandidates = this.data.serviceCandidate.slice() + this.dataSource.data = this.assignedCandidates + this.dataSource.sort = this.sort + + this.filteredCandidates$ = this.candidateInputCtrl.valueChanges.pipe( + startWith(null), + map( (spec: string | ServiceSpecification) => typeof(spec) === 'string' ? this._filter(spec) : this.availableCandidates.slice() ) + ) + + } + + + ) + } + + selected(event: MatAutocompleteSelectedEvent): void { + this.assignedCandidates.push(event.option.value); + this.dataSource.data = this.assignedCandidates + + this.availableCandidates = this.availableCandidates.filter(el => el.name != event.option.value.name) + + this.candidateInput.nativeElement.value = ''; + this.candidateInputCtrl.setValue(null); + } + + private _filter(value: string): ServiceSpecification[] { + const filterValue = value.toLowerCase(); + return this.availableCandidates.filter(cat => cat.name && cat.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + removeServiceCandidate(spec:ServiceSpecification) { + const index = this.assignedCandidates.indexOf(spec); + if (index >= 0) { + this.assignedCandidates.splice(index, 1); + this.dataSource.data = this.assignedCandidates + this.availableCandidates.push(spec); + + this.candidateInput.nativeElement.value = ''; + this.candidateInputCtrl.setValue(null); + } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + const updateCandidatesObj: ServiceCategoryUpdate = { serviceCandidate: this.assignedCandidates.map(cand => {return {id: cand.id, name: cand.name}}) } + this.categoryService.patchServiceCategory({id: this.serviceCategory.id, serviceCategory: updateCandidatesObj}).subscribe( + data => {}, + error => console.error(error), + () => { this.dialogRef.close('updated') } + ) + } + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.html b/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.html new file mode 100644 index 0000000000000000000000000000000000000000..0b6516bb788854f5bb49654496856347d7d46c32 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.html @@ -0,0 +1,82 @@ +
+

+ + Create new Subcategory and assign it to the Service Category +

+
+ + +
+ + Name + + + + + Version + + + + + Description + + + + + + Lifecycle Status + + {{status}} + + + + +
+
+ + Valid From + + date_range + + + + + Valid Until + + date_range + + +
+
+ +
+ + + +
+ +
+
+ + +
+
+
+ +
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..6135aae95a048ba36b90672b0d9f32cdd1bff76f --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CreateServiceCategoryChildrenComponent } from './create-service-category-children.component'; + +describe('CreateServiceCategoryChildrenComponent', () => { + let component: CreateServiceCategoryChildrenComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CreateServiceCategoryChildrenComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CreateServiceCategoryChildrenComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..b0e581e7f2f3e22d4eaf37e6c28500ac233db639 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/create-service-category-children/create-service-category-children.component.ts @@ -0,0 +1,77 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; + + + +import { FormGroup, FormControl } from '@angular/forms'; +import { ServiceCategory, ServiceCategoryCreate, ServiceCategoryUpdate } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceCategoryService } from 'src/app/openApis/serviceCatalogManagement/services'; + + +@Component({ + selector: 'app-create-service-category-children', + templateUrl: './create-service-category-children.component.html', + styleUrls: ['./create-service-category-children.component.scss'] +}) +export class CreateServiceCategoryChildrenComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceCategory, + private dialogRef: MatDialogRef, + private categoryService: ServiceCategoryService + + ) { } + + editForm = new FormGroup({ + isRoot: new FormControl({value:false, disabled: true}), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + parentId: new FormControl({value:'', disabled: true}), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + parentCategory: ServiceCategory + + ngOnInit() { + if (this.data) { + if (!this.data.validFor) this.data.validFor = {endDateTime:null, startDateTime:null} + this.parentCategory = this.data + this.editForm.patchValue({parentId: this.parentCategory.id}) + } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + const creationObj: ServiceCategoryCreate = this.editForm.value + creationObj.parentId = this.parentCategory.id + creationObj.isRoot = false + + let createdChildCategory: ServiceCategory + this.categoryService.createServiceCategory(creationObj).subscribe( + data => {createdChildCategory = data}, + error => console.error(error), + () => { + this.parentCategory.category.push({id: createdChildCategory.id}) + const updateObj: ServiceCategoryUpdate = { + category: this.parentCategory.category + } + + this.categoryService.patchServiceCategory({serviceCategory: updateObj, id: this.parentCategory.id}).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('created') + ) + } + ) + } +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.html b/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..e6a90e9857155afb6b43b6495b2dba83ebe8a746 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.html @@ -0,0 +1,214 @@ +
+
+
+ +
+
+ +
+
+
+
+

Service Category Designer

+ +

Design a new service category

+ +

Edit Design of {{category?.name}} Service Category

+ +
+ Last updated at + {{category?.lastUpdate | date:'short'}} (Local Time) +
+ +
+ +
+ + + + + +
+
+ + +
+ + + + + Main Service Category properties + + + +
+ + + Name + + + + + Version + + + + + Description + + + +
+ is Root +
+ + + + + + {{category.name}} + + + + + + Lifecycle Status + + {{status}} + + + + +
+
+ + Valid From + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+
+
+
+ +
+
+
+ + + + + + Create and assign Subcategories to Service Category + + + +
+
{{category?.category.length}} Subcategory assigned
+
{{category?.category.length}} Subcategories assigned
+ +
+ +
+ + + Apply filter to assigned Subcategories... + + +
+ +
+ {{category.name}} + +
+ + +
+ +
+
+ + + + + + Manage the assignment of Service Specifications to Service Category + + + +
+
{{category?.serviceCandidate.length}} Service Specification(s) assigned
+ +
+ +
+ + + Apply Filter to assigned Service Specifications... + + +
+ + +
+ + +
+ +
+ + + +
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..b17ba5c4a95de450d5dc1e7699cfe096fe406ff0 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.scss @@ -0,0 +1,18 @@ +.card-paper { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +.children-categories-font { + font-size: 1.1em; +} + +.child-category-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +.breadcrumb1 { + list-style: none; + padding: 0; +} \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a89984c507d8c99f665bbd2e17c22e18560bdf1f --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditServiceCategoriesComponent } from './edit-service-categories.component'; + +describe('EditServiceCategoriesComponent', () => { + let component: EditServiceCategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditServiceCategoriesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditServiceCategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..a60575a45249800c8a75c906529981442c648821 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-categories/edit-service-categories.component.ts @@ -0,0 +1,290 @@ +import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core'; + +import { FormGroup, FormControl, Validators } from '@angular/forms'; + +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; + +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ServiceCategory, ServiceCategoryUpdate, ServiceCategoryCreate, ServiceCategoryRef, ServiceCandidateRef, ServiceCandidate } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceCategoryService, ServiceCandidateService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { Observable, Subscription } from 'rxjs'; +import { startWith, map } from 'rxjs/operators'; +import { CreateServiceCategoryChildrenComponent } from './create-service-category-children/create-service-category-children.component'; +import { DeleteServiceCategoryComponent } from '../delete-service-category/delete-service-category.component'; +import { AssignServiceCandidatesComponent } from './assign-service-candidates/assign-service-candidates.component'; +import { ToastrService } from 'ngx-toastr'; +import { error } from 'protractor'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-edit-service-categories', + templateUrl: './edit-service-categories.component.html', + styleUrls: ['./edit-service-categories.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditServiceCategoriesComponent implements OnInit, OnDestroy { + + constructor( + private categoryService: ServiceCategoryService, + private candidateService: ServiceCandidateService, + private activatedRoute: ActivatedRoute, + private dialog: MatDialog, + private router: Router, + private toast: ToastrService, + public appService: AppService + ) { } + + category: ServiceCategory + categoryID: string + + allCategories: ServiceCategory[] + + editForm = new FormGroup({ + category: new FormControl([]), + isRoot: new FormControl({value: true, disabled: true}), + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + parentId: new FormControl({value:null, disabled: true}), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + serviceCandidate: new FormControl([]), + version: new FormControl("0.1.0") + }) + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + filteredCategories$: Observable + + displayedColumnsChildrenCatalogs = ['name', 'actions'] + dataSource = new MatTableDataSource() + + subscriptions = new Subscription() + + childrenCategoryFilterCtrl = new FormControl(); + filteredChildrenCategories$: Observable + + serviceCandidatesFilterCtrl = new FormControl(); + filteredServiceCandidates$: Observable + + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + newCategory: boolean = false + ngOnInit() { + this.retrieveServiceCategoryList() + this.subscriptionsInit() + } + + subscriptionsInit() { + this.subscriptions.add( + this.router.events.subscribe( + (event) => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.categoryID = event.snapshot.params.id + this.retrieveServiceCategory() + } + } + ) + ) + + this.subscriptions.add( + this.editForm.get('isRoot').valueChanges.subscribe( + (value: MatCheckboxChange) => { + this.editForm.get('parentId').reset() + if (value) { + this.editForm.get('parentId').disable() + this.editForm.get('parentId').clearValidators() + } else { + this.editForm.get('parentId').enable() + this.editForm.get('parentId').setValidators(Validators.required) + this.editForm.get('parentId').updateValueAndValidity() + } + } + ) + ) + } + + retrieveServiceCategory() { + this.categoryService.retrieveServiceCategory({id: this.categoryID}).subscribe( + data => this.category = data, + error => console.error(error), + () => { + // if (!this.category.validFor) this.category.validFor = {endDateTime:null, startDateTime:null} + this.editForm.patchValue(this.category) + + if (this.category.parentId) { + this.editForm.get('isRoot').disable() + this.editForm.patchValue({parentId: this.allCategories.find(el => el.id === this.category.parentId)}) + this.editForm.get('parentId').disable() + } else { + // this.editForm.get('isRoot').enable() + } + + this.filteredChildrenCategories$ = this.childrenCategoryFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnChildrenCategories(value) : this.category.category.slice() ) + ) + + this.filteredServiceCandidates$ = this.serviceCandidatesFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnServiceCandidates(value) : this.category.serviceCandidate.slice() ) + ) + } + ) + } + + retrieveServiceCategoryList() { + this.categoryService.listServiceCategory({}).subscribe( + data => this.allCategories = data, + error => console.error(error), + () => { + this.filteredCategories$ = this.editForm.get('parentId').valueChanges.pipe( + startWith(null), + map( (value: null | string | ServiceCategory) => typeof(value) === 'string' ? this._filterParentCategories(value) : this.allCategories.slice() ) + ) + + if (this.activatedRoute.snapshot.params.id) + { + this.categoryID = this.activatedRoute.snapshot.params.id + this.retrieveServiceCategory() + } + else { + this.newCategory = true + } + } + ) + } + + private _filterParentCategories(value: string): ServiceCategory[] { + const filterValue = value.toLowerCase(); + + return this.allCategories.filter(cat => cat.name.toLowerCase().includes(filterValue)); + } + + displayFn(category?: ServiceCategory): string | undefined { + return category ? category.name : undefined; + } + + private _filterOnChildrenCategories(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.category.category.filter( cat => cat.name.toLowerCase().includes(filterValue) ) + } + + private _filterOnServiceCandidates(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.category.serviceCandidate.filter( cand => cand.name.toLowerCase().includes(filterValue) ) + } + + openCategoryChildDialog() { + const dialogRef = this.dialog.open(CreateServiceCategoryChildrenComponent, {data: this.category, disableClose: true}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Subcategories list is successfully updated") + this.retrieveServiceCategory() + } + } + ) + } + + openCategoryDeleteDialog(element: ServiceCategory) { + const dialogRef = this.dialog.open(DeleteServiceCategoryComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Service Category. Please check dependencies.") + } else { + this.toast.success("Subcategories list is successfully updated") + this.retrieveServiceCategory() + } + } + ) + } + + openAssignCandidatesDialog(element: ServiceCategory) { + const dialogRef = this.dialog.open(AssignServiceCandidatesComponent, {data: element, disableClose: true, autoFocus:false}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Service Specifications list is successfully updated") + this.retrieveServiceCategory() + } + } + ) + } + + navigateToServiceSpec(cand: ServiceCandidateRef) { + let serviceCandidate: ServiceCandidate + this.candidateService.retrieveServiceCandidate({id: cand.id}).subscribe( + data => serviceCandidate = data, + error => this.toast.error("An error occured while retrieving Service Specification Information"), + () => { + this.router.navigate(['../../service_spec_update', serviceCandidate.serviceSpecification.id], { relativeTo: this.activatedRoute}) + } + ) + } + + + updateServiceCategory() { + + const updateObj: ServiceCategoryCreate | ServiceCategoryUpdate = { + // category: this.editForm.value.category.map(el => {return {'id': el.id}}), + isRoot: this.editForm.getRawValue().isRoot, + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + if (!this.editForm.get('isRoot').value) updateObj.parentId = this.editForm.get('parentId').value.id + + let updatedCategory: ServiceCategory + if (this.newCategory) { + this.categoryService.createServiceCategory(updateObj).subscribe( + data => { updatedCategory = data }, + error => console.error(error), + () => { + this.newCategory = false + this.toast.success("Service Category is successfully created") + this.refreshServiceCategory(updatedCategory) + } + ) + } + else { + this.categoryService.patchServiceCategory({ id: this.categoryID, serviceCategory: updateObj }).subscribe( + data => { updatedCategory = data }, + error => console.error(error), + () => { + this.toast.success("Service Category is successfully updated") + this.refreshServiceCategory(updatedCategory) + } + ) + } + } + + refreshServiceCategory(updatedCategory : ServiceCategory) { + this.categoryID = updatedCategory.id + this.retrieveServiceCategory() + } + + ngOnDestroy(): void { + this.subscriptions.unsubscribe() + } + + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.html new file mode 100644 index 0000000000000000000000000000000000000000..5a3a58241c27282280a052718eeb5aacec2978c4 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.html @@ -0,0 +1,56 @@ +
+

+ + Assign Related Resource Specifications + +

+ +
+ + + + + + + {{spec.name}} + + + +
+ + +
+ + + + + + + + + + + + + + +
Assigned Resource Specifications + {{element.name}} Actions +
+ +
+ +
+ +
+
+ +
+ + +
+ +
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..9828c4477e9b16452ce1051ef4259e5d8618e00a --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.scss @@ -0,0 +1,11 @@ +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding: 4px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding: 4px; +} + +.dialog-content-container { + min-width: 40vw; +} \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..e1ae6bcf6e441b1292d56849fd1c495b1a96a70d --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssignResourceRelationshipsComponent } from './assign-resource-relationships.component'; + +describe('AssignResourceRelationshipsComponent', () => { + let component: AssignResourceRelationshipsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AssignResourceRelationshipsComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AssignResourceRelationshipsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..3abe3ae0d2de0fb16c3e70bf9f8b466afa29db55 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-resource-relationships/assign-resource-relationships.component.ts @@ -0,0 +1,117 @@ +import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; +import { FormControl } from '@angular/forms'; +import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Observable } from 'rxjs'; +import { startWith, map } from 'rxjs/operators'; + +import { ResourceSpecification } from 'src/app/openApis/resourceCatalogManagement/models'; +import { ResourceSpecificationService } from 'src/app/openApis/resourceCatalogManagement/services'; +import { ServiceSpecification, ServiceSpecificationUpdate } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; + +@Component({ + selector: 'app-assign-resource-relationships', + templateUrl: './assign-resource-relationships.component.html', + styleUrls: ['./assign-resource-relationships.component.scss'] +}) +export class AssignResourceRelationshipsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public injectedData: { + serviceSpec: ServiceSpecification + }, + private dialogRef: MatDialogRef, + private serviceSpecService: ServiceSpecificationService, + private resourceSpecService: ResourceSpecificationService + ) { } + + @ViewChild('specInput') specInput: ElementRef; + @ViewChild('specInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + displayedColumnsSpecRelationships = ['name', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + specInputCtrl = new FormControl(); + + selectedSpecs: ResourceSpecification[] = [] + + nonSelectedSpecs: ResourceSpecification[] + filteredSpecs$: Observable + + ngOnInit(): void { + this.listResourceSpecs() + } + + listResourceSpecs() { + this.resourceSpecService.listResourceSpecification({}).subscribe( + data => this.nonSelectedSpecs = data, + error => console.error(error), + () => { + //remove already assigned Resource spec from the available list + const initiallyAssignedSpecIDs: string[] = this.injectedData.serviceSpec.resourceSpecification.map(el => el.id) + this.nonSelectedSpecs = this.nonSelectedSpecs.filter(spec => !initiallyAssignedSpecIDs.includes(spec.id)) + + this.selectedSpecs = this.injectedData.serviceSpec.resourceSpecification.slice() + this.dataSource.data = this.selectedSpecs + this.dataSource.sort = this.sort + + this.filteredSpecs$ = this.specInputCtrl.valueChanges.pipe( + startWith(null), + map( (spec: string | ResourceSpecification) => typeof(spec) === 'string' ? this._filter(spec) : this.nonSelectedSpecs.slice() ) + ) + } + ) + } + + optionSelected(event: MatAutocompleteSelectedEvent): void { + this.selectedSpecs.push(event.option.value); + this.dataSource.data = this.selectedSpecs + + this.nonSelectedSpecs = this.nonSelectedSpecs.filter(el => el.name != event.option.value.name) + + this.specInput.nativeElement.value = ''; + this.specInputCtrl.setValue(null); + } + + private _filter(value: string): ResourceSpecification[] { + const filterValue = value.toLowerCase(); + return this.nonSelectedSpecs.filter(cat => cat.name?.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + removeServiceSpec(spec:ServiceSpecification) { + const index = this.selectedSpecs.indexOf(spec); + if (index >= 0) { + this.selectedSpecs.splice(index, 1); + this.dataSource.data = this.selectedSpecs + this.nonSelectedSpecs.push(spec); + } + } + + closeDialog() { + this.dialogRef.close() + } + + confirmAssignment() { + const updateRelationshipsObj: ServiceSpecificationUpdate = { + resourceSpecification: this.selectedSpecs.map(spec =>{ return {id: spec.id, name: spec.name, version: spec.version}}) + } + + this.serviceSpecService.patchServiceSpecification({id: this.injectedData.serviceSpec.id, serviceSpecification: updateRelationshipsObj}).subscribe( + data => {}, + error => console.error(error), + () => {this.dialogRef.close('updated')} + ) + } + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.html new file mode 100644 index 0000000000000000000000000000000000000000..8f49f7dca1fd8c6b4f1d9c168d2f83f3c90925ac --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.html @@ -0,0 +1,56 @@ +
+

+ + Assign Related Service Specifications + +

+ +
+ + + + + + + {{spec.name}} + + + +
+ + +
+ + + + + + + + + + + + + + +
Assigned Service Specifications + {{element.name}} Actions +
+ +
+ +
+ +
+
+ +
+ + +
+ +
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..9828c4477e9b16452ce1051ef4259e5d8618e00a --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.scss @@ -0,0 +1,11 @@ +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding: 4px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding: 4px; +} + +.dialog-content-container { + min-width: 40vw; +} \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..e938c4b1ff504f5be5e81b97df7221432b62da87 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AssignServiceRelationshipsComponent } from './assign-service-relationships.component'; + +describe('AssignServiceRelationshipsComponent', () => { + let component: AssignServiceRelationshipsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AssignServiceRelationshipsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AssignServiceRelationshipsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..d027d7dac4dbc7a6ea56b6c768f83e2ce2f5b844 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/assign-service-relationships/assign-service-relationships.component.ts @@ -0,0 +1,123 @@ +import { Component, OnInit, Inject, ViewChild, ElementRef } from '@angular/core'; +import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; +import { MatChipInputEvent } from '@angular/material/chips'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ServiceSpecification, ServiceSpecificationUpdate } from 'src/app/openApis/serviceCatalogManagement/models'; +import { Observable } from 'rxjs'; +import { FormControl, FormGroup } from '@angular/forms'; +import { startWith, map } from 'rxjs/operators'; + + + +@Component({ + selector: 'app-assign-service-relationships', + templateUrl: './assign-service-relationships.component.html', + styleUrls: ['./assign-service-relationships.component.scss'] +}) +export class AssignServiceRelationshipsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + serviceSpec: ServiceSpecification + }, + private dialogRef: MatDialogRef, + private specService: ServiceSpecificationService + ) { } + + + @ViewChild('specInput') specInput: ElementRef; + @ViewChild('specInput', { read: MatAutocompleteTrigger }) matAutocompleteTrigger: MatAutocompleteTrigger; + + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + displayedColumnsSpecRelationships = ['name', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + + + specInputCtrl = new FormControl(); + + selectedSpecs: ServiceSpecification[] = [] + + nonSelectedSpecs: ServiceSpecification[] + filteredSpecs$: Observable + + ngOnInit() { + this.listServiceSpecs() + } + + listServiceSpecs() { + this.specService.listServiceSpecification({}).subscribe( + data => this.nonSelectedSpecs = data, + error => console.error(error), + () => { + //remove self from available spec list as well as the allready assigned specs + this.nonSelectedSpecs.splice(this.nonSelectedSpecs.findIndex(el => el.id === this.data.serviceSpec.id), 1) + const initiallyAssignedSpecIDs: string[] = this.data.serviceSpec.serviceSpecRelationship.map(el => el.id) + this.nonSelectedSpecs = this.nonSelectedSpecs.filter(spec => !initiallyAssignedSpecIDs.includes(spec.id)) + + this.selectedSpecs = this.data.serviceSpec.serviceSpecRelationship.slice() + this.dataSource.data = this.selectedSpecs + this.dataSource.sort = this.sort + + this.filteredSpecs$ = this.specInputCtrl.valueChanges.pipe( + startWith(null), + map( (spec: string | ServiceSpecification) => typeof(spec) === 'string' ? this._filter(spec) : this.nonSelectedSpecs.slice() ) + ) + } + ) + } + + + + selected(event: MatAutocompleteSelectedEvent): void { + this.selectedSpecs.push(event.option.value); + this.dataSource.data = this.selectedSpecs + + this.nonSelectedSpecs = this.nonSelectedSpecs.filter(el => el.name != event.option.value.name) + + this.specInput.nativeElement.value = ''; + this.specInputCtrl.setValue(null); + } + + private _filter(value: string): ServiceSpecification[] { + const filterValue = value.toLowerCase(); + return this.nonSelectedSpecs.filter(cat => cat.name.toLowerCase().indexOf(filterValue) !== -1); + } + + openList() { + if (!this.matAutocomplete.isOpen) this.matAutocompleteTrigger.openPanel() + } + + removeServiceSpec(spec:ServiceSpecification) { + const index = this.selectedSpecs.indexOf(spec); + if (index >= 0) { + this.selectedSpecs.splice(index, 1); + this.dataSource.data = this.selectedSpecs + this.nonSelectedSpecs.push(spec); + } + } + + + closeDialog() { + this.dialogRef.close() + } + + confirmAssignment() { + + const updateRelationshipsObj: ServiceSpecificationUpdate = { + serviceSpecRelationship: this.selectedSpecs.map(spec =>{ return {id: spec.id, name: spec.name}}) + } + + this.specService.patchServiceSpecification({id: this.data.serviceSpec.id, serviceSpecification: updateRelationshipsObj}).subscribe( + data => {}, + error => console.error(error), + () => {this.dialogRef.close('updated')} + ) + } +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.html new file mode 100644 index 0000000000000000000000000000000000000000..771ac331bc25ee079dc0be3b7063fc8b52e37a38 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.html @@ -0,0 +1,26 @@ +
+ +

+ + Create New GST External Template +

+ + + +
+ + Name of the cloned GST Template + + * Required field + +
+
+ +
+
+ + +
+
+ +
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..4c35c45040c5c624921ed9da0a0e79a226012d99 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CloneGstTemplateComponent } from './clone-gst-template.component'; + +describe('CloneGstTemplateComponent', () => { + let component: CloneGstTemplateComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CloneGstTemplateComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CloneGstTemplateComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c4794113fa43b92eab35d6862ecd911951aebedc --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component.ts @@ -0,0 +1,34 @@ +import { Component, OnInit } from '@angular/core'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { MatDialogRef } from '@angular/material/dialog'; +import { FormControl, Validators } from '@angular/forms'; + +@Component({ + selector: 'app-clone-gst-template', + templateUrl: './clone-gst-template.component.html', + styleUrls: ['./clone-gst-template.component.scss'] +}) +export class CloneGstTemplateComponent implements OnInit { + + constructor( + private specService: ServiceSpecificationService, + private dialogRef: MatDialogRef + ) { } + + serviceNameCtrl = new FormControl('', Validators.required) + + ngOnInit() { + + } + + submitDialog() { + this.specService.cloneGSTServiceSpecification(this.serviceNameCtrl.value).subscribe( + data => { this.dialogRef.close(data)}, + error => console.error(error) + ) + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.html new file mode 100644 index 0000000000000000000000000000000000000000..82457648624ffa6e55aed32b2e78cf81e735b807 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete attachment {{data.attachmentToBeDeleted.name}} ? +
+ +
+ + +
diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a0809196b1b94b75cdbfd7f1b2c20a53f2ee0c99 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteAttachmentComponent } from './delete-attachment.component'; + +describe('DeleteAttachmentComponent', () => { + let component: DeleteAttachmentComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteAttachmentComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteAttachmentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..f4cd7bcd23352457f0fed6e05f5fea1d52c276c3 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-attachment/delete-attachment.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { ServiceSpecificationUpdate, ServiceSpecification, Attachment, AttachmentRef } from 'src/app/openApis/serviceCatalogManagement/models'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; + +@Component({ + selector: 'app-delete-resource-spec-attachment', + templateUrl: './delete-attachment.component.html', + styleUrls: ['./delete-attachment.component.scss'] +}) +export class DeleteAttachmentComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + serviceSpec: ServiceSpecification + serviceSpecAttachmentArray: AttachmentRef[], + attachmentToBeDeleted: AttachmentRef + }, + private dialogRef: MatDialogRef, + private specService: ServiceSpecificationService + + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + const updateSpecObj: ServiceSpecificationUpdate = { + attachment: this.data.serviceSpecAttachmentArray + } + + + this.specService.patchServiceSpecification({ id: this.data.serviceSpec.id, serviceSpecification: updateSpecObj }).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.html new file mode 100644 index 0000000000000000000000000000000000000000..5e3c8d6b933e8eb57eef3244462e03cb724577d0 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete LCM Rule {{data.name}} ? +
+ +
+ + +
diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..790ceb7964bc849e02d40477f3b170968e1a51a3 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteLcmruleComponent } from './delete-lcmrule.component'; + +describe('DeleteLcmruleComponent', () => { + let component: DeleteLcmruleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteLcmruleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteLcmruleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..ec739c87c01306b090e8cbebc291c681e9e8a86d --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-lcmrule/delete-lcmrule.component.ts @@ -0,0 +1,39 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { LCMRuleSpecification } from 'src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification'; +import { LcmRuleSpecificationService } from 'src/app/openApis/lcmRuleSpecificationAPI/services/lcm-rule-specification.service'; + + + +@Component({ + selector: 'app-delete-lcmrule', + templateUrl: './delete-lcmrule.component.html', + styleUrls: ['./delete-lcmrule.component.scss'] +}) +export class DeleteLcmruleComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: LCMRuleSpecification, + private dialogRef: MatDialogRef, + private lcmRulesService: LcmRuleSpecificationService + + ) { } + + ngOnInit() { + } + + + confirmDelete() { + // this.dialogRef.close('deleted') + this.lcmRulesService.deleteLCMRuleSpecification(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..219a8c7ca190b648d0451af508b24cfe3cbdf677 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete characteristic {{data.specToBeDeleted.name}} ? +
+ +
+ + +
diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..24253d4e9c484e6ad8f91bab00047f6f6b1ce9cf --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteServiceSpecCharacteristicsComponent } from './delete-service-spec-characteristics.component'; + +describe('DeleteServiceSpecCharacteristicsComponent', () => { + let component: DeleteServiceSpecCharacteristicsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteServiceSpecCharacteristicsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteServiceSpecCharacteristicsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..45643a45e1b1b44dc856553c6c4ae4c1939136d1 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/delete-service-spec-characteristics/delete-service-spec-characteristics.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ServiceSpecCharacteristic, ServiceSpecificationUpdate, ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; + +@Component({ + selector: 'app-delete-service-spec-characteristics', + templateUrl: './delete-service-spec-characteristics.component.html', + styleUrls: ['./delete-service-spec-characteristics.component.scss'] +}) +export class DeleteServiceSpecCharacteristicsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + serviceSpec: ServiceSpecification + serviceSpecCharacteristicArray:ServiceSpecCharacteristic[], + specToBeDeleted: ServiceSpecCharacteristic + }, + private dialogRef: MatDialogRef, + private specService: ServiceSpecificationService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + const updateSpecObj: ServiceSpecificationUpdate = { + serviceSpecCharacteristic: this.data.serviceSpecCharacteristicArray + } + + this.specService.patchServiceSpecification({ id: this.data.serviceSpec.id, serviceSpecification: updateSpecObj }).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/discard-changes.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/discard-changes.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b3511090b98ba9cba1a347000d8bb3ce26f1cad3 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/discard-changes.component.html @@ -0,0 +1,12 @@ +

+ + Discard Changes +

+
+ Unsubmitted changes will be discarded. Are you sure you want to discard changes and continue with the navigation? +
+ +
+ + +
diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..e3df65eae46833c4be3ee710ebd28bf44e517e3f --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.html @@ -0,0 +1,229 @@ +
+ +

+ + Design New Service Characteristic +

+ +

+ + Edit Service Characteristic +

+ +
+ + +
+ + Name + + + + + Description + + + +
+
+ + Valid From + + + + date_range + + + + + + Valid Until + + + date_range + + + +
+
+ + + Value Type + + + {{type}} + + + + + Of + + + {{type}} + + + + + + + Min Cardinality + + + + + Max Cardinality + + + +
+
+
+ Extensible +
+ +
+ Configurable +
+
+
+ +
+ +
+
+
+ + Service Characteristic Value +
+
+ +
+
+ +
+ +
+ + +
+
+ + Alias + + + + Value + + + +
+
+ + + Unit Of Measure + + + +
+ Is + Default + +
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+ + + +
+ + + Alias + + +
+ + + Unit Of Measure + + + +
+ Is + Default + +
+ + +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+ + Value + + + +
+ +
+ +
+ +
+ +
+ +
+
+
+ + +
+
+
+
diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..b66a80e90ef0d5d8d936f058f893c609b3f3cd32 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.scss @@ -0,0 +1,16 @@ + +.form-array-container { + max-height: 250px; + overflow-x: hidden; + overflow-y: auto; +} + +.characteristic-value-container { + // padding-top: 0.75rem; + border: 1px; + border-style: dashed; + border-color: #ccc; + margin-bottom: 0.5rem; + background-color: #fafaff; + border-radius: 5px; +} \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..3b399b24aae103364f5ab98c60f851923a9a7903 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditServiceSpecCharacteristicsComponent } from './edit-service-spec-characteristics.component'; + +describe('EditServiceSpecCharacteristicsComponent', () => { + let component: EditServiceSpecCharacteristicsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditServiceSpecCharacteristicsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditServiceSpecCharacteristicsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..bb64419c5bbcfa71bfeb45027244510e87ba30c1 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-spec-characteristics/edit-service-spec-characteristics.component.ts @@ -0,0 +1,208 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ServiceSpecCharacteristic, ServiceSpecCharacteristicValue, ServiceSpecification, ServiceSpecificationUpdate } from 'src/app/openApis/serviceCatalogManagement/models'; +import { FormGroup, FormControl, FormArray } from '@angular/forms'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { trigger } from '@angular/animations'; +import { fadeIn, simpleFade } from 'src/app/shared/animations/animations'; + + +@Component({ + selector: 'app-edit-service-spec-characteristics', + templateUrl: './edit-service-spec-characteristics.component.html', + styleUrls: ['./edit-service-spec-characteristics.component.scss'], + animations: [ trigger('fadeIn', fadeIn()), trigger('simpleFade', simpleFade()) ] +}) +export class EditServiceSpecCharacteristicsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + serviceSpec: ServiceSpecification, + specToBeUpdated: ServiceSpecCharacteristic, + }, + private dialogRef: MatDialogRef, + private specService: ServiceSpecificationService, + private toast: ToastrService + ) { } + + editFormCharacteristic = new FormGroup({ + name: new FormControl(), + description: new FormControl(), + configurable: new FormControl(), + extensible: new FormControl(), + maxCardinality: new FormControl(1), + minCardinality: new FormControl(0), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + valueType: new FormControl(), + serviceSpecCharacteristicValue: new FormArray([]) + }) + + subValueTypeCtrl = new FormControl('INTEGER') + + valueTypes = ['INTEGER', 'SMALLINT', 'LONGINT', 'FLOAT', 'BINARY', 'BOOLEAN', 'ARRAY', 'SET', 'TEXT', 'LONGTEXT', 'ENUM', 'TIMESTAMP'] + subValueTypes = ['INTEGER', 'SMALLINT', 'LONGINT', 'FLOAT', 'BINARY', 'BOOLEAN', 'TEXT', 'LONGTEXT', 'TIMESTAMP'] + + // valueSubType = new FormControl() + subTypeSelection: boolean = false + + newSpec: boolean = false + + compDestroy$ = new Subject() + + isCharValueBlockExpanded: boolean[] = [] + + ngOnInit() { + if (this.data.specToBeUpdated) { + if (!this.data.specToBeUpdated.validFor) this.data.specToBeUpdated.validFor = {endDateTime:null, startDateTime:null} + this.editFormCharacteristic.patchValue(this.data.specToBeUpdated) + + const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as FormArray + this.data.specToBeUpdated.serviceSpecCharacteristicValue.forEach( val => { + formArray.push(this.updateFormArrayItem(val)) + this.isCharValueBlockExpanded.push(false) + }) + + this.subValueTypeCtrl.patchValue(this.data.specToBeUpdated.serviceSpecCharacteristicValue[0].valueType) + if (['SET', 'ARRAY', 'ENUM'].includes(this.data.specToBeUpdated.valueType)) { + this.subTypeSelection = true + } + } + + else { this.newSpec = true } + + this.editFormCharacteristic.get('valueType').valueChanges.pipe( + takeUntil(this.compDestroy$) + ) + .subscribe( + val => { + this.editFormCharacteristic.setControl('serviceSpecCharacteristicValue', new FormArray([])) + this.createFormArrayItem() + + + if (['SET', 'ARRAY', 'ENUM'].includes(val)) { + this.subTypeSelection = true + this.subValueTypeCtrl.valueChanges.pipe( + takeUntil(this.compDestroy$) + ) + .subscribe ( + subVal => { + this.editFormCharacteristic.setControl('serviceSpecCharacteristicValue', new FormArray([])) + this.createFormArrayItem() + } + ) + } else { + this.subTypeSelection = false + } + // const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as FormArray + // if (val !== 'ARRAY' && val !=='ENUM' && val !=='SET') { + // this.subTypeSelection = false + // formArray.setControl(0, + // new FormGroup({ + // value: new FormGroup({ + // alias: new FormControl(), + // value: new FormControl(), + // }), + // unitOfMeasure: new FormControl(), + // isDefault: new FormControl(), + // valueType: new FormControl(this.editFormCharacteristic.get('valueType').value) + // })) + // } + } + ) + } + + + updateFormArrayItem(CharValue: ServiceSpecCharacteristicValue): FormGroup { + return new FormGroup({ + value: new FormGroup({ + alias: new FormControl(CharValue.value.alias), + value: new FormControl(CharValue.value.value), + }), + unitOfMeasure: new FormControl(CharValue.unitOfMeasure), + isDefault: new FormControl({value: (CharValue.isDefault || this.data.specToBeUpdated.valueType === 'ARRAY'), disabled: this.data.specToBeUpdated.valueType === 'ARRAY'}), + valueType: new FormControl(CharValue.valueType) + }) + } + + + createFormArrayItem() { + const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as FormArray + + // let isDisabled: boolean = true + let subType: string = this.editFormCharacteristic.get('valueType').value + + if (['SET', 'ARRAY', 'ENUM'].includes(this.editFormCharacteristic.get('valueType').value)) { + // isDisabled = false + subType = this.subValueTypeCtrl.value + } + + formArray.push( + new FormGroup({ + value: new FormGroup({ + alias: new FormControl(), + value: new FormControl(), + }), + unitOfMeasure: new FormControl(), + isDefault: new FormControl({value: this.editFormCharacteristic.get('valueType').value === 'ARRAY', disabled: this.editFormCharacteristic.get('valueType').value === 'ARRAY'}), + valueType: new FormControl(subType) + }) + ) + this.isCharValueBlockExpanded.push(false) + } + + deleteFormArrayItem(index) { + const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as FormArray + formArray.removeAt(index) + this.isCharValueBlockExpanded.splice(index, 1) + } + + expandCharValueBlock(index) { + this.isCharValueBlockExpanded[index] = !this.isCharValueBlockExpanded[index] + } + + isDefaultCheckboxChanged(index, event: MatCheckboxChange) { + if (this.editFormCharacteristic.get('valueType').value === "ENUM" && event.checked) { + const formArray = this.editFormCharacteristic.get('serviceSpecCharacteristicValue') as FormArray + for (let i = 0; i < formArray.controls.length; i++) { + if (i !== index) formArray.controls[i].get('isDefault').setValue(false) + } + } + } + + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + + if (this.newSpec) { + this.data.serviceSpec.serviceSpecCharacteristic.push(this.editFormCharacteristic.getRawValue()) + } else { + const updateCharacteristIndex = this.data.serviceSpec.serviceSpecCharacteristic.findIndex(char => char.id === this.data.specToBeUpdated.id) + this.data.serviceSpec.serviceSpecCharacteristic[updateCharacteristIndex] = this.editFormCharacteristic.getRawValue() + } + + const updateCharacteristicObj: ServiceSpecificationUpdate = { + serviceSpecCharacteristic: this.data.serviceSpec.serviceSpecCharacteristic + } + + this.specService.patchServiceSpecification({id: this.data.serviceSpec.id, serviceSpecification: updateCharacteristicObj}).subscribe( + data => {}, + error => { console.error(error); this.toast.error("An error occurred upon updating Spec Characteristics") }, + () => {this.dialogRef.close('updated')} + ) + } + + ngOnDestroy(): void { + this.compDestroy$.next() + } + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..4f6bd542f020cda2b58bfd5392bf3b533065ceac --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.html @@ -0,0 +1,586 @@ +
+
+
+

Service Specification with id #{{specID}} is not found

+
+
+
+ +
+
+
+
+
+
+
+
+

Service Specification Designer

+ +

Design a new service + specification

+ +

Edit Design of + {{spec?.name}} Service Specification +

+

{{spec['@type']}}

+ +
+ Last updated at + {{spec?.lastUpdate | date:'short'}} (Local Time) +
+
+ +
+
+
+ +
+
+ +
+ +
+ +
+
+ + +
+
+
+
+
+ + Name + + + + + Version + + + +
+ Bundle + +
+ + + Description (supports Markdown) + + + + + Lifecycle Status + + + {{status}} + + + + +
+
+ + Valid From + + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.startDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Valid Until + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.validFor.endDateTime | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+ +
+
Relationships Overview
+ Relationship graph not available +
+ +
+ + +
+
+ +
+
+
+ +
+
+
+ + + +
+
+
+
+ Service Specification must be checked as Bundle in order to assign Service Specification Relationships (See Main Properties Tab). +
+
+
+
{{spec.serviceSpecRelationship.length}} related Service Specification(s) assigned
+ +
+ +
+
+ +
+ + Apply Filter to related Service Specifications... + + + +
+ + +
+
+ + +
+
+ + + +
+
+
+
+
{{spec.resourceSpecification.length}} related Resource Specification(s) assigned
+ +
+ +
+
+ +
+ + Apply Filter to related Resource Specifications... + + + +
+ + +
+ +
+
+ + + +
+
+
+
+ There are not any related parties assigned +
+ +
+
Username (Role)
+

{{relatedParty.name}} ({{relatedParty.role}})

+
+
+ + +
+
+ + + +
+
+
+
+ + Apply Filter... + + + +
+ +
+
+
+ + {{tag}} + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name + + {{element.name}} Value + Type + {{element.valueType}} + Default Values + + {{val.value.value}} + ({{val.value.alias}}) + + +
+
+ {{val.unitOfMeasure}}
+ +
+
+ Configurable + {{element.configurable}} Actions +
+ + + +
+
+ + +
+
+ +
+
+ + + + +
+
+
+
+
+
+ There is not an assigned logo for this specification +
+ +
+
Current + Logo Preview
+ +
+ Current Logo Preview +
+
+
+ +
+ + + Supported file types: + image/* (150 x 150 px) + Supported file types: + image/* (150 x 150 px) +
+
+
New Logo + Preview
+
+ New Logo Preview + + +
+
+
+ +
+
+ + +
+
+
+ + +
+
+ + + +
+
+
+
+ There are not any attachments assigned yet +
+ + + + + + Supported file + types: .jpg, .png, .pdf, .zip, .yaml, .json, + .xml, .txt, .tar.gz + Supported file + types: .jpg, .png, .pdf, .zip, .yaml, .json, + .xml, .txt, .tar.gz + +
+
+ + +
+
+
+ +
+
+ + + + +
+
+
+
+ + Apply Filter... + + + +
+ + + +
+ +
+
+ + All + {{tag}} phase + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name + + {{element.name}} Phase + {{element.lcmrulephase}} Description + {{element.description}} Priority + {{element.priority}} Actions +
+ + +
+
+ + +
+ + + + + + + + +
+ +
+ + +
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..09f05c2b41daf985ceefff07c3c8a68ec4705f6c --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.scss @@ -0,0 +1,106 @@ +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled:not(.active) { + color: rgba(0,0,0,.30); +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.tab-pane > .card:nth-child(1) { + min-height: max(350px, 20vh); +} + +.tab-pane .card .card-body.space-between{ + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.card-paper { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +td.mat-cell:first-of-type, th.mat-header-cell:first-of-type { + padding-left: 16px; +} + +td.mat-cell:last-of-type, th.mat-header-cell:last-of-type { + padding-right: 16px; +} + +span.hidden { + display: none; +} + +.mat-column-defaultValues span:last-child span span.comma-separator { + display: none; +} + +.value-measureUnits { + color: #727272; + font-size: 11px; + line-height: 1.1; +} + +.mat-cell { + font-size: 13px; +} + +.mat-header-cell { + font-size: 13px; + font-weight: 500; +} + +.spec-relationship-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +mat-chip { + cursor: pointer; +} + +file-upload { + outline-offset: -5px; +} + +file-upload.ng-touched.ng-invalid { + outline-color: #ff0000; + background-color: #fdf4f4; +} + +.file-icon { + // border: 1px solid #c9c9c9; + border-radius: 4px; + // color: #909293; + height: 25px; + width: 25px; + display: inline-flex; + justify-content: center; + align-items: center; +} + +.logo-preview-container { + padding: .5rem; + background-color: #fff; + border-radius: 12px; + + // height: 120px; + display: flex; + align-items: center; + justify-content: center; +} + +.logo-preview-container img { + max-height: 120px; + width: auto; + max-width: 100%; + border-radius: 4px; + +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..57efdc0d84961acbe1f9ad820674079e45ebf46f --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditServiceSpecsComponent } from './edit-service-specs.component'; + +describe('EditServiceSpecsComponent', () => { + let component: EditServiceSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditServiceSpecsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditServiceSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c0fd00f83da908a5c67f972ebf8edc44045bdc1e --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/edit-service-specs.component.ts @@ -0,0 +1,649 @@ +import { LcmRuleSpecificationService } from 'src/app/openApis/lcmRuleSpecificationAPI/services'; +import { LCMRuleSpecification } from 'src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification'; +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { HttpErrorResponse } from '@angular/common/http'; +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; +import { FormGroup, FormControl, FormArray, Validators } from '@angular/forms'; +import { ServiceSpecification, ServiceSpecCharacteristic, ServiceSpecificationUpdate, ServiceSpecificationCreate, ServiceSpecRelationship, AttachmentRef, Attachment, ResourceSpecificationRef } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { MatExpansionPanel } from '@angular/material/expansion'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { EditServiceSpecCharacteristicsComponent } from './edit-service-spec-characteristics/edit-service-spec-characteristics.component'; +import { DeleteServiceSpecCharacteristicsComponent } from './delete-service-spec-characteristics/delete-service-spec-characteristics.component'; +import { ToastrService } from 'ngx-toastr'; +import { Observable, Subscription, timer } from 'rxjs'; +import { startWith, map } from 'rxjs/operators'; +import { AssignServiceRelationshipsComponent } from './assign-service-relationships/assign-service-relationships.component'; +import { FileUploadControl, FileUploadValidators } from '@iplab/ngx-file-upload'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { DeleteAttachmentComponent } from './delete-attachment/delete-attachment.component'; +import { DeleteLcmruleComponent } from './delete-lcmrule/delete-lcmrule.component'; +import { AppService } from 'src/app/shared/services/app.service'; +import { ImportLcmruleComponent } from './import-lcmrule/import-lcmrule.component'; +import { AssignResourceRelationshipsComponent } from './assign-resource-relationships/assign-resource-relationships.component'; + + +@Component({ + selector: 'app-edit-service-specs', + templateUrl: './edit-service-specs.component.html', + styleUrls: ['./edit-service-specs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class EditServiceSpecsComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private specService: ServiceSpecificationService, + private lcmRulesService: LcmRuleSpecificationService, + private dialog: MatDialog, + private toast: ToastrService, + private router: Router, + public appService: AppService + ) { } + + specID: string + spec: ServiceSpecification + specNotFound: boolean = false + finishedLoading: boolean = false + + editForm = new FormGroup({ + description: new FormControl(), + lifecycleStatus: new FormControl("In design"), + name: new FormControl(), + isBundle: new FormControl(), + validFor: new FormGroup({ + endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20))), + startDateTime: new FormControl(new Date()) + }), + version: new FormControl("0.1.0") + }) + + listItems = ["Main Properties", "Service Specification Relationships", "Resource Specification Relationships", "Related Parties", "Service Specification Characteristics", "Logo", "Attachments", "Life Cycle Rules"] + activeListItem = "Main Properties" + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + + ruleSpecsOfServiceSpec: LCMRuleSpecification[]; + displayedColumnsCharacteristics = ['name', 'type', 'defaultValues', 'configurable', 'actions'] + dataSource = new MatTableDataSource() + displayedColumnsLCMRules = ['name', 'lcmrulephase', 'description', 'priority', 'actions'] + dataSourceLCMRules = new MatTableDataSource() + + specCharacteristicsTags: string[] = ["All"] + tagFiltervalue:string = "All" + + + lcmRulesTags: string[] = ["Creation", "Pre-Provision", "After-Activation", "Supervision", "After-Deactivation"] + lcmRulesTagValue:string = "All" + +@ViewChild('specSort') set matSort(ms: MatSort) { + this.dataSource.sort = ms; + } + // @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + @ViewChild('specRelationshipsPanel') specRelationshipsPanel: MatExpansionPanel + + newSpecification = false + + relatedServiceSpecsFilterCtrl = new FormControl(); + + filteredRelatedServiceSpecs$: Observable + + relatedResourceSpecsFilterCtrl = new FormControl(); + + filteredRelatedResourceSpecs$: Observable + + attachmentFilesCtrl = new FileUploadControl(null, FileUploadValidators.accept(['.jpeg', '.jpg', '.png', '.zip', '.pdf', '.yaml', '.json', '.xml', '.txt', '.gz', 'application/gzip', 'application/x-gzip'])) + logoImageCtrl = new FileUploadControl(null, FileUploadValidators.accept(['image/*'])) + + specLogoRef: AttachmentRef + currentSpecLogoAsDataUrl: string | ArrayBuffer + currentSpecRelationshipsUrl: string | ArrayBuffer + + dataUrlConverting = false + specLogoAsDataUrl: string | ArrayBuffer + specServiceRootUrl : string + + subscriptions = new Subscription() + + ngOnInit() { + this.specServiceRootUrl = this.specService.rootUrl + + this.initSubscriptions() + this.subscribeToLogoUploadEvent() + + if (this.activatedRoute.snapshot.params.id) + { + this.specID = this.activatedRoute.snapshot.params.id + this.retrieveServiceSpec() + } else { + this.newSpecification = true + this.finishedLoading = true + } + } + + initSubscriptions() { + this.subscriptions.add(this.router.events.subscribe( + event => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.specID = this.activatedRoute.snapshot.params.id + this.retrieveServiceSpec() + } + } + )) + } + + subscribeToLogoUploadEvent() { + this.subscriptions.add(this.logoImageCtrl.valueChanges.subscribe( + files => { + this.logoImageCtrl.setValidators(FileUploadValidators.accept(['image/*'])) + if (files.length) { + let img = new Image() + img.src = window.URL.createObjectURL(files[0]) + img.onload = () => { + if (img.height === 150 && img.width === 150) { + this.convertImageToDataUrl(files[0]) + } else { + // this.toast.error('Please upload a logo of supported type and resolution') + this.logoImageCtrl.setValidators(FileUploadValidators.filesLimit(0)) + } + } + } + } + )) + } + + selectListitem(item: string) { + if (this.editForm.pristine) { + this.activeListItem = item + } else { + const dialogRef = this.dialog.open(DiscardChangesComponent, {autoFocus: true}) + + dialogRef.afterClosed().subscribe (discardChanges => { + if (discardChanges) { + this.editForm.patchValue(this.spec) + this.editForm.markAsPristine() + this.activeListItem = item + } + }) + } + } + + + retrieveServiceSpec() { + this.specService.retrieveServiceSpecification({id: this.specID}).subscribe( + data => this.spec = data, + error => console.error(error), + () => { + //populate General Panel Info + if (this.spec) { + this.finishedLoading = true + + if (!this.spec.validFor) this.spec.validFor = {endDateTime:null, startDateTime:null} + + this.editForm.patchValue(this.spec) + this.editForm.markAsPristine() + //populate Specification Relationships Panel Info + this.filteredRelatedServiceSpecs$ = this.relatedServiceSpecsFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnRelatedServiceSpecs(value) : this.spec.serviceSpecRelationship.slice() ) + ) + + //populate Resource Specification Relationships Panel Info + this.filteredRelatedResourceSpecs$ = this.relatedResourceSpecsFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnRelatedResourceSpecs(value) : this.spec.resourceSpecification.slice() ) + ) + + //populate Specification Characteristic Panel Info + // filter Spec Characteristic that does not have defined Value Type (parent spec char) + this.dataSource.data = this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) + // this.dataSource.paginator = this.paginator; + + + this.specCharacteristicsTags = ["All"] + this.tagFiltervalue = "All" + this.specCharacteristicsTags = this.retrieveSpecCharaceristicsTags(this.dataSource.data) + + // Check if spec has a defined logo already + this.specLogoRef = this.spec.attachment.find( att => att.name.includes('logo') ) + if (this.specLogoRef) { + this.currentSpecLogoAsDataUrl = this.specServiceRootUrl+this.specLogoRef.url + } + + //http://portal.openslice.io/tmf-api/serviceCatalogManagement/v4/serviceSpecification/123/relationship_graph + this.currentSpecRelationshipsUrl = this.specServiceRootUrl + "/serviceCatalogManagement/v4/serviceSpecification/" + this.specID + "/relationship_graph"; + + + this.retrieveLCMRulesSpecs(); + + if (localStorage.getItem('previous_navigation_state') === 'lcm_tab') { + this.activeListItem = 'Life Cycle Rules' + localStorage.removeItem('previous_navigation_state') + } + //populate Service Descriptor Panel Info + // this.retrieveServiceDesriptor(this.spec.id) + } + else { + this.specNotFound = true + } + } + ) + } + + retrieveSpecCharaceristicsTags(dataSource: ServiceSpecCharacteristic[]) { + let tagsArray = this.specCharacteristicsTags + dataSource.forEach(char => { + char.serviceSpecCharRelationship.filter( e => e.relationshipType === "tag").forEach(rel => { + if (!tagsArray.includes(rel.name)) tagsArray.push(rel.name) + }) + }); + return tagsArray + } + + retrieveServiceDesriptor(specId) { + this.specService.retrieveServiceSpecificationDescriptor(specId).subscribe( + data => {}, + error => console.error(error) + ) + } + + bundleCheckboxChanged(event:MatCheckboxChange) { + // if (!event.checked) this.specRelationshipsPanel.close() + } + + private _filterOnRelatedServiceSpecs(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.spec.serviceSpecRelationship.filter( relatedSpec => relatedSpec.name.toLowerCase().includes(filterValue) ) + } + + private _filterOnRelatedResourceSpecs(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.spec.resourceSpecification.filter( relatedSpec => relatedSpec.name.toLowerCase().includes(filterValue) ) + } + + + applySpecCharFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + filterCharacteristicsByTag(tagName) { + this.tagFiltervalue = tagName + if (tagName === "All") { + this.dataSource.data = this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) + } else { + this.dataSource.data = this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) + .filter(specChar => specChar.serviceSpecCharRelationship.some( rel => rel.name === tagName )) + } + } + + openAssignServiceSpecRelationshipDialog() { + const dialogRef = this.dialog.open(AssignServiceRelationshipsComponent, { + data: { + serviceSpec: this.spec + }, + autoFocus: false, + disableClose: true + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Service Specification Relationship list was successfully updated") + this.retrieveServiceSpec() + } + } + ) + } + + openAssignResourceSpecRelationshipDialog() { + const dialogRef = this.dialog.open(AssignResourceRelationshipsComponent, { + data: { + serviceSpec: this.spec + }, + autoFocus: false, + disableClose: true + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Resource Specification Relationship list was successfully updated") + this.retrieveServiceSpec() + } + } + ) + } + + openCharacteristicDesignDialog(characteristic: ServiceSpecCharacteristic) { + const dialogRef = this.dialog.open(EditServiceSpecCharacteristicsComponent, { + data: { + serviceSpec: this.spec, + specToBeUpdated: characteristic + }, + disableClose: true + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Service Specification Characteristics list was successfully updated") + this.retrieveServiceSpec() + } + } + ) + } + + openCharacteristicDeleteDialog(characteristic: ServiceSpecCharacteristic) { + const specToBeDeletedIndex = this.spec.serviceSpecCharacteristic.findIndex(char => char.id === characteristic.id) + + const newSpecCharacteristicArray: ServiceSpecCharacteristic[] = this.spec.serviceSpecCharacteristic.slice() + + newSpecCharacteristicArray.splice(specToBeDeletedIndex, 1) + + const dialogRef = this.dialog.open(DeleteServiceSpecCharacteristicsComponent, { + data: { + serviceSpec: this.spec, + serviceSpecCharacteristicArray: newSpecCharacteristicArray, + specToBeDeleted: this.spec.serviceSpecCharacteristic[specToBeDeletedIndex] + } + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Service Specification Characteristics list was successfully updated") + this.retrieveServiceSpec() + } + } + ) + } + + cloneServiceSpecCharacteristic(characteristic: ServiceSpecCharacteristic) { + + const cloneCharacteristic: ServiceSpecCharacteristic = { + name: `Copy of ${characteristic.name}`, + description: characteristic.description, + configurable: characteristic.configurable, + extensible: characteristic.extensible, + minCardinality: characteristic.minCardinality, + maxCardinality: characteristic.maxCardinality, + serviceSpecCharRelationship: characteristic.serviceSpecCharRelationship, + serviceSpecCharacteristicValue: characteristic.serviceSpecCharacteristicValue, + validFor: characteristic.validFor, + valueType: characteristic.valueType + } + + this.spec.serviceSpecCharacteristic.push(cloneCharacteristic) + + const updateCharacteristicObj: ServiceSpecificationUpdate = { + serviceSpecCharacteristic: this.spec.serviceSpecCharacteristic + } + + this.specService.patchServiceSpecification({id: this.spec.id, serviceSpecification: updateCharacteristicObj}).subscribe( + data => {}, + error => console.error(error), + () => { + this.toast.success("Service Specification Characteristics list was successfully updated") + this.retrieveServiceSpec() + } + ) + } + + updateServiceSpecGeneral() { + const updateObj: ServiceSpecificationUpdate | ServiceSpecificationCreate = { + isBundle: this.editForm.value.isBundle, + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + name: this.editForm.value.name, + validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + let updatedSpec: ServiceSpecification + + if (this.newSpecification) { + this.specService.createServiceSpecification(updateObj).subscribe( + data => { updatedSpec = data }, + error => console.error(error), + () => { + this.newSpecification = false + this.toast.success("Service Specification was successfully created") + this.router.navigate([updatedSpec.id], {relativeTo: this.activatedRoute}) + this.refreshServiceSpecification(updatedSpec) + } + ) + } + else { + this.specService.patchServiceSpecification({ id: this.specID, serviceSpecification: updateObj }).subscribe( + data => { updatedSpec = data }, + error => console.error(error), + () => { + this.toast.success("Service Specification was successfully updated") + this.refreshServiceSpecification(updatedSpec) + } + ) + } + } + + refreshServiceSpecification(updatedSpec : ServiceSpecification) { + this.specID = updatedSpec.id + this.retrieveServiceSpec() + } + + submitAttachments() { + if (this.attachmentFilesCtrl.valid) { + this.specService.addAttachmentToServiceSpecification({id: this.specID, afile: this.attachmentFilesCtrl.value[0]}).subscribe( + data => { }, + error => { + console.error(error) + this.toast.error("An error occurred while uploading attachment") + }, + () => { + this.toast.success("Attachment was successfully uploaded") + this.clearAttachmentsList() + this.retrieveServiceSpec() + } + ) + } + } + + clearAttachmentsList() { + this.attachmentFilesCtrl.clear() + } + + convertImageToDataUrl (file) { + this.specLogoAsDataUrl = '' + this.dataUrlConverting = true + + let reader = new FileReader() + reader.readAsDataURL(file) + reader.onload = (_event) => { + this.specLogoAsDataUrl = reader.result + this.dataUrlConverting = false + } + } + + submitLogo() { + if (this.logoImageCtrl.valid) { + let tempFile = this.logoImageCtrl.value[0] + const fileExtension = tempFile.name.split('.').pop() + const preDefinedLogoFilename = `logo.${fileExtension}` + + let newAttachment: Attachment + this.specService.addAttachmentToServiceSpecification({id: this.specID, afile: new File(this.logoImageCtrl.value, preDefinedLogoFilename, {type:tempFile.type})}).subscribe( + data => { newAttachment = data }, + error => { + console.error(error) + this.toast.error("An error occurred while uploading attachment") + }, + () => { + if (this.specLogoRef) { // If there is a logo defined already, delete it + const attToBeDeletedIndex = this.spec.attachment.findIndex(char => char.id === this.specLogoRef.id) + const newSpecAttArray: AttachmentRef[] = this.spec.attachment.slice() + newSpecAttArray.splice(attToBeDeletedIndex, 1) // remove previously defined logo from attachment Array + newSpecAttArray.push({id: newAttachment.id}) // add newly added logo to attachment Array + + const updateSpecObj: ServiceSpecificationUpdate = { + attachment: newSpecAttArray + } + + this.specService.patchServiceSpecification({ id: this.specID, serviceSpecification: updateSpecObj}).subscribe( + data => {}, + error => console.error(error), + () => { + this.logoUpdatedSuccessfully() + } + ) + } else { + this.logoUpdatedSuccessfully() + } + } + ) + } + } + + clearLogoList() { + this.logoImageCtrl.clear() + } + + logoUpdatedSuccessfully() { + this.toast.success("Service Specification logo was successfully uploaded") + this.clearLogoList() + this.retrieveServiceSpec() + } + + openAttachmentDeleteDialog(attachmentRef: AttachmentRef) { + const attToBeDeletedIndex = this.spec.attachment.findIndex(char => char.id === attachmentRef.id) + + const newSpecAttArray: AttachmentRef[] = this.spec.attachment.slice() + + newSpecAttArray.splice(attToBeDeletedIndex, 1) + + const dialogRef = this.dialog.open(DeleteAttachmentComponent, { + data: { + serviceSpec: this.spec, + serviceSpecAttachmentArray: newSpecAttArray, + attachmentToBeDeleted: this.spec.attachment[attToBeDeletedIndex] + } + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Service Specification Characteristics list was successfully updated") + this.retrieveServiceSpec() + } + } + ) + } + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } + + + + + applyLCMRuleFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + //this.dataSource.filter = filterValue; + } + + filterCMRuleByTag(tagName:string) { + this.lcmRulesTagValue = tagName + const sanitizedTag = tagName.replace('-','_').toUpperCase() + if (sanitizedTag === "ALL") { + this.dataSourceLCMRules.data = this.ruleSpecsOfServiceSpec + } else { + this.dataSourceLCMRules.data = this.ruleSpecsOfServiceSpec.filter(ruleSpec => ruleSpec.lcmrulephase === sanitizedTag) + } + } + + + retrieveLCMRulesSpecs() { + this.lcmRulesService.listLCMRuleSpecificationByServiceSpecId ({id: this.specID}).subscribe( + data => this.ruleSpecsOfServiceSpec = data, + error => console.error(error), + () => { + + //populate LCMRules + + this.dataSourceLCMRules.data = this.ruleSpecsOfServiceSpec; + + } + ) + } + + + + openLCMRuleDeleteDialog( lcmrule: LCMRuleSpecification) { + + const dialogRef = this.dialog.open(DeleteLcmruleComponent, {data: lcmrule}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete LCM rule") + } else { + this.toast.success("LCM Rules list is successfully updated") + this.retrieveLCMRulesSpecs() + } + } + } + ) + } + + openImportLCMruleDialog() { + const dialogRef = this.dialog.open(ImportLcmruleComponent, {data: this.spec}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to import LCM rule") + } else { + this.toast.success("LCM Rules list is successfully updated") + this.retrieveLCMRulesSpecs() + } + } + } + ) + + } + +} + +@Component({ + selector: 'app-discard-changes', + templateUrl: 'discard-changes.component.html', +}) + +export class DiscardChangesComponent { + + constructor( + public dialogRef: MatDialogRef, + ) {} + + onNoClick(): void { + this.dialogRef.close(false); + } + + onYesClick(): void { + this.dialogRef.close(true) + } +} diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.html b/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.html new file mode 100644 index 0000000000000000000000000000000000000000..3a02e3c466472b1efb4eb627e129833edba59f31 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.html @@ -0,0 +1,67 @@ +

+ + Import LCM rule +

+
+ +
+ Service Specification specific LCM rules +
+ + + The following list displays LCM rules already specified for {{serviceSpec.name}} + + + + The following list displays the overall LCM rules specified for all service specifications +
+ Note: After import, you may need to edit the rule to meet this specific specification's properties +
+
+ + + LCM rule to import + + + + {{rule.name}} + + + + + + +
+ +
+ + +
diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.scss b/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..33c22e52161bf95abe7cb4f5ddd71c799b2125b4 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.scss @@ -0,0 +1,3 @@ +.opacity75 { + opacity: 0.75; +} \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.spec.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..c1a722f54b2215825e4da479c5ee07d18440d4b6 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ImportLcmruleComponent } from './import-lcmrule.component'; + +describe('ImportLcmruleComponent', () => { + let component: ImportLcmruleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ImportLcmruleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ImportLcmruleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.ts b/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..32e185b792d378ebc24f73aba9856ee769681ae4 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/edit-service-specs/import-lcmrule/import-lcmrule.component.ts @@ -0,0 +1,95 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { FormControl } from '@angular/forms'; +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { LCMRuleSpecification, LCMRuleSpecificationCreate } from 'src/app/openApis/lcmRuleSpecificationAPI/models'; +import { LcmRuleSpecificationService } from 'src/app/openApis/lcmRuleSpecificationAPI/services'; +import { ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; + +@Component({ + selector: 'app-import-lcmrule', + templateUrl: './import-lcmrule.component.html', + styleUrls: ['./import-lcmrule.component.scss'] +}) +export class ImportLcmruleComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public serviceSpec: ServiceSpecification, + private dialogRef: MatDialogRef, + private lcmRulesService: LcmRuleSpecificationService + ) { } + + allRules: LCMRuleSpecification[] = [] + allRulesForServiceSpec: LCMRuleSpecification[] = [] + displayedRules: LCMRuleSpecification[] = [] + checked: boolean = true + + ruleToImport = new FormControl() + + + ngOnInit() { + this.retrieveAllRules() + this.retrieveAllRulesForServiceSpec() + } + + retrieveAllRules() { + this.lcmRulesService.listLCMRuleSpecification({}).subscribe( + data => this.allRules = data, + error => {this.dialogRef.close(error), console.error(error)}, + () => {} + ) + } + + retrieveAllRulesForServiceSpec() { + this.lcmRulesService.listLCMRuleSpecificationByServiceSpecId({id: this.serviceSpec.id}).subscribe( + data => this.allRulesForServiceSpec = this.displayedRules = data, + error => {this.dialogRef.close(error), console.error(error)}, + () => { } + ) + } + + checkboxChanged (event: MatCheckboxChange) { + if (event.checked) { + this.displayedRules = this.allRulesForServiceSpec + } else { + this.displayedRules = this.allRules + } + this.ruleToImport.reset() + } + + onSubmit() { + if (this.ruleToImport.value) { + let ruleSpec: LCMRuleSpecification + this.lcmRulesService.retrieveLCMRuleSpecification({id: this.ruleToImport.value.id}).subscribe( + data => ruleSpec = data, + error => {this.dialogRef.close(error), console.error(error)}, + () => { + const importedRulePayload:LCMRuleSpecificationCreate = { + code: ruleSpec.code, + lcmrulephase: ruleSpec.lcmrulephase, + priority: ruleSpec.priority, + version: ruleSpec.version, + content: ruleSpec.content, + description: ruleSpec.description, + name: `Import of ${ruleSpec.name}`, + serviceSpecs: [{ + id: this.serviceSpec.id, + name: this.serviceSpec.name + }] + } + + this.lcmRulesService.createLCMRuleSpecification(importedRulePayload).subscribe( + data => {}, + error => {this.dialogRef.close(error), console.error(error)}, + () => {this.dialogRef.close('imported')} + ) + } + ) + } + } + + onCancel() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.html b/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..76e76b4de1ba78585eaaee873eb3cd1fcdf51f93 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.html @@ -0,0 +1,74 @@ +
+
+
+
+
+
+

Service Catalogs

+

View and manage service catalogs

+
+
+ +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description | slice:0:49}}... + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} Version {{element.version}} Lifecycle Status {{element.lifecycleStatus}} Actions + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.scss b/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6c61423bebb55df0dc47f1e1c3759d93885a0cf3 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.spec.ts b/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..972b696d6f8c958d505f1608e7408eec702d7509 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListServiceCatalogsComponent } from './list-service-catalogs.component'; + +describe('ListServiceCatalogsComponent', () => { + let component: ListServiceCatalogsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListServiceCatalogsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListServiceCatalogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.ts b/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..d15fe7d5a8da29d371b9d380630aedb7a734d7dc --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-catalogs/list-service-catalogs.component.ts @@ -0,0 +1,94 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +import { ServiceCatalogService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ServiceCatalog } from 'src/app/openApis/serviceCatalogManagement/models'; +import { EditServiceCatalogsComponent } from '../edit-service-catalogs/edit-service-catalogs.component'; +import { DeleteServiceCatalogComponent } from '../delete-service-catalog/delete-service-catalog.component'; +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'app-list-service-catalogs', + templateUrl: './list-service-catalogs.component.html', + styleUrls: ['./list-service-catalogs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListServiceCatalogsComponent implements OnInit { + + constructor( + private catalogService: ServiceCatalogService, + public dialog: MatDialog, + private toast: ToastrService + ) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'actions'] + dataSource = new MatTableDataSource() + + serviceCatalogs: ServiceCatalog[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveCatalogsList() + } + + retrieveCatalogsList() { + this.catalogService.listServiceCatalog({}).subscribe( + data => { this.serviceCatalogs = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.serviceCatalogs + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + openCatalogUpdateDialog(element: ServiceCatalog) { + const dialogRef = this.dialog.open(EditServiceCatalogsComponent, {data: element, disableClose: true}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Service Catalogs list is successfully updated") + this.retrieveCatalogsList() + } + } + ) + } + + openCatalogDeleteDialog(element: ServiceCatalog) { + const dialogRef = this.dialog.open(DeleteServiceCatalogComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Service Catalogs list is successfully updated") + this.retrieveCatalogsList() + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.html b/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.html new file mode 100644 index 0000000000000000000000000000000000000000..6d1a3d5a6ffc00c23f7822033555cab9b6e65005 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.html @@ -0,0 +1,99 @@ +
+
+
+
+
+
+

Service Categories

+

View and manage service categories

+
+
+ +
+
+
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description | slice:0:49}}... + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} + Lifecycle Status {{element.lifecycleStatus}} isRoot + check + close + Parent Category {{element.parentName}} Version {{element.version}} Actions + + + + +
+ + + + + +
+ +
+ *Root Categories' names are displayed in underlined text* +
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.scss b/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..591b58967052c6ffebdb20fb217e45faf2ae03d3 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.scss @@ -0,0 +1,30 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} + +.isRoot-class td:first-of-type{ + // color:#3f51b5 + text-decoration: underline; +} + +mat-hint { + background: #fff; +} + +.isRootDecoration { + text-decoration: underline; +} + +.checked { + color: green +} + +.crossed { + color: red +} + +.table td:first-child { + border-top: 0 !important; +} \ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.spec.ts b/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9a11062bce87498de3ca7827feb8497742163a12 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListServiceCategoriesComponent } from './list-service-categories.component'; + +describe('ListServiceCategoriesComponent', () => { + let component: ListServiceCategoriesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListServiceCategoriesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListServiceCategoriesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.ts b/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..cffde8e3f8e158a77a2ee671029bd4de047a7d24 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-categories/list-service-categories.component.ts @@ -0,0 +1,89 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +import { ServiceCategory } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceCategoryService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { DeleteServiceCategoryComponent } from '../delete-service-category/delete-service-category.component'; +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-list-service-categories', + templateUrl: './list-service-categories.component.html', + styleUrls: ['./list-service-categories.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListServiceCategoriesComponent implements OnInit { + + constructor( + private categoryService: ServiceCategoryService, + public dialog: MatDialog, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'isRoot', 'parent', 'actions'] + dataSource = new MatTableDataSource() + + serviceCategories: ServiceCategory[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveCategoriesList() + } + + retrieveCategoriesList() { + this.categoryService.listServiceCategory({}).subscribe( + data => { this.serviceCategories = data }, + error => { console.error(error) }, + () => { + this.serviceCategories.forEach( cat => { + if (cat.parentId) cat['parentName'] = this.serviceCategories.find( el => el.id === cat.parentId).name + }) + + this.dataSource.data = this.serviceCategories + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + } + ) + } + + + openCategoryDeleteDialog(element: ServiceCategory) { + const dialogRef = this.dialog.open(DeleteServiceCategoryComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + console.log(result) + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Service Category. Please check dependencies.") + } else if (result) { + this.toast.success("Service Categories list is successfully updated") + this.retrieveCategoriesList() + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.html b/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..bbe3d0403a074cf586dcafdbba97dcd4709ff45d --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.html @@ -0,0 +1,94 @@ +
+
+
+
+
+
+

Service Specifications

+

View and manage service specifications

+
+
+ + +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description}} + {{element.description | slice:0:49}}... + Version {{element.version}} Type + RFSS + CFSS + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} + Lifecycle Status {{element.lifecycleStatus}} Actions + + + + + +
+ + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.scss b/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..92c0ae0d08c35f24ac5e8bcc9bebeab71a9929ea --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.spec.ts b/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..1ec491b8e50c0501829b6811085bfd95834b7ea3 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListServiceSpecsComponent } from './list-service-specs.component'; + +describe('ListServiceSpecsComponent', () => { + let component: ListServiceSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListServiceSpecsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListServiceSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.ts b/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..16f3e2e4b9decdcfaa8e0301429368b1bdf34a46 --- /dev/null +++ b/src/app/p_services/admin/catalogManagement/list-service-specs/list-service-specs.component.ts @@ -0,0 +1,125 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ServiceSpecification, ServiceSpecificationCreate } from 'src/app/openApis/serviceCatalogManagement/models'; +import { DeleteServiceSpecComponent } from '../delete-service-spec/delete-service-spec.component'; +import { ToastrService } from 'ngx-toastr'; +import { HttpErrorResponse } from '@angular/common/http'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; + + +@Component({ + selector: 'app-list-service-specs', + templateUrl: './list-service-specs.component.html', + styleUrls: ['./list-service-specs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListServiceSpecsComponent implements OnInit { + + constructor( + private specService: ServiceSpecificationService, + public dialog: MatDialog, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'version', '@type', 'lastUpdate', 'lifecycleStatus', 'actions'] + dataSource = new MatTableDataSource() + + serviceSpecs: ServiceSpecification[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveSpecsList() + } + + retrieveSpecsList() { + this.specService.listServiceSpecification({}).subscribe( + data => { this.serviceSpecs = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.serviceSpecs + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator; + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + case '@type': return item[property] === 'CustomerFacingServiceSpecification' ? 'CFSS': 'RFSS'; + default: return item[property]; + } + } + } + ) + } + + openSpecDeleteDialog(element: ServiceSpecification) { + const dialogRef = this.dialog.open(DeleteServiceSpecComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Service Specification") + } else { + this.toast.success("Service Specification list is successfully updated") + this.retrieveSpecsList() + } + } + } + ) + } + + cloneServiceSpec(spec: ServiceSpecification) { + + // const cloneObj: ServiceSpecificationCreate = { + // name: `Copy of ${spec.name}`, + // description: spec.description, + // isBundle: spec.isBundle, + // lifecycleStatus: spec.lifecycleStatus, + // // relatedParty: spec.relatedParty, + // resourceSpecification: spec.resourceSpecification, + // serviceLevelSpecification: spec.serviceLevelSpecification, + // serviceSpecCharacteristic: spec.serviceSpecCharacteristic, + // serviceSpecRelationship: spec.serviceSpecRelationship, + // targetServiceSchema: spec.targetServiceSchema, + // validFor: spec.validFor, + // version: spec.version + // } + // console.log(cloneObj) + + // this.specService.createServiceSpecification(cloneObj).subscribe( + // data => console.log(data), + // error => console.error(error), + // () => this.retrieveSpecsList() + // ) + + this.specService.cloneServiceSpecification(spec.id).subscribe( + data => {}, + error => { + console.error(error) + this.toast.error("An error occured while attempting to clone Service Specification") + }, + () => { + this.retrieveSpecsList() + this.toast.success("Service Specification is successfully cloned") + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.html b/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.html new file mode 100644 index 0000000000000000000000000000000000000000..2581d426ea736e1da985b6f5c2fd2859d8769240 --- /dev/null +++ b/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.html @@ -0,0 +1,85 @@ +
+
+
+
+
+
+

Service Inventory

+

View and manage Service Inventory

+
+ +
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Category + {{element.category}} + State + {{element.state}} Created (Local Time) {{element.serviceDate | date:'d MMM y, h:mm a'}} + Linked Service Order(s) + + Actions + + + + +
+ + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.scss b/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..92c0ae0d08c35f24ac5e8bcc9bebeab71a9929ea --- /dev/null +++ b/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} diff --git a/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.spec.ts b/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9ef2412c1cc02cdd66217512d366da46c162a2f6 --- /dev/null +++ b/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListServiceInventoryComponent } from './list-service-inventory.component'; + +describe('ListServiceInventoryComponent', () => { + let component: ListServiceInventoryComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListServiceInventoryComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListServiceInventoryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.ts b/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..0e8d3728be04fbced77a8bd07447cc75a45ed0b9 --- /dev/null +++ b/src/app/p_services/admin/inventoryManagement/list-service-inventory/list-service-inventory.component.ts @@ -0,0 +1,84 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ServiceService } from 'src/app/openApis/serviceInventoryManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Service } from 'src/app/openApis/serviceInventoryManagement/models'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; + +@Component({ + selector: 'app-list-service-inventory', + templateUrl: './list-service-inventory.component.html', + styleUrls: ['./list-service-inventory.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class ListServiceInventoryComponent implements OnInit { + + constructor( + private serviceService: ServiceService, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'category', 'state', 'serviceDate', 'serviceOrder', 'actions'] + dataSource = new MatTableDataSource() + + services: Service[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveServiceList() + } + + retrieveServiceList() { + this.serviceService.listService({}).subscribe( + data => { this.services = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.services + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'serviceDate': return new Date(item.serviceDate).getTime(); + // case 'category': return item[property] === 'CustomerFacingServiceSpecification' ? 'CFSS': 'RFSS'; + default: return item[property]; + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + serviceStateClassSelector(state:'feasibilityChecked'| 'designed'| 'reserved'| 'inactive'| 'active'| 'terminated') { + let cssClass: string = '' + switch (state) { + case 'feasibilityChecked': + cssClass += ' text-primary' + break; + case 'inactive': + case 'terminated': + cssClass += ' text-danger' + break; + case 'active': + cssClass += ' text-success' + break; + default: + cssClass += ' text-warning' + } + return cssClass + } + +} diff --git a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.html b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.html new file mode 100644 index 0000000000000000000000000000000000000000..3e47d755a79b31367401bcb16d7db08c0246e0fa --- /dev/null +++ b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.html @@ -0,0 +1,361 @@ +
+ +
+ +
+
{{ title }}
+
+ + +
+
+ + + + +
+
+ +
+ + +
+ +
+ + Name + + + + + Description + + + + + + Lifecycle phase + + + {{phase}} + + + + + + + Priority + + + + + Version + + +
+
+ + +
+ + + + + + + + + +
+ + + +
+ +
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.scss b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..9257fa7da2b2383449e223d2cdde73b400108677 --- /dev/null +++ b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.scss @@ -0,0 +1,62 @@ +mat-toolbar { + position: sticky; + position: -webkit-sticky; /* For macOS/iOS Safari */ + top: 0; /* Sets the sticky toolbar to be on top */ + z-index: 2; + height: 50px; + background-color: #eee; + } + + + .container-blockly-main { + display: block; + //min-height: 800px; + //height: calc(100% - 10px); + //height: 850px; + padding-top: 0px; + background-color: #eee; + overflow: auto; + } + + .container-blockly { + display: block; + //min-height: 800px; + //height: 100%; + height: 1280px; + // padding-top: 4px; + background-color: #eee; + } + + + .wrapper-blockly { + display: grid; + grid-template-columns: 4fr 1fr ; + height: 100%; + } + + #generatedCode { + background-color: #e6e6e6; + border: 1px; + border-color: #ddd; + border-style: solid; + // border-left: 0px; + } + + #blocklyDiv { + padding-left: 4px; + background-color: #ddd; + } + + .generated-code { + width: 100%; + height: 906px; + word-wrap: break-word; + font-family: consolas; + font-size: 12px; + white-space: break-spaces; + background-color: #d6d6d6; + border-width: 1px; + border-style: solid; + border-color: #d6d6d6; + padding: 5px; + } diff --git a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.spec.ts b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..70463f16c3c9caf9f212cc74ce1dc79b457dd2e8 --- /dev/null +++ b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ServiceRuleDesignComponent } from './service-rule-design.component'; + +describe('ServiceRuleDesignComponent', () => { + let component: ServiceRuleDesignComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ServiceRuleDesignComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ServiceRuleDesignComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..a87aeee38c1253c008869b7febc1270f678a450f --- /dev/null +++ b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts @@ -0,0 +1,1768 @@ +import { ResourceSpecificationRef } from 'src/app/openApis/serviceCatalogManagement/models/resource-specification-ref'; +import { LCMRuleSpecificationUpdate } from 'src/app/openApis/lcmRuleSpecificationAPI/models/lcmrule-specification-update'; +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormControl, FormArray, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ServiceSpecCharacteristic, ServiceSpecification, ServiceSpecRelationship } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { BlocklyJavaService } from '../services/blockly-java.service'; +import { LCMRuleSpecification, LCMRuleSpecificationCreate, ServiceSpecificationRef } from 'src/app/openApis/lcmRuleSpecificationAPI/models'; +import { LcmRuleSpecificationService } from 'src/app/openApis/lcmRuleSpecificationAPI/services'; +import { ToastrService } from 'ngx-toastr'; +import { ServiceOrderCreate } from 'src/app/openApis/serviceOrderingManagement/models/service-order-create'; +import { ServiceOrderItem } from 'src/app/openApis/serviceOrderingManagement/models/service-order-item'; + + +//Imported code from: +//https://github.com/guizos/blockly_java_edx + + +//for java components see also src/assets/blockly/custom_java_block.js +//for openslice components see also src/assets/blockly/custom_block.js +//create blocks visually: https://blockly-demo.appspot.com/static/demos/blockfactory/index.html + +declare var Blockly: any; + +@Component({ + selector: 'app-service-rule-design', + templateUrl: './service-rule-design.component.html', + styleUrls: ['./service-rule-design.component.scss'] +}) +export class ServiceRuleDesignComponent implements OnInit { + + title: string; + programName: string = ''; + workspace: any; + textVariable = 'temp'; + listVariable = 'temp'; + blocklyJavaService: BlocklyJavaService; + + + lcmRuleSpecID: string; + lcmRuleSpec: LCMRuleSpecification; + specID: string; + spec: ServiceSpecification; + + editForm = new FormGroup({ + description: new FormControl(), + lcmrulephase: new FormControl("PRE_PROVISION"), + name: new FormControl(), + priority: new FormControl("0"), + version: new FormControl("0.1.0") + }) + + + lcmphases = ["PRE_PROVISION", "AFTER_ACTIVATION", "SUPERVISION", "AFTER_DEACTIVATION", "CREATION"]; + + + newLCMRuleSpecification = false; + + charsListAllSpecs: ServiceSpecCharacteristic[]; + charsListInteger: ServiceSpecCharacteristic[]; + charsListSmallint: ServiceSpecCharacteristic[]; + charsListLongint: ServiceSpecCharacteristic[]; + charsListEnum: ServiceSpecCharacteristic[]; + charsListFloat: ServiceSpecCharacteristic[]; + charsListBinary: ServiceSpecCharacteristic[]; + charsListBoolean: ServiceSpecCharacteristic[]; + charsListArray: ServiceSpecCharacteristic[]; + charsListSet: ServiceSpecCharacteristic[]; + charsListText: ServiceSpecCharacteristic[]; + charsListLongText: ServiceSpecCharacteristic[]; + charsListTimestamp: ServiceSpecCharacteristic[]; + serviceSpecRel: ServiceSpecRelationship[]; + resourceserviceSpecRef: ResourceSpecificationRef[]; + + generatedCode: string; + blocklyCode: string; + + constructor( + private activatedRoute: ActivatedRoute, + private router: Router, + bs: BlocklyJavaService, + private toast: ToastrService, + private lcmRulesService: LcmRuleSpecificationService, + private specService: ServiceSpecificationService) { + + this.blocklyJavaService = bs; + this.title = 'Create LCM Rule'; + this.activatedRoute.params.subscribe(params => { + this.programName = params['programName']; + + + console.log( + 'creating/editing the program - ' + ); + + console.log( this.activatedRoute.snapshot.queryParams['specid'] ); + }); + + + + } + + + ngOnInit() { + + localStorage.setItem('previous_navigation_state', 'lcm_tab' ) + + this.workspace = Blockly.inject('blocklyDiv', { + toolbox: document.getElementById('toolbox'), + theme: Blockly.Themes.Halloween, + trashcan: true, + scrollbars: true + }); + + + if (this.activatedRoute.snapshot.queryParams['specid']){ + this.specID = this.activatedRoute.snapshot.queryParams['specid']; + this.blocklyJavaService.createJava(this.workspace, Blockly); + this.createOpensliceJava(this.workspace, Blockly); + this.retrieveServiceSpec(); + } else { + this.initializeLCMRuleSpec(); + } + + + + + + + + + // if (this.program.xmlData) { + // this.workspace.clear(); + // Blockly.Xml.domToWorkspace( + // Blockly.Xml.textToDom(this.program.xmlData), + // this.workspace + // ); + // } + + this.workspace.addChangeListener(() => { + // var code = Blockly.JavaScript.workspaceToCode(this.workspace); + // console.log(code); + + // var code2 = Blockly.Xml.domToText( + // Blockly.Xml.workspaceToDom(this.workspace) + // ); + // console.log(code2); + + var code3 = Blockly.Java.workspaceToCode(this.workspace); + console.log(code3) + this.generatedCode = code3; + this.lcmRuleSpec.code = code3; + + this.blocklyCode = Blockly.Xml.domToText( Blockly.Xml.workspaceToDom(this.workspace) ); + + }); + + + } + + initializeLCMRuleSpec() { + if (this.activatedRoute.snapshot.params.id) + { + this.lcmRuleSpecID = this.activatedRoute.snapshot.params.id + this.retrieveLCMRuleSpec(); + + } + else { + this.newLCMRuleSpecification = true; + var serviceSpecsList: ServiceSpecificationRef[]; + this.lcmRuleSpec = { + name: 'new rulespec', + description: 'new description', + serviceSpecs: serviceSpecsList + }; + + this.editForm.patchValue(this.lcmRuleSpec) + this.editForm.markAsPristine() + + + var serviceSpecRef: ServiceSpecificationRef ; + var serviceSpecsList: ServiceSpecificationRef[] = []; + serviceSpecRef = { id: this.spec.id, name: this.spec.name } ; + serviceSpecsList.push(serviceSpecRef); + this.lcmRuleSpec.serviceSpecs = serviceSpecsList; + this.lcmRuleSpec.name = "LCM Rule " + this.spec.name; + this.lcmRuleSpec.description = "LCM Rule for specification " + this.spec.name; + + this.editForm.patchValue(this.lcmRuleSpec) + this.editForm.markAsPristine() + + } + } + + + myFirstButtonPressed(ws: any){ + Blockly.Variables.createVariableButtonHandler( ws, null, 'String'); + //Blockly.Variables.createVariable( ws, null, 'panda'); + } + + + retrieveServiceSpec() { + this.specService.retrieveServiceSpecification({id: this.specID}).subscribe( + data => this.spec = data, + error => console.error(error), + () => { + + + + // valueTypes = ['INTEGER', '', '', 'FLOAT', 'BINARY', 'BOOLEAN', 'ARRAY', 'SET', 'TEXT', 'LONGTEXT', 'ENUM', 'TIMESTAMP'] + //populate Specification Characteristic Panel Info + // filter Spec Characteristic that does not have defined Value Type (parent spec char) + this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) + + this.workspace.charsListAllSpecs = this.spec.serviceSpecCharacteristic; + // this.dataSource.paginator = this.paginator; + this.charsListInteger= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'INTEGER'); + this.charsListSmallint= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'SMALLINT'); + this.charsListLongint= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'LONGINT'); + this.charsListEnum= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'ENUM'); + this.charsListFloat= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'FLOAT'); + this.charsListBinary= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'BINARY'); + this.charsListBoolean= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'BOOLEAN'); + this.charsListArray= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'ARRAY'); + this.charsListSet= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'SET'); + this.charsListText= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'TEXT'); + this.charsListLongText= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'LONGTEXT'); + this.charsListTimestamp= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'TIMESTAMP'); + + this.serviceSpecRel= this.spec.serviceSpecRelationship; + this.workspace.serviceSpecRel = this.serviceSpecRel; + + + + this.resourceserviceSpecRef= this.spec.resourceSpecification; + this.workspace.resourceserviceSpecRef = this.resourceserviceSpecRef; + + this.workspace.charsListText = this.charsListText; + this.workspace.charsListText = this.workspace.charsListText.concat( this.charsListLongText ); + + this.workspace.charsListNumber = this.charsListSmallint; + this.workspace.charsListNumber = this.workspace.charsListNumber.concat( this.charsListEnum ); + this.workspace.charsListNumber = this.workspace.charsListNumber.concat( this.charsListInteger ); + this.workspace.charsListNumber = this.workspace.charsListNumber.concat( this.charsListLongint ); + this.workspace.charsListNumber = this.workspace.charsListNumber.concat( this.charsListFloat ); + this.workspace.charsListNumber = this.workspace.charsListNumber.concat( this.charsListBinary ); + + this.workspace.charsListSet = this.charsListSet; + this.workspace.charsListSet = this.workspace.charsListSet.concat( this.charsListArray ); + + this.workspace.charsListBoolean = this.charsListBoolean; + this.workspace.specService = this.specService; + + + this.charvarsAllFunction(this.workspace); //calling this function here causes a preloading of the blocks in the model in a synchronous manner. Asynchronously it is recalled later in the blockly toolbar + this.workspace.registerToolboxCategoryCallback( 'SPECCHARALLVARS', this.charvarsAllFunction); + this.workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_TEXT', this.charvarsTextFunction ); + this.workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_NUM', this.charvarsNumberFunction ); + this.workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_BOOL', this.charvarsBoolFunction); + this.workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_SET', this.charvarsSetFunction); + this.workspace.registerToolboxCategoryCallback( 'SPECSERVICE_RELS', this.serviceSpecRelsFunction); + this.workspace.registerToolboxCategoryCallback( 'SPECRESOURCE_RELS', this.resourceSpecRelsFunction); + + + this.title = 'Create LCM Rule for ' + this.spec.name; + + //the spec is loaded, so proceed to load the LCM Rule spec + this.initializeLCMRuleSpec(); + + + + } + ) + } + + + + retrieveLCMRuleSpec() { + this.lcmRulesService.retrieveLCMRuleSpecification ({id: this.lcmRuleSpecID}).subscribe( + data => this.lcmRuleSpec = data, + error => console.error(error), + () => { + //populate General Panel Info + + if (this.lcmRuleSpec.content ) { + this.workspace.clear(); + Blockly.Xml.domToWorkspace( + Blockly.Xml.textToDom(this.lcmRuleSpec.content), + this.workspace + ); + } + + this.editForm.patchValue(this.lcmRuleSpec) + this.editForm.markAsPristine() + + + //populate Service Descriptor Panel Info + // this.retrieveServiceDesriptor(this.spec.id) + } + ) + } + + + /** + * Construct the blocks required by the flyout for the colours category. + * @param {!Blockly.Workspace} workspace The workspace this flyout is for. + * @return {!Array.} Array of XML block elements. + */ + charvarsAllFunction = function(workspace: any) { + var xmlList = []; + var chars: ServiceSpecCharacteristic[] = workspace.charsListAllSpecs ; + + var options = []; + + for (var i = 0; i < chars.length; i++) { + options.push([ chars[i].name, chars[i].name ]); + } + + var sortedArray: string[] = options.sort((n1,n2) => { + if (n1 > n2) { + return 1; + } + + if (n1 < n2) { + return -1; + } + + return 0; + }); + + // dynamically create here a block! Ensure that the equivalent java also exis + Blockly.Blocks['getcharacteristicvalueAsString'] = { + init: function() { + this.appendDummyInput() + .appendField("Get Value as String", "TXTLBL") + .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL") + .appendField(new Blockly.FieldDropdown( sortedArray ), "OPTIONEDVALUE"); + + this.setOutput(true, 'String'); + this.setColour(160); + this.setTooltip(""); + this.setHelpUrl(""); + } + }; + + + if (Blockly.Blocks['getcharacteristicvalueAsString']) { + + var blockText = '' + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + + blockText = ''; + block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + return xmlList; + }; + /** + * Construct the blocks required by the flyout for the colours category. + * @param {!Blockly.Workspace} workspace The workspace this flyout is for. + * @return {!Array.} Array of XML block elements. + */ + charvarsTextFunction = function(workspace: any) { + var xmlList = []; + var chars: ServiceSpecCharacteristic[] = workspace.charsListText; + + if (Blockly.Blocks['getcharval_string_type']) { + for (var i = 0; i < chars.length; i++) { + var blockText = '' + + '' + chars[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + blockText = ''; + block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + if (Blockly.Blocks['setcharval_string_type']) { + for (var i = 0; i < chars.length; i++) { + var blockText = '' + + '' + chars[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + + return xmlList; + }; + + + + charvarsNumberFunction = function(workspace: any) { + // Returns an array of hex colours, e.g. ['#4286f4', '#ef0447'] + + var charsList: ServiceSpecCharacteristic[] = workspace.charsListNumber; + + var xmlList = []; + + + if (Blockly.Blocks['getcharval_number']) { + for (var i = 0; i < charsList.length; i++) { + var blockText = '' + + '' + charsList[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + blockText = ''; + block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + + if (Blockly.Blocks['setcharval_number']) { + for (var i = 0; i < charsList.length; i++) { + var blockText = '' + + '' + charsList[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + return xmlList; + }; + + + charvarsBoolFunction = function(workspace: any) { + // Returns an array of hex colours, e.g. ['#4286f4', '#ef0447'] + var charsList: ServiceSpecCharacteristic[] = workspace.charsListBoolean; + var xmlList = []; + + + if (Blockly.Blocks['getcharval_bool_type']) { + for (var i = 0; i < charsList.length; i++) { + var blockText = '' + + '' + charsList[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + if (Blockly.Blocks['setcharval_bool_type']) { + for (var i = 0; i < charsList.length; i++) { + var blockText = '' + + '' + charsList[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + return xmlList; + }; + + + charvarsSetFunction = function(workspace: any) { + // Returns an array of hex colours, e.g. ['#4286f4', '#ef0447'] + + var charsList: ServiceSpecCharacteristic[] = workspace.charsListSet; + var xmlList = []; + + + if (Blockly.Blocks['getcharval_set_type']) { + for (var i = 0; i < charsList.length; i++) { + var blockText = '' + + '' + charsList[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + if (Blockly.Blocks['setcharval_set_type']) { + for (var i = 0; i < charsList.length; i++) { + var blockText = '' + + '' + charsList[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + + if (Blockly.Blocks['setcharval_sadd']) { + for (var i = 0; i < charsList.length; i++) { + var blockText = '' + + '' + charsList[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + if (Blockly.Blocks['setcharval_sremove']) { + for (var i = 0; i < charsList.length; i++) { + var blockText = '' + + '' + charsList[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + + + return xmlList; + }; + + + /** + * Construct the blocks required by the flyout for the colours category. + * @param {!Blockly.Workspace} workspace The workspace this flyout is for. + * @return {!Array.} Array of XML block elements. + */ + serviceSpecRelsFunction = function(workspace: any) { + var xmlList = []; + var chars: ServiceSpecRelationship[] = workspace.serviceSpecRel; + + + + if (Blockly.Blocks['getServiceRefName']) { + for (var i = 0; i < chars.length; i++) { + var blockText = '' + + '' + chars[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + + } + } + + if (Blockly.Blocks['getServiceRefProps']) { + for (var i = 0; i < chars.length; i++) { + + var blockText = '' + + '' + chars[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + } + } + + blockText = ''; + block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + + + + + // if (Blockly.Blocks['setServiceRefProps']) { + // for (var i = 0; i < chars.length; i++) { + + // var options = []; + // var serviceRefSpec; + // var servRef = chars[i]; + + // workspace.specService.retrieveServiceSpecification({id: servRef.id, servRef , xmlList }).subscribe( + // data => serviceRefSpec = data, + // error => console.error(error), + // () => { + + // var xmlx = xmlList; + // var serviceRefChars: ServiceSpecCharacteristic[] = serviceRefSpec.serviceSpecCharacteristic; + // for (var j = 0; j < serviceRefChars.length; j++) { + // options.push([ serviceRefChars[j].name, serviceRefChars[j].name ]); + // } + // console.log(servRef); + + // var sortedArray: string[] = options.sort((n1,n2) => { + // if (n1 > n2) { + // return 1; + // } + + // if (n1 < n2) { + // return -1; + // } + + // return 0; + // }); + + // Blockly.Blocks['setServiceRefProps'] = { + // init: function() { + // this.appendDummyInput() + // .appendField("Service") + // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFNAME"); + // this.appendDummyInput() + // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFUUID") + // .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL") + // .appendField(new Blockly.FieldDropdown( sortedArray ), "OPTIONEDVALUE"); + + + // this.appendValueInput("AVALUE") + // .setCheck("String") + // .setAlign(Blockly.ALIGN_RIGHT) + // .appendField("value"); + + + // this.setInputsInline( true ); + // this.setPreviousStatement(true, null); + // this.setNextStatement(true, null); + // this.setColour(160); + // this.setTooltip("Set values to characteristics of a refernced service."); + // this.setHelpUrl(""); + + // }, + + // }; + // } + // ) + + // var blockText = '' + + // ''+ servRef.name +'' + + // ''+ servRef.uuid +'' + + // ''; + // var block = Blockly.Xml.textToDom(blockText); + // xmlList.push(block); + + + // } + // } + + + + + if (Blockly.Blocks['setServiceRefCharacteristicValues']) { + for (var i = 0; i < chars.length; i++) { + + var blockText = '' + + '' + chars[i].name + '' + + '' + chars[i].uuid + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + } + } + + + if (Blockly.Blocks['serviceRefCharacteristic']) { + var blockText = '' + + '' + + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + + + + return xmlList; + }; + + + + /** + * Construct the blocks required by the flyout for the colours category. + * @param {!Blockly.Workspace} workspace The workspace this flyout is for. + * @return {!Array.} Array of XML block elements. + */ + resourceSpecRelsFunction = function(workspace: any) { + var xmlList = []; + var chars: ResourceSpecificationRef[] = workspace.resourceserviceSpecRef; + + if (Blockly.Blocks['getResourceRefName']) { + for (var i = 0; i < chars.length; i++) { + var blockText = '' + + '' + chars[i].name + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + } + + blockText = ''; + block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + return xmlList; + }; + + + createOpensliceJava(workspace: any, Blockly: any) { + + + workspace.registerButtonCallback( 'CREATE_STRING_VARIABLE' , this.myFirstButtonPressed ); + // workspace.createVariable('Area of Service: Region specification', 'set'); + // workspace.createVariable('Region panda1', 'Panda', null); + // workspace.createVariable('Region Panda2', 'Panda', null); + // workspace.createVariable('Bandwidth', 'int'); + //workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_TEXT', this.charvarsText(workspace) ); + // workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_NUM', this.charvarsNum); + // workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_BOOL', this.charvarsBool); + // workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_SET', this.charvarsSet); + + Blockly.Java['literal_text_multiline'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Text value. + var code = '"""\n' + block.getFieldValue('TEXT') + '\n"""\n'; + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['text_format_multi'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Text value. + + var atext = Blockly.Java.valueToCode(block, 'TEXT', Blockly.Java.ORDER_NONE) || '""'; + //atext = '"""\n' + block.getFieldValue('TEXT') + '\n"""\n'; + + var objects = Blockly.Java.valueToCode(block, 'VARIABLES', Blockly.Java.ORDER_NONE) || null; + + objects = objects.substring(1, objects.length-1 ); //remove first and last brackets + + var code = 'String.format(' + atext + ', ' + objects + ')'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['changecharacteristicvalue'] = function (block: any) { + // Print statement. + var argument0 = Blockly.Java.valueToCode(block, 'spec', + Blockly.Java.ORDER_NONE) || '""'; + var argument1 = Blockly.Java.valueToCode(block, 'value', + Blockly.Java.ORDER_NONE) || '""'; + console.log( argument0 ); + return 'changeCharacteristicValue(' + argument0 + ', ' + argument1 + ')'; + }; + + + Blockly.Java['getcharacteristicvalueAsString'] = function(block: any) { + var dropdown_name = block.getFieldValue('OPTIONEDVALUE'); + var comment_name = block.getFieldValue('NAMELBL'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var code = 'getCharValAsString(' + argument0 + ')'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['setcharacteristicvalue'] = function (block: any) { + // Print statement. + + var dropdown_name = block.getFieldValue('NAME'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var argument1 = Blockly.Java.valueToCode(block, 'NAME', + Blockly.Java.ORDER_NONE) || '""'; + + return 'setcharacteristicvalue(' + argument0 + ', ' + argument1 + ')'; + }; + + + Blockly.Java['getcharval_string_type'] = function(block: any) { + var dropdown_name = block.getFieldValue('AVALUE'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var code = 'getCharValFromStringType(' + argument0 + ')' ; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['setcharval_string_type'] = function (block: any) { + // Print statement. + + var dropdown_name = block.getFieldValue('NAMELBL'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var argument1 = Blockly.Java.valueToCode(block, 'AVALUE', + Blockly.Java.ORDER_NONE) || '""'; + + var code: String = 'setCharValFromStringType(' + argument0 + ', ' + argument1 + ');\n'; + return code; + }; + + + + Blockly.Java['getcharval_number'] = function(block: any) { + var dropdown_name = block.getFieldValue('AVALUE'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var code = 'getCharValNumber(' + argument0 + ')' ; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['setcharval_number'] = function (block: any) { + // Print statement. + + var dropdown_name = block.getFieldValue('NAMELBL'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var argument1 = Blockly.Java.valueToCode(block, 'AVALUE', + Blockly.Java.ORDER_NONE) || '""'; + + return 'setCharValNumber(' + argument0 + ', ' + argument1 + ');\n'; + }; + + + + Blockly.Java['getcharval_bool_type'] = function(block: any) { + var dropdown_name = block.getFieldValue('AVALUE'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var code = 'getCharValFromBooleanType(' + argument0 + ')' ; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['setcharval_bool_type'] = function (block: any) { + // Print statement. + + var dropdown_name = block.getFieldValue('NAMELBL'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var argument1 = Blockly.Java.valueToCode(block, 'AVALUE', + Blockly.Java.ORDER_NONE) || '""'; + + var code: String = 'setCharValFromBooleanType(' + argument0 + ', ' + argument1 + ');\n'; + return code; + }; + + Blockly.Java['getcharval_set_type'] = function(block: any) { + var dropdown_name = block.getFieldValue('AVALUE'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var code = 'getCharValFromSetType(' + argument0 + ')' ; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['setcharval_set_type'] = function (block: any) { + // Print statement. + + var dropdown_name = block.getFieldValue('NAMELBL'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var argument1 = Blockly.Java.valueToCode(block, 'AVALUE', + Blockly.Java.ORDER_NONE) || '""'; + + //argument1 is an array of Strings, usually from param_value_tuple + + //we must transform here the key value array to a json object with atributes and values + var additionalParamsAsObject= []; + var dd = JSON.parse( argument1 ); + dd.forEach( e => { + + var element = JSON.parse( e); //each element is a json String which describes the key value element + var ename = element.paramname; + var evalue = element.paramvalue; + var newelem = { value:"", alias: "" }; + newelem.alias = ename; + newelem.value = evalue; + additionalParamsAsObject.push( newelem ); + console.log('Variable additionalParams newelem = ' + newelem ); + }); + + var a1 = JSON.stringify( additionalParamsAsObject, null ); + a1 = '"' + textEscape (a1) + '"'; + /** + * it generates for example: + * setCharValFromSetType("cirros_2vnf_nsd::Primitive::fsetup", + * "[{\"value\":\"1\",\"alias\":\"member_vnf_index\"},{\"value\":\"fsetup\",\"alias\":\"primitive\"},{\"value\":\"{ \\\"tvg\\\": { \\\"ip\\\": \\\"\\\", \\\"channel1\\\": { \\\"mode\\\": \\\"0\\\" } } }\",\"alias\":\"confjson\"}]"); + * ); + */ + + return 'setCharValFromSetType(' + argument0 + ', ' + a1 + ');\n'; + }; + + + Blockly.Java['logic_set_contains_string'] = function (block: { getFieldValue: (arg0: string) => string }) { + + + var argument0 = Blockly.Java.valueToCode(block, 'A', Blockly.Java.ORDER_NONE) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'B', Blockly.Java.ORDER_NONE) || '0'; + //var code = argument0 + operator + '(' + argument1 + ')==true'; + //argument1 = 'new ArrayList<>( Arrays. asList("London", "Tokyo", "New York"))' + var code = 'checkIfSetContainsValue(' + argument0 + ', ' + argument1 + ')'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + + Blockly.Java['so_log_string'] = function (block: any) { + // Print statement. + + var argument0 = Blockly.Java.valueToCode(block, 'txtlog', + Blockly.Java.ORDER_NONE) || null; + + var code: String = 'logtext(' + argument0 + ');\n'; + return code; + }; + + + + Blockly.Java['osm_nsd_config'] = function(block: any) { + var NSDID = Blockly.Java.valueToCode(block, 'NSDID', + Blockly.Java.ORDER_NONE) || '""'; + var VIMID = Blockly.Java.valueToCode(block, 'VIMID', + Blockly.Java.ORDER_NONE) || '""'; + var config = Blockly.Java.valueToCode(block, 'config', + Blockly.Java.ORDER_NONE) || null; + + var osmconfig: any = { nsdId:'zzz' }; + + osmconfig.nsdId = NSDID.replaceAll('"', ''); + osmconfig.vimAccountId = VIMID.replaceAll('"', ''); + + var code = JSON.stringify( osmconfig, null ); + + code = '"' + textEscape( code ) + '"' ; + if (config){ + //it will replace all + //config = config.replace('"', ''); + //config = config.substring(0, config.length-1); + //code = config; + //var configAsObj = JSON.parse(config); + // code = JSON.stringify( configAsObj, null, 4 ); + + code = config; + } + + + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['osm_nsd_config_detailed'] = function(block: any) { + var NSDID = Blockly.Java.valueToCode(block, 'NSDID', + Blockly.Java.ORDER_NONE) || '""'; + var VIMID = Blockly.Java.valueToCode(block, 'VIMID', + Blockly.Java.ORDER_NONE) || '""'; + + var VNF = Blockly.Java.valueToCode(block, 'VNF', + Blockly.Java.ORDER_NONE) || null; + + var VLD = Blockly.Java.valueToCode(block, 'VLD', + Blockly.Java.ORDER_NONE) || null; + + var additionalParamsForVnf = Blockly.Java.valueToCode(block, 'additionalParamsForVnf', + Blockly.Java.ORDER_NONE) || null; + + + var k8snamespace = Blockly.Java.valueToCode(block, 'k8s-namespace', + Blockly.Java.ORDER_NONE) || null; + + var additionalParamsForNs = Blockly.Java.valueToCode(block, 'additionalParamsForNs', + Blockly.Java.ORDER_NONE) || null; + + var ssh_keys = Blockly.Java.valueToCode(block, 'ssh_keys', + Blockly.Java.ORDER_NONE) || null; + + var osmconfig: any = { nsdId:'zzz' }; + + if ( k8snamespace ){ + osmconfig = { "k8s-namespace" : k8snamespace.replaceAll('"', '') }; + } + + osmconfig.nsdId = NSDID.replaceAll('"', ''); + osmconfig.vimAccountId = VIMID.replaceAll('"', ''); + + + + if (VNF){ + osmconfig.vnf =JSON.parse(VNF) ; + } + if (VLD){ + osmconfig.vld = JSON.parse(VLD) ; + } + if (additionalParamsForVnf){ + osmconfig.additionalParamsForVnf = JSON.parse(additionalParamsForVnf) ; + } + if (additionalParamsForNs){ + osmconfig.additionalParamsForNs = JSON.parse(additionalParamsForNs) ; + } + if (ssh_keys){ + osmconfig.ssh_keys = JSON.parse(ssh_keys) ; + } + var code = '"' + textEscape( JSON.stringify( osmconfig, null) ) + '"' ; + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + + Blockly.Java['osm_nsd_config_vnf'] = function(block: any) { + var membervnfindex = Blockly.Java.valueToCode(block, 'member-vnf-index', + Blockly.Java.ORDER_NONE) || '"1"'; + var vdu = Blockly.Java.valueToCode(block, 'vdu', + Blockly.Java.ORDER_NONE) || null; + var vimAccountId = Blockly.Java.valueToCode(block, 'VIMID', + Blockly.Java.ORDER_NONE) || null; + + var code: any = { "member-vnf-index":membervnfindex.replaceAll('"', '') }; + + if ( vimAccountId ){ + code.vimAccountId = vimAccountId.replaceAll('"', ''); + } + if (vdu){ + vdu = vdu.replace('"', ''); + vdu = vdu.substring(0, vdu.length-1); + code.vdu = JSON.parse( vdu ) ; + } + code = JSON.stringify( code, null ); + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['osm_nsd_config_vld'] = function(block: any) { + var name = Blockly.Java.valueToCode(block, 'name', + Blockly.Java.ORDER_NONE) || '""'; + var vimnetworkname = Blockly.Java.valueToCode(block, 'vim-network-name', + Blockly.Java.ORDER_NONE) || null; + var config = Blockly.Java.valueToCode(block, 'config', + Blockly.Java.ORDER_NONE) || null; + + var code: any = { "name":name.replaceAll('"', '') }; + + if ( vimnetworkname ){ + code = { "name":name.replaceAll('"', '') , "vim-network-name" : vimnetworkname.replaceAll('"', '') }; + } + + if (config){ + //it will replace all + config = config.replace('"', ''); + config = config.substring(0, config.length-1); + code = JSON.parse( config ); + } + + code = JSON.stringify( code, null, 4 ); + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['osm_nsd_config_paramvnf'] = function(block: any) { + var membervnfindex = Blockly.Java.valueToCode(block, 'member-vnf-index', + Blockly.Java.ORDER_NONE) || '"1"'; + var additionalParams = Blockly.Java.valueToCode(block, 'additionalParams', + Blockly.Java.ORDER_NONE) || null; + + var additionalParamsForKdu = Blockly.Java.valueToCode(block, 'additionalParamsForKdu', + Blockly.Java.ORDER_NONE) || null; + + + var config = Blockly.Java.valueToCode(block, 'config', + Blockly.Java.ORDER_NONE) || null; + + var code: any = { "member-vnf-index":membervnfindex.replaceAll('"', '') }; + //we must transform here the key value array to a json object with atributes and values + var additionalParamsAsObject= null; + if (additionalParams){ + var dd = JSON.parse( additionalParams); + dd.forEach( e => { + + + var element = JSON.parse( e); //each element is a json String which describes the key value element + var evalue = element.paramvalue; + + console.log('Variable additionalParams element = ' + element.paramname ); + if (additionalParamsAsObject){ + additionalParamsAsObject =additionalParamsAsObject + ',' + '"' + element.paramname + '" : "' + evalue + '"'; + }else{ + additionalParamsAsObject = '"' + element.paramname + '" : "' + evalue + '"'; + } + }); + + additionalParamsAsObject = "{" + additionalParamsAsObject + "}"; + + code.additionalParams = JSON.parse( additionalParamsAsObject ) ; + } + + var additionalParamsForKduAsObject= null; + + console.log('Variable additionalParamsForKdu = ' + additionalParamsForKdu ); + + code.additionalParamsForKdu = JSON.parse( additionalParamsForKdu ) ; + + // if (additionalParamsForKdu){ + // var dd = JSON.parse( additionalParamsForKdu); + // dd.forEach( e => { + + // var element = JSON.parse( e); //each element is a json String which describes the key value element + // if ( element ){ + // var evalue = element.paramvalue; + + // console.log('Variable additionalParamsForKdu element = ' + element.paramname ); + // if (additionalParamsForKduAsObject){ + // additionalParamsForKduAsObject =additionalParamsForKduAsObject + ',' + '"' + element.paramname + '" : "' + evalue + '"'; + // }else{ + // additionalParamsForKduAsObject = '"' + element.paramname + '" : "' + evalue + '"'; + // } + // } + + // }); + + // if (additionalParamsForKduAsObject){ + // additionalParamsForKduAsObject = "{" + additionalParamsForKduAsObject + "}"; + // code.additionalParamsForKdu = JSON.parse( additionalParamsForKduAsObject ) ; + // } + // } + + + code = JSON.stringify( code, null ); + + if (config){ + //it will replace all + config = config.replace('"', ''); + config = config.substring(0, config.length-1); + code = JSON.parse( config ); + } + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['osm_nsd_config_kdu'] = function(block: any) { + var kdu_name = Blockly.Java.valueToCode(block, 'kdu_name', + Blockly.Java.ORDER_NONE) || '"1"'; + var k8snamespace = Blockly.Java.valueToCode(block, 'k8s-namespace', + Blockly.Java.ORDER_NONE) || null; + var additionalParams = Blockly.Java.valueToCode(block, 'additionalParams', + Blockly.Java.ORDER_NONE) || null; + + var code: any = { "kdu_name":kdu_name.replaceAll('"', '') }; + if ( k8snamespace ){ + + code = { "kdu_name":kdu_name.replaceAll('"', ''), "k8s-namespace":k8snamespace.replaceAll('"', ''), }; + } + + + if (additionalParams){ + additionalParams = additionalParams.replace('"', ''); + additionalParams = additionalParams.substring(0, additionalParams.length-1); + code.additionalParams = JSON.parse( additionalParams ) ; + } + + code = JSON.stringify( code, null); + // code = textEscape( JSON.stringify( code, null) ); + // code = '"' + code + '"'; + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['param_value_tuple'] = function(block: any) { + var paramname = Blockly.Java.valueToCode(block, 'paramname', + Blockly.Java.ORDER_NONE) || '""'; + + var paramvalue = Blockly.Java.valueToCode(block, 'paramvalue', + Blockly.Java.ORDER_NONE) || '""'; + + //paramvalue = paramvalue.replaceAll('"', '') + paramvalue = paramvalue.replace('"', ''); //remove only first and last quote + paramvalue = paramvalue.substring(0, paramvalue.length-1); + + var code: any = { "paramname":paramname.replaceAll('"', ''), "paramvalue": paramvalue , }; + code = textEscape( JSON.stringify( code, null) ); + code = '"' + code + '"'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['computeVariable'] = function(block: any) { + var paramvariable = Blockly.Java.valueToCode(block, 'paramvariable', + Blockly.Java.ORDER_NONE) || '""'; + + + + paramvariable = paramvariable.replaceAll('"', '$$QUOTESTR$$') + var code: any = '$$XVALS_' + paramvariable+ '_XVALE$$'; + + code = '"' + code + '"'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['text_escape'] = function(block: any) { + var code = Blockly.Java.valueToCode(block, 'paramtxt', + Blockly.Java.ORDER_NONE) || '""'; + code = code.replace('"', ''); + code = code.substring(0, code.length-1); + // code = code.replaceAll('\\', '\\\\'); + // code = code.replaceAll('"', '\\"'); + code = '"' + textEscape(code) + '"'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['valueFromJsonPath'] = function(block: any) { + var jsoninput: string = Blockly.Java.valueToCode(block, 'jsoninput', + Blockly.Java.ORDER_NONE) || '""'; + + var jsonpath: any = Blockly.Java.valueToCode(block, 'jsonpath', + Blockly.Java.ORDER_NONE) || '""'; + + jsoninput = jsoninput.replace('"', ''); + jsoninput = jsoninput.substring(0, jsoninput.length-1); + jsoninput = '"' + textEscape(jsoninput) + '"'; + + jsonpath = jsonpath.replaceAll("\\\'", "'"); + + console.log('jsoninput = ' + jsoninput ); + console.log('jsonpath = ' + jsonpath ); + + var code = 'getValueFromJsonPath(' + jsoninput + ', ' + jsonpath +')'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['rest_config_client'] = function (block: any) { + // Print statement. + + var xbaseurl = Blockly.Java.valueToCode(block, 'baseurl', + Blockly.Java.ORDER_NONE) || null; + + + + var xOAUTH2CLIENTID = Blockly.Java.valueToCode(block, 'aOAUTH2CLIENTID', + Blockly.Java.ORDER_NONE) || null; + + var xOAUTHSECRET = Blockly.Java.valueToCode(block, 'aOAUTHSECRET', + Blockly.Java.ORDER_NONE) || null; + + var xscopes = Blockly.Java.valueToCode(block, 'scopes', + Blockly.Java.ORDER_NONE) || null; + + var xTOKEURI = Blockly.Java.valueToCode(block, 'aTOKENURI', + Blockly.Java.ORDER_NONE) || null; + + var xUSERNAME = Blockly.Java.valueToCode(block, 'aUSERNAME', + Blockly.Java.ORDER_NONE) || null; + + var xPASSWORD = Blockly.Java.valueToCode(block, 'aPASSWORD', + Blockly.Java.ORDER_NONE) || null; + + + + var code: any = { baseurl: xbaseurl }; + code.aOAUTH2CLIENTID = xOAUTH2CLIENTID; + code.aOAUTHSECRET = xOAUTHSECRET; + code.scopes = xscopes; + code.aTOKENURI = xTOKEURI; + code.aUSERNAME = xUSERNAME; + code.aPASSWORD = xPASSWORD; + + code = JSON.stringify( code, null + ); + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['rest_block'] = function (block: any) { + // Print statement. + var dropdown_name = block.getFieldValue('VERBOPTION'); + var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); + + var argument0 = Blockly.Java.valueToCode(block, 'arest_config_client', + Blockly.Java.ORDER_NONE) || null; + var aurl = Blockly.Java.valueToCode(block, 'url', + Blockly.Java.ORDER_NONE) || null; + var aheaders = Blockly.Java.valueToCode(block, 'headers', + Blockly.Java.ORDER_NONE) || null; + var apayload = Blockly.Java.valueToCode(block, 'payload', + Blockly.Java.ORDER_NONE) || null; + + + + + var code: String = 'rest_block(' + argumentVERBOPTION + ',' + aurl + ',' + aheaders + ',' + apayload + ')'; + if ( argument0 ){ + + argument0 = JSON.parse(argument0); + code = 'rest_block(' + argumentVERBOPTION + +', ' + aurl + +', ' + aheaders + +', ' + apayload + +', ' + argument0.baseurl + +', ' + argument0.aOAUTH2CLIENTID + +', ' + argument0.aOAUTHSECRET + +', ' + argument0.scopes + +', ' + argument0.aTOKENURI + +', ' + argument0.aUSERNAME + +', ' + argument0.aPASSWORD + + ')'; + + } + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['currentServiceOrder'] = function(block: any) { + // Variable getter. + console.log('Variable getter currentServiceOrder') + + var dropdown_name = block.getFieldValue('VERBOPTION'); + var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); + + // var apayload = Blockly.Java.nameDB_.getName(block.getFieldValue('payload'), + // Blockly.Variables.NAME_TYPE); + + var code = 'getCurrentServiceOrderPropValue(' + argumentVERBOPTION +')'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['currentService'] = function(block: any) { + // Variable getter. + console.log('currentService') + + + //var acharname='""'; + var dropdown_name = block.getFieldValue('VERBOPTION'); + var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); + + + + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + var code = 'getCurrentServicePropValue(' + argumentVERBOPTION +', '+acharname +')'; + + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['setCharacteristicOfCurrentService'] = function(block: any) { + // Variable getter. + console.log('setCharacteristicOfCurrentService') + + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + var avalue = Blockly.Java.valueToCode(block, 'avalue', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + var code = 'setCharacteristicOfCurrentService(' + acharname +', '+ avalue +');\n'; + + return code; + + }; + + Blockly.Java['payloadToService'] = function(block: any) { + // Variable getter. + console.log('payloadToService') + + + //var acharname='""'; + var dropdown_name = block.getFieldValue('VERBOPTION'); + var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); + + + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + var ajsonpayload = Blockly.Java.valueToCode(block, 'jsonpayload', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + var code = 'getFromPayloadServicePropValue(' + ajsonpayload +', '+argumentVERBOPTION +', '+ acharname +')'; + + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['createServiceOrder'] = function(block: any) { + + console.log('createServiceOrder') + + var serviceOrder: ServiceOrderCreate= { + orderItem:[] + }; + + var serviceSpecificationid = Blockly.Java.valueToCode(block, 'serviceSpecificationid', + Blockly.Java.ORDER_NONE) || null; + var aserviceCharacteristics = Blockly.Java.valueToCode(block, 'serviceCharacteristics', + Blockly.Java.ORDER_NONE) || null; + + + let newOrderItem: ServiceOrderItem ; + newOrderItem = { service: { + serviceSpecification: { + id: serviceSpecificationid.replaceAll('"', '') + }, + serviceCharacteristic: [] + }, action: 'add'} + + //we must transform here the key value array to a json object with atributes and values + var additionalParamsAsObject= null; + if (aserviceCharacteristics){ + console.log('aserviceCharacteristics = ' + aserviceCharacteristics ); + var dd = JSON.parse( aserviceCharacteristics); + console.log('dd = ' + dd ); + dd.forEach (e => { + if ( e ){ + + var element = JSON.parse( e); //each element is a json String which describes the key value element + var evalue = element.paramvalue; + + var evalue = element.paramvalue; + newOrderItem.service.serviceCharacteristic.push({ + name: element.paramname, + value: { value: evalue } + }) + } + }); + } + + serviceOrder.orderItem.push(newOrderItem); + + var acode = '"' + textEscape( JSON.stringify( serviceOrder, null ) )+ '"'; + + var code = 'createServiceOrder(' + acode + ')'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['createServiceOrderJson'] = function(block: any) { + // Variable getter. + console.log('createServiceOrderJson') + + var jsonpayload = Blockly.Java.valueToCode(block, 'jsonpayload', + Blockly.Java.ORDER_NONE) || null; + + var code = 'createServiceOrder(' + jsonpayload + ')'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['variables_get'] = function(block: any) { + // Variable getter. + console.log('Variable getter CUSTOM') + var code = Blockly.Java.nameDB_.getName(block.getFieldValue('VAR'), + Blockly.Variables.NAME_TYPE); + //code = '$EVAL_' + code + '_EVAL$'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['variables_set'] = function(block: any) { + // Variable setter. + console.log('Variable setter CUSTOM') + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + return varName + ' = ' + argument0 + ';\n'; + }; + + + + Blockly.Java['controls_foreach_java'] = function (block: { getFieldValue: (arg0: string) => any; id: any; }) { + // For each loop. + var variable0 = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument0 = Blockly.Java.valueToCode(block, 'ASET', + Blockly.Java.ORDER_ASSIGNMENT) || 'null'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var indexVar = Blockly.Java.nameDB_.getDistinctName( + variable0 , Blockly.Variables.NAME_TYPE); + //branch = Blockly.Java.INDENT + variable0 + ' = ' + + // argument0 + '[' + indexVar + '];\n' + branch; + + branch = Blockly.Java.INDENT + branch; + var code = 'for ( String ' + variable0 + ': ' + argument0 + ') {\n' + + branch + '}\n'; + return code; + }; + + + + Blockly.Java['createServiceRefIf'] = function(block: any) { + var serviceName = Blockly.Java.valueToCode(block, 'SERVICE_NAME', + Blockly.Java.ORDER_NONE) || '""'; + + + var avalue = Blockly.Java.valueToCode(block, 'CONDITION', + Blockly.Java.ORDER_ASSIGNMENT) || 'true'; + + var charvalsVarName = 'charvals'; + //put it in braces so to ensure the scope of the hashmap variable + var code = '{\n'; + + var charvalsVarName = 'charvals'; + code += 'java.util.HashMap ' + charvalsVarName + ' = new java.util.HashMap<>();\n'; + + var varray = '['; + var cvs = Blockly.Java.valueToCode(block, 'CHARVALUES', Blockly.Java.ORDER_NONE) || null ; + console.log( cvs ); + var objects = JSON.parse( cvs ); + console.log( objects ); + if (objects){ + objects.forEach(element => { + var charname = element.charname; + var avalue = element.charvalue; + code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; + }); + } + varray += ']'; + + code += 'createServiceRefIf(' + serviceName +', '+ avalue +', '+ charvalsVarName +');\n'; + code += '}\n'; + return code; + }; + + Blockly.Java['createResourceRefIf'] = function(block: any) { + var resourceName = Blockly.Java.valueToCode(block, 'RESOURCE_NAME', + Blockly.Java.ORDER_NONE) || '""'; + + + var avalue = Blockly.Java.valueToCode(block, 'CONDITION', + Blockly.Java.ORDER_ASSIGNMENT) || 'true'; + + var charvalsVarName = 'charvals'; + //put it in braces so to ensure the scope of the hashmap variable + var code = '{\n'; + + var charvalsVarName = 'charvals'; + code += 'java.util.HashMap ' + charvalsVarName + ' = new java.util.HashMap<>();\n'; + + var varray = '['; + var cvs = Blockly.Java.valueToCode(block, 'CHARVALUES', Blockly.Java.ORDER_NONE) || null ; + console.log( cvs ); + var objects = JSON.parse( cvs ); + console.log( objects ); + if (objects){ + objects.forEach(element => { + var charname = element.charname; + var avalue = element.charvalue; + code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; + }); + } + varray += ']'; + + code += 'createResourceRefIf(' + resourceName +', '+ avalue +', '+ charvalsVarName +');\n'; + code += '}\n'; + return code; + }; + + + Blockly.Java['getServiceRefName'] = function(block: any) { + var dropdown_name = block.getFieldValue('AVALUE'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var code = argument0 ; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + + + Blockly.Java['getResourceRefName'] = function(block: any) { + var dropdown_name = block.getFieldValue('AVALUE'); + var argument0 = Blockly.Java.quote_( dropdown_name ); + var code = argument0 ; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + + Blockly.Java['getServiceRefProps'] = function(block: any) { + // Variable getter. + console.log('getServiceRefProps') + + + //var acharname='""'; + var dropdown_name = block.getFieldValue('VERBOPTION'); + var servicename = block.getFieldValue('AVALUE'); + servicename = Blockly.Java.quote_( servicename ); + var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); + + + + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + var code = 'getServiceRefPropValue(' + servicename +', '+ argumentVERBOPTION +', '+acharname +')'; + + + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + + // Blockly.Java['setServiceRefProps'] = function(block: any) { + // // Variable getter. + // console.log('setServiceRefProps'); + + + // //var acharname='""'; + // var servicename = block.getFieldValue('ASERVICEREFNAME'); + // servicename = Blockly.Java.quote_( servicename ); + // var servicerefuuid = block.getFieldValue('ASERVICEREFUUID'); + // servicerefuuid = Blockly.Java.quote_( servicerefuuid ); + + // console.log( servicename ); + + + // // var acharname = Blockly.Java.valueToCode(block, 'characteristicName', + // // Blockly.Java.ORDER_ASSIGNMENT) || '""'; + // var acharname = block.getFieldValue('OPTIONEDVALUE'); + // console.log( acharname ); + + + // var aVALUE = Blockly.Java.valueToCode(block, 'AVALUE', + // Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + // console.log( aVALUE ); + + // var code = 'setServiceRefPropValue(' + servicename +', '+acharname +', '+aVALUE +');\n'; + + + // return code; + // }; + + + + Blockly.Java['serviceRefCharacteristic'] = function(block: any) { + // Variable getter. + console.log('serviceRefCharacteristic'); + + var acharname = Blockly.Java.valueToCode(block, 'ACHARACTERISTICNAME', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + console.log( acharname ); + + var aVALUE = Blockly.Java.valueToCode(block, 'AVALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + console.log( aVALUE ); + + var code: any = { "charname" : acharname, "charvalue" : aVALUE }; + + code = JSON.stringify( code, null ); + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['setServiceRefCharacteristicValues'] = function(block: any) { + // Variable getter. + console.log('setServiceRefCharacteristicValues'); + + + //var acharname='""'; + var servicename = block.getFieldValue('ASERVICEREFNAME'); + servicename = Blockly.Java.quote_( servicename ); + var servicerefuuid = block.getFieldValue('ASERVICEREFUUID'); + servicerefuuid = Blockly.Java.quote_( servicerefuuid ); + + console.log( servicename ); + + + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + console.log( acharname ); + + + var cvs = Blockly.Java.valueToCode(block, 'CHARVALUES', Blockly.Java.ORDER_NONE) || null ; + console.log( cvs ); + var objects = JSON.parse( cvs ); + console.log( objects ); + + //var charvalsVarName = 'charvals_'+ Math.floor(Math.random() * 1000) + 1; + var charvalsVarName = 'charvals'; + //put it in braces so to ensure the scope of the hashmap variable + var code = '{\n'; + code += 'java.util.HashMap ' + charvalsVarName + ' = new java.util.HashMap<>();\n'; + + var varray = '['; + + if (objects){ + objects.forEach(element => { + var charname = element.charname; + var avalue = element.charvalue; + code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; + }); + } + varray += ']'; + + code += 'setServiceRefCharacteristicsValues(' + servicename +', ' + charvalsVarName + ');\n'; + code += '}\n'; + + return code; + }; + + + + } + + + + + + + + saveProgram(): void { + // this.program.xmlData = Blockly.Xml.domToText( + // Blockly.Xml.workspaceToDom(this.workspace) + // ); + console.log('saving the program - ', JSON.stringify(this.lcmRuleSpec)); + //this.programService.upsertOne(this.program); + //this.router.navigate(['listProgram']); + + const updateObj: LCMRuleSpecificationUpdate | LCMRuleSpecificationCreate = { + content: Blockly.Xml.domToText( Blockly.Xml.workspaceToDom(this.workspace) ), + code: this.lcmRuleSpec.code, + description: this.editForm.value.description, + name: this.editForm.value.name, + priority: this.editForm.value.priority, + lcmrulephase: this.editForm.value.lcmrulephase , + serviceSpecs: this.lcmRuleSpec.serviceSpecs + } + + if (this.newLCMRuleSpecification) { + this.lcmRulesService .createLCMRuleSpecification(updateObj).subscribe( + data => { this.lcmRuleSpec = data }, + error => console.error(error), + () => { + this.newLCMRuleSpecification = false + this.toast.success("Service Specification was successfully created") + this.router.navigate(['services', 'service_spec_update', this.specID]) + + + } + ) + + } else + { + this.lcmRulesService.patchLCMRuleSpecification({id: this.lcmRuleSpec.id, body: updateObj}).subscribe( + data => console.log(data), + error => console.error(error), + () => { + this.toast.success("Service Specification was successfully updated"); + this.router.navigate(['services', 'service_spec_update', this.specID]) + + + } + ) + } + + + + + + + } + + addBlock(): void { + + this.workspace; + + // console.log('saving the program - ', JSON.stringify(this.program)); + } + + + cancelProgram(): void { + + + console.log('cancelProgram the program - ' ); + this.router.navigate(['services', 'service_spec_update', this.specID]) + } + + + + + } + + + +function textEscape(avalue: any): any { + + //avalue = avalue.replaceAll('\\', '\\\\'); + avalue = avalue.replaceAll('"', '\\"'); + //avalue = avalue.replaceAll('\\\\\\\\n', '\n'); + + return avalue; +} + diff --git a/src/app/p_services/admin/lifeCycleManagement/services/blockly-java.service.spec.ts b/src/app/p_services/admin/lifeCycleManagement/services/blockly-java.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d8a395ca8d05b887a1a747eea97946bd61cabf5b --- /dev/null +++ b/src/app/p_services/admin/lifeCycleManagement/services/blockly-java.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { BlocklyJavaService } from './blockly-java.service'; + +describe('BlocklyJavaService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: BlocklyJavaService = TestBed.get(BlocklyJavaService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/lifeCycleManagement/services/blockly-java.service.ts b/src/app/p_services/admin/lifeCycleManagement/services/blockly-java.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..84cd53c1fa4a89647bd82aaecde564e838a7880e --- /dev/null +++ b/src/app/p_services/admin/lifeCycleManagement/services/blockly-java.service.ts @@ -0,0 +1,2282 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) + +export class BlocklyJavaService { + + + constructor() { } + + + createJava(ws: any, Blockly: any): void { + + /** + * Java code generator. + * @type !Blockly.Generator + */ + Blockly.Java = new Blockly.Generator('Java'); + + + + + /** + * List of illegal variable names. + * This is not intended to be a security feature. Blockly is 100% client-side, + * so bypassing this list is trivial. This is intended to prevent users from + * accidentally clobbering a built-in object or function. + * @private + */ + Blockly.Java.addReservedWords( + 'Blockly,' + // In case JS is evaled in the current window. + // https://developer.mozilla.org/en/Java/Reference/Reserved_Words + 'break,case,catch,continue,debugger,default,delete,do,else,finally,for,function,if,in,instanceof,new,return,switch,this,throw,try,typeof,var,void,while,with,' + + 'class,enum,export,extends,import,super,implements,interface,let,package,private,protected,public,static,yield,' + + 'const,null,true,false,' + + // https://developer.mozilla.org/en/Java/Reference/Global_Objects + 'Array,ArrayBuffer,Boolean,Date,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Error,eval,EvalError,Float32Array,Float64Array,Function,Infinity,Int16Array,Int32Array,Int8Array,isFinite,isNaN,Iterator,JSON,Math,NaN,Number,Object,parseFloat,parseInt,RangeError,ReferenceError,RegExp,StopIteration,SyntaxError,TypeError,Uint16Array,Uint32Array,Uint8Array,Uint8ClampedArray,undefined,uneval,URIError,' + + // https://developer.mozilla.org/en/DOM/window + 'applicationCache,closed,Components,content,_content,controllers,crypto,defaultStatus,dialogArguments,directories,document,frameElement,frames,fullScreen,globalStorage,history,innerHeight,innerWidth,length,location,locationbar,localStorage,menubar,messageManager,mozAnimationStartTime,mozInnerScreenX,mozInnerScreenY,mozPaintCount,name,navigator,opener,outerHeight,outerWidth,pageXOffset,pageYOffset,parent,performance,personalbar,pkcs11,returnValue,screen,screenX,screenY,scrollbars,scrollMaxX,scrollMaxY,scrollX,scrollY,self,sessionStorage,sidebar,status,statusbar,toolbar,top,URL,window,' + + 'addEventListener,alert,atob,back,blur,btoa,captureEvents,clearImmediate,clearInterval,clearTimeout,close,confirm,disableExternalCapture,dispatchEvent,dump,enableExternalCapture,escape,find,focus,forward,GeckoActiveXObject,getAttention,getAttentionWithCycleCount,getComputedStyle,getSelection,home,matchMedia,maximize,minimize,moveBy,moveTo,mozRequestAnimationFrame,open,openDialog,postMessage,print,prompt,QueryInterface,releaseEvents,removeEventListener,resizeBy,resizeTo,restore,routeEvent,scroll,scrollBy,scrollByLines,scrollByPages,scrollTo,setCursor,setImmediate,setInterval,setResizable,setTimeout,showModalDialog,sizeToContent,stop,unescape,updateCommands,XPCNativeWrapper,XPCSafeJSObjectWrapper,' + + 'onabort,onbeforeunload,onblur,onchange,onclick,onclose,oncontextmenu,ondevicemotion,ondeviceorientation,ondragdrop,onerror,onfocus,onhashchange,onkeydown,onkeypress,onkeyup,onload,onmousedown,onmousemove,onmouseout,onmouseover,onmouseup,onmozbeforepaint,onpaint,onpopstate,onreset,onresize,onscroll,onselect,onsubmit,onunload,onpageshow,onpagehide,' + + 'Image,Option,Worker,' + + // https://developer.mozilla.org/en/Gecko_DOM_Reference + 'Event,Range,File,FileReader,Blob,BlobBuilder,' + + 'Attr,CDATASection,CharacterData,Comment,console,DocumentFragment,DocumentType,DomConfiguration,DOMError,DOMErrorHandler,DOMException,DOMImplementation,DOMImplementationList,DOMImplementationRegistry,DOMImplementationSource,DOMLocator,DOMObject,DOMString,DOMStringList,DOMTimeStamp,DOMUserData,Entity,EntityReference,MediaQueryList,MediaQueryListListener,NameList,NamedNodeMap,Node,NodeFilter,NodeIterator,NodeList,Notation,Plugin,PluginArray,ProcessingInstruction,SharedWorker,Text,TimeRanges,Treewalker,TypeInfo,UserDataHandler,Worker,WorkerGlobalScope,' + + 'HTMLDocument,HTMLElement,HTMLAnchorElement,HTMLAppletElement,HTMLAudioElement,HTMLAreaElement,HTMLBaseElement,HTMLBaseFontElement,HTMLBodyElement,HTMLBRElement,HTMLButtonElement,HTMLCanvasElement,HTMLDirectoryElement,HTMLDivElement,HTMLDListElement,HTMLEmbedElement,HTMLFieldSetElement,HTMLFontElement,HTMLFormElement,HTMLFrameElement,HTMLFrameSetElement,HTMLHeadElement,HTMLHeadingElement,HTMLHtmlElement,HTMLHRElement,HTMLIFrameElement,HTMLImageElement,HTMLInputElement,HTMLKeygenElement,HTMLLabelElement,HTMLLIElement,HTMLLinkElement,HTMLMapElement,HTMLMenuElement,HTMLMetaElement,HTMLModElement,HTMLObjectElement,HTMLOListElement,HTMLOptGroupElement,HTMLOptionElement,HTMLOutputElement,HTMLParagraphElement,HTMLParamElement,HTMLPreElement,HTMLQuoteElement,HTMLScriptElement,HTMLSelectElement,HTMLSourceElement,HTMLSpanElement,HTMLStyleElement,HTMLTableElement,HTMLTableCaptionElement,HTMLTableCellElement,HTMLTableDataCellElement,HTMLTableHeaderCellElement,HTMLTableColElement,HTMLTableRowElement,HTMLTableSectionElement,HTMLTextAreaElement,HTMLTimeElement,HTMLTitleElement,HTMLTrackElement,HTMLUListElement,HTMLUnknownElement,HTMLVideoElement,' + + 'HTMLCanvasElement,CanvasRenderingContext2D,CanvasGradient,CanvasPattern,TextMetrics,ImageData,CanvasPixelArray,HTMLAudioElement,HTMLVideoElement,NotifyAudioAvailableEvent,HTMLCollection,HTMLAllCollection,HTMLFormControlsCollection,HTMLOptionsCollection,HTMLPropertiesCollection,DOMTokenList,DOMSettableTokenList,DOMStringMap,RadioNodeList,' + + 'SVGDocument,SVGElement,SVGAElement,SVGAltGlyphElement,SVGAltGlyphDefElement,SVGAltGlyphItemElement,SVGAnimationElement,SVGAnimateElement,SVGAnimateColorElement,SVGAnimateMotionElement,SVGAnimateTransformElement,SVGSetElement,SVGCircleElement,SVGClipPathElement,SVGColorProfileElement,SVGCursorElement,SVGDefsElement,SVGDescElement,SVGEllipseElement,SVGFilterElement,SVGFilterPrimitiveStandardAttributes,SVGFEBlendElement,SVGFEColorMatrixElement,SVGFEComponentTransferElement,SVGFECompositeElement,SVGFEConvolveMatrixElement,SVGFEDiffuseLightingElement,SVGFEDisplacementMapElement,SVGFEDistantLightElement,SVGFEFloodElement,SVGFEGaussianBlurElement,SVGFEImageElement,SVGFEMergeElement,SVGFEMergeNodeElement,SVGFEMorphologyElement,SVGFEOffsetElement,SVGFEPointLightElement,SVGFESpecularLightingElement,SVGFESpotLightElement,SVGFETileElement,SVGFETurbulenceElement,SVGComponentTransferFunctionElement,SVGFEFuncRElement,SVGFEFuncGElement,SVGFEFuncBElement,SVGFEFuncAElement,SVGFontElement,SVGFontFaceElement,SVGFontFaceFormatElement,SVGFontFaceNameElement,SVGFontFaceSrcElement,SVGFontFaceUriElement,SVGForeignObjectElement,SVGGElement,SVGGlyphElement,SVGGlyphRefElement,SVGGradientElement,SVGLinearGradientElement,SVGRadialGradientElement,SVGHKernElement,SVGImageElement,SVGLineElement,SVGMarkerElement,SVGMaskElement,SVGMetadataElement,SVGMissingGlyphElement,SVGMPathElement,SVGPathElement,SVGPatternElement,SVGPolylineElement,SVGPolygonElement,SVGRectElement,SVGScriptElement,SVGStopElement,SVGStyleElement,SVGSVGElement,SVGSwitchElement,SVGSymbolElement,SVGTextElement,SVGTextPathElement,SVGTitleElement,SVGTRefElement,SVGTSpanElement,SVGUseElement,SVGViewElement,SVGVKernElement,' + + 'SVGAngle,SVGColor,SVGICCColor,SVGElementInstance,SVGElementInstanceList,SVGLength,SVGLengthList,SVGMatrix,SVGNumber,SVGNumberList,SVGPaint,SVGPoint,SVGPointList,SVGPreserveAspectRatio,SVGRect,SVGStringList,SVGTransform,SVGTransformList,' + + 'SVGAnimatedAngle,SVGAnimatedBoolean,SVGAnimatedEnumeration,SVGAnimatedInteger,SVGAnimatedLength,SVGAnimatedLengthList,SVGAnimatedNumber,SVGAnimatedNumberList,SVGAnimatedPreserveAspectRatio,SVGAnimatedRect,SVGAnimatedString,SVGAnimatedTransformList,' + + 'SVGPathSegList,SVGPathSeg,SVGPathSegArcAbs,SVGPathSegArcRel,SVGPathSegClosePath,SVGPathSegCurvetoCubicAbs,SVGPathSegCurvetoCubicRel,SVGPathSegCurvetoCubicSmoothAbs,SVGPathSegCurvetoCubicSmoothRel,SVGPathSegCurvetoQuadraticAbs,SVGPathSegCurvetoQuadraticRel,SVGPathSegCurvetoQuadraticSmoothAbs,SVGPathSegCurvetoQuadraticSmoothRel,SVGPathSegLinetoAbs,SVGPathSegLinetoHorizontalAbs,SVGPathSegLinetoHorizontalRel,SVGPathSegLinetoRel,SVGPathSegLinetoVerticalAbs,SVGPathSegLinetoVerticalRel,SVGPathSegMovetoAbs,SVGPathSegMovetoRel,ElementTimeControl,TimeEvent,SVGAnimatedPathData,' + + 'SVGAnimatedPoints,SVGColorProfileRule,SVGCSSRule,SVGExternalResourcesRequired,SVGFitToViewBox,SVGLangSpace,SVGLocatable,SVGRenderingIntent,SVGStylable,SVGTests,SVGTextContentElement,SVGTextPositioningElement,SVGTransformable,SVGUnitTypes,SVGURIReference,SVGViewSpec,SVGZoomAndPan'); + + /** + * Order of operation ENUMs. + * https://developer.mozilla.org/en/Java/Reference/Operators/Operator_Precedence + */ + Blockly.Java.ORDER_ATOMIC = 0; // 0 "" ... + Blockly.Java.ORDER_MEMBER = 1; // . [] + Blockly.Java.ORDER_NEW = 1; // new + Blockly.Java.ORDER_FUNCTION_CALL = 2; // () + Blockly.Java.ORDER_INCREMENT = 3; // ++ + Blockly.Java.ORDER_DECREMENT = 3; // -- + Blockly.Java.ORDER_LOGICAL_NOT = 4; // ! + Blockly.Java.ORDER_BITWISE_NOT = 4; // ~ + Blockly.Java.ORDER_UNARY_PLUS = 4; // + + Blockly.Java.ORDER_UNARY_NEGATION = 4; // - + Blockly.Java.ORDER_TYPEOF = 4; // typeof + Blockly.Java.ORDER_VOID = 4; // void + Blockly.Java.ORDER_DELETE = 4; // delete + Blockly.Java.ORDER_MULTIPLICATION = 5; // * + Blockly.Java.ORDER_DIVISION = 5; // / + Blockly.Java.ORDER_MODULUS = 5; // % + Blockly.Java.ORDER_ADDITION = 6; // + + Blockly.Java.ORDER_SUBTRACTION = 6; // - + Blockly.Java.ORDER_BITWISE_SHIFT = 7; // << >> >>> + Blockly.Java.ORDER_RELATIONAL = 8; // < <= > >= + Blockly.Java.ORDER_IN = 8; // in + Blockly.Java.ORDER_INSTANCEOF = 8; // instanceof + Blockly.Java.ORDER_EQUALITY = 9; // == != === !== + Blockly.Java.ORDER_BITWISE_AND = 10; // & + Blockly.Java.ORDER_BITWISE_XOR = 11; // ^ + Blockly.Java.ORDER_BITWISE_OR = 12; // | + Blockly.Java.ORDER_LOGICAL_AND = 13; // && + Blockly.Java.ORDER_LOGICAL_OR = 14; // || + Blockly.Java.ORDER_CONDITIONAL = 15; // ?: + Blockly.Java.ORDER_ASSIGNMENT = 16; // = += -= *= /= %= <<= >>= ... + Blockly.Java.ORDER_COMMA = 17; // , + Blockly.Java.ORDER_EQUALITY_ST = 18; // .equals + Blockly.Java.ORDER_NONE = 99; // (...) + + /** + * Initialise the database of variable names. + */ + Blockly.Java.init = function () { + // Create a dictionary of definitions to be printed before the code. + Blockly.Java.definitions_ = Object.create(null); + // Create a dictionary mapping desired function names in definitions_ + // to actual function names (to avoid collisions with user functions). + Blockly.Java.functionNames_ = Object.create(null); + + if (!Blockly.Java.nameDB_) { + Blockly.Java.nameDB_ = + new Blockly.Names(Blockly.Java.RESERVED_WORDS_); + } else { + Blockly.Java.nameDB_.reset(); + } + + var defvars = []; + Blockly.Java.nameDB_.setVariableMap(ws.getVariableMap()); + var variables = ws.getVariableMap(); + for (var x = 0; x < variables.length; x++) { + defvars[x] = Blockly.Java.nameDB_.getName(variables[x], + Blockly.Variables.NAME_TYPE) + + Blockly.Java.nameDB_.getName(variables[x], + Blockly.Variables.NAME_TYPE) + ';'; + } + + Blockly.Java.definitions_['variables'] = defvars.join('\n'); + }; + + /** + * Prepend the generated code with the variable definitions. + * @param {string} code Generated code. + * @return {string} Completed code. + */ + Blockly.Java.finish = function (code: string) { + // Convert the definitions dictionary into a list. + var definitions = []; + for (var name in Blockly.Java.definitions_) { + definitions.push(Blockly.Java.definitions_[name]); + } + return definitions.join('\n\n') + '\n\n\n' + code; + }; + + /** + * Naked values are top-level blocks with outputs that aren't plugged into + * anything. A trailing semicolon is needed to make this legal. + * @param {string} line Line of generated code. + * @return {string} Legal line of code. + */ + Blockly.Java.scrubNakedValue = function (line: string) { + return line + ';\n'; + }; + + /** + * Encode a string as a properly escaped Java string, complete with + * quotes. + * @param {string} string Text to encode. + * @return {string} Java string. + * @private + */ + Blockly.Java.quote_ = function (s: string) { + // TODO: This is a quick hack. Replace with goog.string.quote + s = s.replace(/\\/g, '\\\\') + .replace(/\n/g, '\\\n') + .replace(/'/g, '\\\''); + return '"' + s + '"'; + }; + + /** + * Common tasks for generating Java from blocks. + * Handles comments for the specified block and any connected value blocks. + * Calls any statements following this block. + * @param {!Blockly.Block} block The current block. + * @param {string} code The Java code created for this block. + * @return {string} Java code with comments and subsequent blocks added. + * @private + */ + Blockly.Java.scrub_ = function (block: { outputConnection: { targetConnection: any; }; getCommentText: () => any; inputList: string | any[]; nextConnection: { targetBlock: () => any; }; }, code: string) { + var commentCode = ''; + // Only collect comments for blocks that aren't inline. + if (!block.outputConnection || !block.outputConnection.targetConnection) { + // Collect comment for this block. + var comment = block.getCommentText(); + if (comment) { + commentCode += Blockly.Java.prefixLines(comment, '// ') + '\n'; + } + // Collect comments for all value arguments. + // Don't collect comments for nested statements. + for (var x = 0; x < block.inputList.length; x++) { + if (block.inputList[x].type == Blockly.INPUT_VALUE) { + var childBlock = block.inputList[x].connection.targetBlock(); + if (childBlock) { + var comment = Blockly.Java.allNestedComments(childBlock); + if (comment) { + commentCode += Blockly.Java.prefixLines(comment, '// '); + } + } + } + } + } + var nextBlock = block.nextConnection && block.nextConnection.targetBlock(); + var nextCode = Blockly.Java.blockToCode(nextBlock); + return commentCode + code + nextCode; + }; + + + + + Blockly.Java['controls_if'] = function (block: { elseifCount_: number; elseCount_: any; }) { + // If/elseif/else condition. + var n = 0; + var argument = Blockly.Java.valueToCode(block, 'IF' + n, + Blockly.Java.ORDER_NONE) || 'false'; + var branch = Blockly.Java.statementToCode(block, 'DO' + n); + var code = 'if (' + argument + ') {\n' + branch + '}'; + for (n = 1; n <= block.elseifCount_; n++) { + argument = Blockly.Java.valueToCode(block, 'IF' + n, + Blockly.Java.ORDER_NONE) || 'false'; + branch = Blockly.Java.statementToCode(block, 'DO' + n); + code += ' else if (' + argument + ') {\n' + branch + '}'; + } + if (block.elseCount_) { + branch = Blockly.Java.statementToCode(block, 'ELSE'); + code += ' else {\n' + branch + '}'; + } + return code + '\n'; + }; + + Blockly.Java['logic_compare_strings'] = function (block: { getFieldValue: (arg0: string) => string }) { + // Comparison operator strings. + var OPERATORS: { [index: string]: string } = { + 'EQ': '.equals' + }; + + var operator = OPERATORS[block.getFieldValue('OP')]; + var order = (operator == '==') ? + Blockly.Java.ORDER_EQUALITY : Blockly.Java.ORDER_RELATIONAL; + var argument0 = Blockly.Java.valueToCode(block, 'A', order) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'B', order) || '0'; + var code = argument0 + operator + '(' + argument1 + ')==true'; + return [code, order]; + }; + + + Blockly.Java['logic_compare'] = function (block: { getFieldValue: (arg0: string) => string | number; }) { + // Comparison operator. + var OPERATORS: { [index: string]: string } = { + 'EQ': '==', + 'NEQ': '!=', + 'LT': '<', + 'LTE': '<=', + 'GT': '>', + 'GTE': '>=' + }; + var operator = OPERATORS[block.getFieldValue('OP')]; + var order = (operator == '==' || operator == '!=') ? + Blockly.Java.ORDER_EQUALITY : Blockly.Java.ORDER_RELATIONAL; + var argument0 = Blockly.Java.valueToCode(block, 'A', order) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'B', order) || '0'; + var code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; + }; + + Blockly.Java['logic_operation'] = function (block: { getFieldValue: (arg0: string) => string; }) { + // Operations 'and', 'or'. + var operator = (block.getFieldValue('OP') == 'AND') ? '&&' : '||'; + var order = (operator == '&&') ? Blockly.Java.ORDER_LOGICAL_AND : + Blockly.Java.ORDER_LOGICAL_OR; + var argument0 = Blockly.Java.valueToCode(block, 'A', order); + var argument1 = Blockly.Java.valueToCode(block, 'B', order); + if (!argument0 && !argument1) { + // If there are no arguments, then the return value is false. + argument0 = 'false'; + argument1 = 'false'; + } else { + // Single missing arguments have no effect on the return value. + var defaultArgument = (operator == '&&') ? 'true' : 'false'; + if (!argument0) { + argument0 = defaultArgument; + } + if (!argument1) { + argument1 = defaultArgument; + } + } + var code = argument0 + ' ' + operator + ' ' + argument1; + return [code, order]; + }; + + + + Blockly.Java['logic_negate'] = function (block: any) { + // Negation. + var order = Blockly.Java.ORDER_LOGICAL_NOT; + var argument0 = Blockly.Java.valueToCode(block, 'BOOL', order) || + 'true'; + var code = '!' + argument0; + return [code, order]; + }; + + + + Blockly.Java['logic_null'] = function (block: any) { + // Null data type. + return ['null', Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['logic_ternary'] = function (block: any) { + // Ternary operator. + var value_if = Blockly.Java.valueToCode(block, 'IF', + Blockly.Java.ORDER_CONDITIONAL) || 'false'; + var value_then = Blockly.Java.valueToCode(block, 'THEN', + Blockly.Java.ORDER_CONDITIONAL) || 'null'; + var value_else = Blockly.Java.valueToCode(block, 'ELSE', + Blockly.Java.ORDER_CONDITIONAL) || 'null'; + var code = value_if + ' ? ' + value_then + ' : ' + value_else; + return [code, Blockly.Java.ORDER_CONDITIONAL]; + }; + + + Blockly.Java['controls_repeat'] = function (block: { getFieldValue: (arg0: string) => any; id: any; }) { + // Repeat n times (internal number). + var repeats = Number(block.getFieldValue('TIMES')); + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var loopVar = Blockly.Java.nameDB_.getDistinctName( + 'count', Blockly.Variables.NAME_TYPE); + var code = 'for (var ' + loopVar + ' = 0; ' + + loopVar + ' < ' + repeats + '; ' + + loopVar + '++) {\n' + + branch + '}\n'; + return code; + }; + + Blockly.Java['controls_repeat_ext'] = function (block: { id: any; }) { + // Repeat n times (external number). + var repeats = Blockly.Java.valueToCode(block, 'TIMES', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var code = ''; + var loopVar = Blockly.Java.nameDB_.getDistinctName( + 'count', Blockly.Variables.NAME_TYPE); + var endVar = repeats; + if (!repeats.match(/^\w+$/) && !Blockly.isNumber(repeats)) { + var endVar = Blockly.Java.nameDB_.getDistinctName( + 'repeat_end', Blockly.Variables.NAME_TYPE); + code += 'var ' + endVar + ' = ' + repeats + ';\n'; + } + code += 'for ( int ' + loopVar + ' = 0; ' + + loopVar + ' < ' + endVar + '; ' + + loopVar + '++) {\n' + + branch + '}\n'; + return code; + }; + + Blockly.Java['controls_whileUntil'] = function (block: { getFieldValue: (arg0: string) => string; id: any; }) { + // Do while/until loop. + var until = block.getFieldValue('MODE') == 'UNTIL'; + var argument0 = Blockly.Java.valueToCode(block, 'BOOL', + until ? Blockly.Java.ORDER_LOGICAL_NOT : + Blockly.Java.ORDER_NONE) || 'false'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + if (until) { + return 'do{\n' + branch + '}while (' + argument0 + ');\n'; + } else { + return 'while (' + argument0 + ') {\n' + branch + '}\n'; + } + + }; + + Blockly.Java['controls_for'] = function (block: { getFieldValue: (arg0: string) => any; id: any; }) { + // For loop. + var variable0 = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument0 = Blockly.Java.valueToCode(block, 'FROM', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'TO', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var increment = Blockly.Java.valueToCode(block, 'BY', + Blockly.Java.ORDER_ASSIGNMENT) || '1'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var code; + if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) && + Blockly.isNumber(increment)) { + // All arguments are simple numbers. + var up = parseFloat(argument0) <= parseFloat(argument1); + code = 'for (int ' + variable0 + ' = ' + argument0 + '; ' + + variable0 + (up ? ' <= ' : ' >= ') + argument1 + '; ' + + variable0; + var step = Math.abs(parseFloat(increment)); + if (step == 1) { + code += up ? '++' : '--'; + } else { + code += (up ? ' += ' : ' -= ') + step; + } + code += ') {\n' + branch + '}\n'; + } else { + code = ''; + // Cache non-trivial values to variables to prevent repeated look-ups. + var startVar = argument0; + if (!argument0.match(/^\w+$/) && !Blockly.isNumber(argument0)) { + var startVar = Blockly.Java.nameDB_.getDistinctName( + variable0 + '_start', Blockly.Variables.NAME_TYPE); + code += 'var ' + startVar + ' = ' + argument0 + ';\n'; + } + var endVar = argument1; + if (!argument1.match(/^\w+$/) && !Blockly.isNumber(argument1)) { + var endVar = Blockly.Java.nameDB_.getDistinctName( + variable0 + '_end', Blockly.Variables.NAME_TYPE); + code += 'var ' + endVar + ' = ' + argument1 + ';\n'; + } + // Determine loop direction at start, in case one of the bounds + // changes during loop execution. + var incVar = Blockly.Java.nameDB_.getDistinctName( + variable0 + '_inc', Blockly.Variables.NAME_TYPE); + code += 'var ' + incVar + ' = '; + if (Blockly.isNumber(increment)) { + code += Math.abs(increment) + ';\n'; + } else { + code += 'Math.abs(' + increment + ');\n'; + } + code += 'if (' + startVar + ' > ' + endVar + ') {\n'; + code += Blockly.Java.INDENT + incVar + ' = -' + incVar + ';\n'; + code += '}\n'; + code += 'for (' + variable0 + ' = ' + startVar + ';\n' + + ' ' + incVar + ' >= 0 ? ' + + variable0 + ' <= ' + endVar + ' : ' + + variable0 + ' >= ' + endVar + ';\n' + + ' ' + variable0 + ' += ' + incVar + ') {\n' + + branch + '}\n'; + } + return code; + }; + + Blockly.Java['controls_forEach'] = function (block: { getFieldValue: (arg0: string) => any; id: any; }) { + // For each loop. + var variable0 = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument0 = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_ASSIGNMENT) || '[]'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var indexVar = Blockly.Java.nameDB_.getDistinctName( + variable0 + '_index', Blockly.Variables.NAME_TYPE); + branch = Blockly.Java.INDENT + variable0 + ' = ' + + argument0 + '[' + indexVar + '];\n' + branch; + var code = 'for (var ' + indexVar + ' in ' + argument0 + ') {\n' + + branch + '}\n'; + return code; + }; + + Blockly.Java['controls_flow_statements'] = function (block: { getFieldValue: (arg0: string) => any; }) { + // Flow statements: continue, break. + switch (block.getFieldValue('FLOW')) { + case 'BREAK': + return 'break;\n'; + case 'CONTINUE': + return 'continue;\n'; + } + throw 'Unknown flow statement.'; + }; + + + + Blockly.Java['controls_repeat'] = function (block: { getFieldValue: (arg0: string) => any; id: any; }) { + // Repeat n times (internal number). + var repeats = Number(block.getFieldValue('TIMES')); + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var loopVar = Blockly.Java.nameDB_.getDistinctName( + 'count', Blockly.Variables.NAME_TYPE); + var code = 'for (var ' + loopVar + ' = 0; ' + + loopVar + ' < ' + repeats + '; ' + + loopVar + '++) {\n' + + branch + '}\n'; + return code; + }; + + Blockly.Java['controls_repeat_ext'] = function (block: { id: any; }) { + // Repeat n times (external number). + var repeats = Blockly.Java.valueToCode(block, 'TIMES', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var code = ''; + var loopVar = Blockly.Java.nameDB_.getDistinctName( + 'count', Blockly.Variables.NAME_TYPE); + var endVar = repeats; + if (!repeats.match(/^\w+$/) && !Blockly.isNumber(repeats)) { + var endVar = Blockly.Java.nameDB_.getDistinctName( + 'repeat_end', Blockly.Variables.NAME_TYPE); + code += 'var ' + endVar + ' = ' + repeats + ';\n'; + } + code += 'for ( int ' + loopVar + ' = 0; ' + + loopVar + ' < ' + endVar + '; ' + + loopVar + '++) {\n' + + branch + '}\n'; + return code; + }; + + Blockly.Java['controls_whileUntil'] = function (block: { getFieldValue: (arg0: string) => string; id: any; }) { + // Do while/until loop. + var until = block.getFieldValue('MODE') == 'UNTIL'; + var argument0 = Blockly.Java.valueToCode(block, 'BOOL', + until ? Blockly.Java.ORDER_LOGICAL_NOT : + Blockly.Java.ORDER_NONE) || 'false'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + if (until) { + return 'do{\n' + branch + '}while (' + argument0 + ');\n'; + } else { + return 'while (' + argument0 + ') {\n' + branch + '}\n'; + } + + }; + + Blockly.Java['controls_for'] = function (block: { getFieldValue: (arg0: string) => any; id: any; }) { + // For loop. + var variable0 = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument0 = Blockly.Java.valueToCode(block, 'FROM', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'TO', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var increment = Blockly.Java.valueToCode(block, 'BY', + Blockly.Java.ORDER_ASSIGNMENT) || '1'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var code; + if (Blockly.isNumber(argument0) && Blockly.isNumber(argument1) && + Blockly.isNumber(increment)) { + // All arguments are simple numbers. + var up = parseFloat(argument0) <= parseFloat(argument1); + code = 'for (int ' + variable0 + ' = ' + argument0 + '; ' + + variable0 + (up ? ' <= ' : ' >= ') + argument1 + '; ' + + variable0; + var step = Math.abs(parseFloat(increment)); + if (step == 1) { + code += up ? '++' : '--'; + } else { + code += (up ? ' += ' : ' -= ') + step; + } + code += ') {\n' + branch + '}\n'; + } else { + code = ''; + // Cache non-trivial values to variables to prevent repeated look-ups. + var startVar = argument0; + if (!argument0.match(/^\w+$/) && !Blockly.isNumber(argument0)) { + var startVar = Blockly.Java.nameDB_.getDistinctName( + variable0 + '_start', Blockly.Variables.NAME_TYPE); + code += 'var ' + startVar + ' = ' + argument0 + ';\n'; + } + var endVar = argument1; + if (!argument1.match(/^\w+$/) && !Blockly.isNumber(argument1)) { + var endVar = Blockly.Java.nameDB_.getDistinctName( + variable0 + '_end', Blockly.Variables.NAME_TYPE); + code += 'var ' + endVar + ' = ' + argument1 + ';\n'; + } + // Determine loop direction at start, in case one of the bounds + // changes during loop execution. + var incVar = Blockly.Java.nameDB_.getDistinctName( + variable0 + '_inc', Blockly.Variables.NAME_TYPE); + code += 'var ' + incVar + ' = '; + if (Blockly.isNumber(increment)) { + code += Math.abs(increment) + ';\n'; + } else { + code += 'Math.abs(' + increment + ');\n'; + } + code += 'if (' + startVar + ' > ' + endVar + ') {\n'; + code += Blockly.Java.INDENT + incVar + ' = -' + incVar + ';\n'; + code += '}\n'; + code += 'for (' + variable0 + ' = ' + startVar + ';\n' + + ' ' + incVar + ' >= 0 ? ' + + variable0 + ' <= ' + endVar + ' : ' + + variable0 + ' >= ' + endVar + ';\n' + + ' ' + variable0 + ' += ' + incVar + ') {\n' + + branch + '}\n'; + } + return code; + }; + + Blockly.Java['controls_forEach'] = function (block: { getFieldValue: (arg0: string) => any; id: any; }) { + // For each loop. + var variable0 = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument0 = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_ASSIGNMENT) || '[]'; + var branch = Blockly.Java.statementToCode(block, 'DO'); + branch = Blockly.Java.addLoopTrap(branch, block.id); + var indexVar = Blockly.Java.nameDB_.getDistinctName( + variable0 + '_index', Blockly.Variables.NAME_TYPE); + branch = Blockly.Java.INDENT + variable0 + ' = ' + + argument0 + '[' + indexVar + '];\n' + branch; + var code = 'for (var ' + indexVar + ' in ' + argument0 + ') {\n' + + branch + '}\n'; + return code; + }; + + Blockly.Java['controls_flow_statements'] = function (block: { getFieldValue: (arg0: string) => any; }) { + // Flow statements: continue, break. + switch (block.getFieldValue('FLOW')) { + case 'BREAK': + return 'break;\n'; + case 'CONTINUE': + return 'continue;\n'; + } + throw 'Unknown flow statement.'; + }; + + + + Blockly.Java['text'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Text value. + var code = Blockly.Java.quote_(block.getFieldValue('TEXT')); + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + Blockly.Java['text_join'] = function (block: { itemCount_: number; }) { + // Create a string made up of any number of elements of any type. + var code; + if (block.itemCount_ == 0) { + return ['\'\'', Blockly.Java.ORDER_ATOMIC]; + } else if (block.itemCount_ == 1) { + var argument0 = Blockly.Java.valueToCode(block, 'ADD0', + Blockly.Java.ORDER_NONE) || '""'; + code = argument0; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } else if (block.itemCount_ == 2) { + var argument0 = Blockly.Java.valueToCode(block, 'ADD0', + Blockly.Java.ORDER_NONE) || '""'; + var argument1 = Blockly.Java.valueToCode(block, 'ADD1', + Blockly.Java.ORDER_NONE) || '""'; + code = argument0 + '+' + argument1 ; + return [code, Blockly.Java.ORDER_ADDITION]; + } else { + code = new Array(block.itemCount_); + for (var n = 0; n < block.itemCount_; n++) { + code[n] = Blockly.Java.valueToCode(block, 'ADD' + n, + Blockly.Java.ORDER_COMMA) || '""'; + } + //code = '[' + code.join(',') + '].join("")'; + code ='String.join("", ' + code.join(',') + ')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } + }; + + Blockly.Java['text_append'] = function (block: { getFieldValue: (arg0: string) => any; }) { + // Append to a variable in place. + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument0 = Blockly.Java.valueToCode(block, 'TEXT', + Blockly.Java.ORDER_NONE) || '""'; + return varName + ' = ' + varName + ' + ' + argument0 + ';\n'; + }; + + Blockly.Java['text_length'] = function (block: any) { + // String length. + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_FUNCTION_CALL) || '""'; + return [argument0 + '.length', Blockly.Java.ORDER_MEMBER]; + }; + + Blockly.Java['text_isEmpty'] = function (block: any) { + // Is the string null? + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_MEMBER) || '""'; + return ['!' + argument0, Blockly.Java.ORDER_LOGICAL_NOT]; + }; + + Blockly.Java['text_indexOf'] = function (block: { getFieldValue: (arg0: string) => string; }) { + // Search the text for a substring. + var operator = block.getFieldValue('END') == 'FIRST' ? + 'indexOf' : 'lastIndexOf'; + var argument0 = Blockly.Java.valueToCode(block, 'FIND', + Blockly.Java.ORDER_NONE) || '""'; + var argument1 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_MEMBER) || '""'; + var code = argument1 + '.' + operator + '(' + argument0 + ') + 1'; + return [code, Blockly.Java.ORDER_MEMBER]; + }; + + Blockly.Java['text_charAt'] = function (block: { getFieldValue: (arg0: string) => string; }) { + // Get letter at index. + // Note: Until January 2013 this block did not have the WHERE input. + var where = block.getFieldValue('WHERE') || 'FROM_START'; + var at = Blockly.Java.valueToCode(block, 'AT', + Blockly.Java.ORDER_UNARY_NEGATION) || '1'; + var text = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_MEMBER) || '""'; + switch (where) { + case 'FIRST': + var code = text + '.charAt(0)'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + case 'LAST': + var code = text + '.slice(-1)'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + case 'FROM_START': + // Blockly uses one-based indicies. + if (Blockly.isNumber(at)) { + // If the index is a naked number, decrement it right now. + at = parseFloat(at) - 1; + } else { + // If the index is dynamic, decrement it in code. + at += ' - 1'; + } + var code = text + '.charAt(' + at + ')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + case 'FROM_END': + var code = text + '.slice(-' + at + ').charAt(0)'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + case 'RANDOM': + var functionName = Blockly.Java.provideFunction_( + 'text_random_letter', + ['function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(text) {', + ' var x = Math.floor(Math.random() * text.length);', + ' return text[x];', + '}']); + code = functionName + '(' + text + ')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } + throw 'Unhandled option (text_charAt).'; + }; + + Blockly.Java['text_getSubstring'] = function (block: { getFieldValue: (arg0: string) => any; }) { + // Get substring. + var text = Blockly.Java.valueToCode(block, 'STRING', + Blockly.Java.ORDER_MEMBER) || '""'; + var where1 = block.getFieldValue('WHERE1'); + var where2 = block.getFieldValue('WHERE2'); + var at1 = Blockly.Java.valueToCode(block, 'AT1', + Blockly.Java.ORDER_NONE) || '1'; + var at2 = Blockly.Java.valueToCode(block, 'AT2', + Blockly.Java.ORDER_NONE) || '1'; + if (where1 == 'FIRST' && where2 == 'LAST') { + var code = text; + } else { + var functionName = Blockly.Java.provideFunction_( + 'text_get_substring', + ['function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(text, where1, at1, where2, at2) {', + ' function getAt(where, at) {', + ' if (where == \'FROM_START\') {', + ' at--;', + ' } else if (where == \'FROM_END\') {', + ' at = text.length - at;', + ' } else if (where == \'FIRST\') {', + ' at = 0;', + ' } else if (where == \'LAST\') {', + ' at = text.length - 1;', + ' } else {', + ' throw \'Unhandled option (text_getSubstring).\';', + ' }', + ' return at;', + ' }', + ' at1 = getAt(where1, at1);', + ' at2 = getAt(where2, at2) + 1;', + ' return text.slice(at1, at2);', + '}']); + var code: any = functionName + '(' + text + ', \'' + + where1 + '\', ' + at1 + ', \'' + where2 + '\', ' + at2 + ')'; + } + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + Blockly.Java['text_changeCase'] = function (block: { getFieldValue: (arg0: string) => string | number; }) { + // Change capitalization. + var OPERATORS: { [index: string]: string } = { + 'UPPERCASE': '.toUpperCase()', + 'LOWERCASE': '.toLowerCase()', + 'TITLECASE': '' + }; + var operator = OPERATORS[block.getFieldValue('CASE')]; + var code; + if (operator) { + // Upper and lower case are functions built into Java. + var argument0 = Blockly.Java.valueToCode(block, 'TEXT', + Blockly.Java.ORDER_MEMBER) || '""'; + code = argument0 + operator; + } else { + // Title case is not a native Java function. Define one. + var functionName = Blockly.Java.provideFunction_( + 'text_toTitleCase', + ['function ' + + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + '(str) {', + ' return str.replace(/\\S+/g,', + ' function(txt) {return txt[0].toUpperCase() + ' + + 'txt.substring(1).toLowerCase();});', + '}']); + var argument0 = Blockly.Java.valueToCode(block, 'TEXT', + Blockly.Java.ORDER_NONE) || '\'\''; + code = functionName + '(' + argument0 + ')'; + } + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + Blockly.Java['text_trim'] = function (block: { getFieldValue: (arg0: string) => string | number; }) { + // Trim spaces. + var OPERATORS: { [index: string]: string } = { + 'LEFT': '.trimLeft()', + 'RIGHT': '.trimRight()', + 'BOTH': '.trim()' + }; + var operator = OPERATORS[block.getFieldValue('MODE')]; + var argument0 = Blockly.Java.valueToCode(block, 'TEXT', + Blockly.Java.ORDER_MEMBER) || '""'; + return [argument0 + operator, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + Blockly.Java['text_print'] = function (block: any) { + // Print statement. + var argument0 = Blockly.Java.valueToCode(block, 'TEXT', + Blockly.Java.ORDER_NONE) || '""'; + return 'System.out.println ( ' + argument0 + ' );\n'; + }; + Blockly.Java['text_print_console'] = function (block: any) { + // Print statement. + var argument0 = Blockly.Java.valueToCode(block, 'TEXT', + Blockly.Java.ORDER_NONE) || '""'; + return 'System.out.println(' + argument0 + ');\n'; + }; + + Blockly.Java['text_prompt'] = function (block: { getFieldValue: (arg0: string) => string; }) { + // Prompt function (internal message). + var msg = Blockly.Java.quote_(block.getFieldValue('TEXT')); + var code = 'window.prompt(' + msg + ')'; + var toNumber = block.getFieldValue('TYPE') == 'NUMBER'; + if (toNumber) { + code = 'parseFloat(' + code + ')'; + } + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + Blockly.Java['text_prompt_ext'] = function (block: { getFieldValue: (arg0: string) => string; }) { + // Prompt function (external message). + var msg = Blockly.Java.valueToCode(block, 'TEXT', + Blockly.Java.ORDER_NONE) || '""'; + var code = 'window.prompt(' + msg + ')'; + var toNumber = block.getFieldValue('TYPE') == 'NUMBER'; + if (toNumber) { + code = 'parseFloat(' + code + ')'; + } + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + Blockly.Java['text'] = function (block: any) { + // Prompt function (external message). + var msg = Blockly.Java.valueToCode(block, 'TEXT', + Blockly.Java.ORDER_NONE) || '""'; + var code = msg; + + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + + Blockly.Java['variables_get'] = function (block: { getFieldValue: (arg0: string) => any; }) { + // Variable getter. + var code = Blockly.Java.nameDB_.getName(block.getFieldValue('VAR'), + Blockly.Variables.NAME_TYPE); + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['variables_set'] = function (block: { getFieldValue: (arg0: string) => any; }) { + // Variable setter. + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + return varName + ' = ' + argument0 + ';\n'; + }; + + + Blockly.Java['math_number'] = function(block: { getFieldValue: (arg0: string) => string; }) { + // Numeric value. + var code = parseFloat(block.getFieldValue('NUM')); + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['math_arithmetic'] = function(block: { getFieldValue: (arg0: string) => string | number; }) { + // Basic arithmetic operators, and power. + var OPERATORS: { [index: string]: any } = { + 'ADD': [' + ', Blockly.Java.ORDER_ADDITION], + 'MINUS': [' - ', Blockly.Java.ORDER_SUBTRACTION], + 'MULTIPLY': [' * ', Blockly.Java.ORDER_MULTIPLICATION], + 'DIVIDE': [' / ', Blockly.Java.ORDER_DIVISION], + 'POWER': [null, Blockly.Java.ORDER_COMMA] // Handle power separately. + }; + var tuple = OPERATORS[block.getFieldValue('OP')]; + var operator = tuple[0]; + var order = tuple[1]; + var argument0 = Blockly.Java.valueToCode(block, 'A', order) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'B', order) || '0'; + var code; + // Power in Java requires a special case since it has no operator. + if (!operator) { + code = 'Math.pow(' + argument0 + ', ' + argument1 + ')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } + code = argument0 + operator + argument1; + return [code, order]; + }; + + Blockly.Java['math_single'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Math operators with single operand. + var operator = block.getFieldValue('OP'); + var code; + var arg; + if (operator == 'NEG') { + // Negation is a special case given its different operator precedence. + arg = Blockly.Java.valueToCode(block, 'NUM', + Blockly.Java.ORDER_UNARY_NEGATION) || '0'; + if (arg[0] == '-') { + // --3 is not legal in JS. + arg = ' ' + arg; + } + code = '-' + arg; + return [code, Blockly.Java.ORDER_UNARY_NEGATION]; + } + if (operator == 'SIN' || operator == 'COS' || operator == 'TAN') { + arg = Blockly.Java.valueToCode(block, 'NUM', + Blockly.Java.ORDER_DIVISION) || '0'; + } else { + arg = Blockly.Java.valueToCode(block, 'NUM', + Blockly.Java.ORDER_NONE) || '0'; + } + // First, handle cases which generate values that don't need parentheses + // wrapping the code. + switch (operator) { + case 'ABS': + code = 'Math.abs(' + arg + ')'; + break; + case 'ROOT': + code = 'Math.sqrt(' + arg + ')'; + break; + case 'LN': + code = 'Math.log(' + arg + ')'; + break; + case 'EXP': + code = 'Math.exp(' + arg + ')'; + break; + case 'POW10': + code = 'Math.pow(10,' + arg + ')'; + break; + case 'ROUND': + code = 'Math.round(' + arg + ')'; + break; + case 'ROUNDUP': + code = 'Math.ceil(' + arg + ')'; + break; + case 'ROUNDDOWN': + code = 'Math.floor(' + arg + ')'; + break; + case 'SIN': + code = 'Math.sin(' + arg + ' / 180 * Math.PI)'; + break; + case 'COS': + code = 'Math.cos(' + arg + ' / 180 * Math.PI)'; + break; + case 'TAN': + code = 'Math.tan(' + arg + ' / 180 * Math.PI)'; + break; + } + if (code) { + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } + // Second, handle cases which generate values that may need parentheses + // wrapping the code. + switch (operator) { + case 'LOG10': + code = 'Math.log(' + arg + ') / Math.log(10)'; + break; + case 'ASIN': + code = 'Math.asin(' + arg + ') / Math.PI * 180'; + break; + case 'ACOS': + code = 'Math.acos(' + arg + ') / Math.PI * 180'; + break; + case 'ATAN': + code = 'Math.atan(' + arg + ') / Math.PI * 180'; + break; + default: + throw 'Unknown math operator: ' + operator; + } + return [code, Blockly.Java.ORDER_DIVISION]; + }; + + Blockly.Java['math_constant'] = function(block: { getFieldValue: (arg0: string) => string | number; }) { + // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY. + var CONSTANTS: { [index: string]: any } = { + 'PI': ['Math.PI', Blockly.Java.ORDER_MEMBER], + 'E': ['Math.E', Blockly.Java.ORDER_MEMBER], + 'GOLDEN_RATIO': + ['(1 + Math.sqrt(5)) / 2', Blockly.Java.ORDER_DIVISION], + 'SQRT2': ['Math.SQRT2', Blockly.Java.ORDER_MEMBER], + 'SQRT1_2': ['Math.SQRT1_2', Blockly.Java.ORDER_MEMBER], + 'INFINITY': ['Infinity', Blockly.Java.ORDER_ATOMIC] + }; + return CONSTANTS[block.getFieldValue('CONSTANT')]; + }; + + Blockly.Java['math_number_property'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Check if a number is even, odd, prime, whole, positive, or negative + // or if it is divisible by certain number. Returns true or false. + var number_to_check = Blockly.Java.valueToCode(block, 'NUMBER_TO_CHECK', + Blockly.Java.ORDER_MODULUS) || '0'; + var dropdown_property = block.getFieldValue('PROPERTY'); + var code; + if (dropdown_property == 'PRIME') { + // Prime is a special case as it is not a one-liner test. + var functionName = Blockly.Java.provideFunction_( + 'math_isPrime', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + '(n) {', + ' // https://en.wikipedia.org/wiki/Primality_test#Naive_methods', + ' if (n == 2 || n == 3) {', + ' return true;', + ' }', + ' // False if n is NaN, negative, is 1, or not whole.', + ' // And false if n is divisible by 2 or 3.', + ' if (isNaN(n) || n <= 1 || n % 1 != 0 || n % 2 == 0 ||' + + ' n % 3 == 0) {', + ' return false;', + ' }', + ' // Check all the numbers of form 6k +/- 1, up to sqrt(n).', + ' for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {', + ' if (n % (x - 1) == 0 || n % (x + 1) == 0) {', + ' return false;', + ' }', + ' }', + ' return true;', + '}']); + code = functionName + '(' + number_to_check + ')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } + switch (dropdown_property) { + case 'EVEN': + code = number_to_check + ' % 2 == 0'; + break; + case 'ODD': + code = number_to_check + ' % 2 == 1'; + break; + case 'WHOLE': + code = number_to_check + ' % 1 == 0'; + break; + case 'POSITIVE': + code = number_to_check + ' > 0'; + break; + case 'NEGATIVE': + code = number_to_check + ' < 0'; + break; + case 'DIVISIBLE_BY': + var divisor = Blockly.Java.valueToCode(block, 'DIVISOR', + Blockly.Java.ORDER_MODULUS) || '0'; + code = number_to_check + ' % ' + divisor + ' == 0'; + break; + } + return [code, Blockly.Java.ORDER_EQUALITY]; + }; + + Blockly.Java['math_change'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Add to a variable in place. + var argument0 = Blockly.Java.valueToCode(block, 'DELTA', + Blockly.Java.ORDER_ADDITION) || '0'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + return varName + ' = (typeof ' + varName + ' == \'number\' ? ' + varName + + ' : 0) + ' + argument0 + ';\n'; + }; + + // Rounding functions have a single operand. + Blockly.Java['math_round'] = Blockly.Java['math_single']; + // Trigonometry functions have a single operand. + Blockly.Java['math_trig'] = Blockly.Java['math_single']; + + Blockly.Java['math_on_list'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Math functions for lists. + var func = block.getFieldValue('OP'); + var list, code; + switch (func) { + case 'SUM': + list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_MEMBER) || '[]'; + code = list + '.reduce(function(x, y) {return x + y;})'; + break; + case 'MIN': + list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_COMMA) || '[]'; + code = 'Math.min.apply(null, ' + list + ')'; + break; + case 'MAX': + list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_COMMA) || '[]'; + code = 'Math.max.apply(null, ' + list + ')'; + break; + case 'AVERAGE': + // math_median([null,null,1,3]) == 2.0. + var functionName = Blockly.Java.provideFunction_( + 'math_mean', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(myList) {', + ' return myList.reduce(function(x, y) {return x + y;}) / ' + + 'myList.length;', + '}']); + list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + case 'MEDIAN': + // math_median([null,null,1,3]) == 2.0. + var functionName = Blockly.Java.provideFunction_( + 'math_median', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(myList) {', + ' var localList = myList.filter(function (x) ' + + '{return typeof x == \'number\';});', + ' if (!localList.length) return null;', + ' localList.sort(function(a, b) {return b - a;});', + ' if (localList.length % 2 == 0) {', + ' return (localList[localList.length / 2 - 1] + ' + + 'localList[localList.length / 2]) / 2;', + ' } else {', + ' return localList[(localList.length - 1) / 2];', + ' }', + '}']); + list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + case 'MODE': + // As a list of numbers can contain more than one mode, + // the returned result is provided as an array. + // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]. + var functionName = Blockly.Java.provideFunction_( + 'math_modes', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(values) {', + ' var modes = [];', + ' var counts = [];', + ' var maxCount = 0;', + ' for (var i = 0; i < values.length; i++) {', + ' var value = values[i];', + ' var found = false;', + ' var thisCount;', + ' for (var j = 0; j < counts.length; j++) {', + ' if (counts[j][0] === value) {', + ' thisCount = ++counts[j][1];', + ' found = true;', + ' break;', + ' }', + ' }', + ' if (!found) {', + ' counts.push([value, 1]);', + ' thisCount = 1;', + ' }', + ' maxCount = Math.max(thisCount, maxCount);', + ' }', + ' for (var j = 0; j < counts.length; j++) {', + ' if (counts[j][1] == maxCount) {', + ' modes.push(counts[j][0]);', + ' }', + ' }', + ' return modes;', + '}']); + list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + case 'STD_DEV': + var functionName = Blockly.Java.provideFunction_( + 'math_standard_deviation', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(numbers) {', + ' var n = numbers.length;', + ' if (!n) return null;', + ' var mean = numbers.reduce(function(x, y) {return x + y;}) / n;', + ' var variance = 0;', + ' for (var j = 0; j < n; j++) {', + ' variance += Math.pow(numbers[j] - mean, 2);', + ' }', + ' variance = variance / n;', + ' return Math.sqrt(variance);', + '}']); + list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + case 'RANDOM': + var functionName = Blockly.Java.provideFunction_( + 'math_random_list', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(list) {', + ' var x = Math.floor(Math.random() * list.length);', + ' return list[x];', + '}']); + list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_NONE) || '[]'; + code = functionName + '(' + list + ')'; + break; + default: + throw 'Unknown operator: ' + func; + } + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + Blockly.Java['math_modulo'] = function(block: any) { + // Remainder computation. + var argument0 = Blockly.Java.valueToCode(block, 'DIVIDEND', + Blockly.Java.ORDER_MODULUS) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'DIVISOR', + Blockly.Java.ORDER_MODULUS) || '0'; + var code = argument0 + ' % ' + argument1; + return [code, Blockly.Java.ORDER_MODULUS]; + }; + + Blockly.Java['math_constrain'] = function(block: any) { + // Constrain a number between two limits. + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_COMMA) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'LOW', + Blockly.Java.ORDER_COMMA) || '0'; + var argument2 = Blockly.Java.valueToCode(block, 'HIGH', + Blockly.Java.ORDER_COMMA) || 'Infinity'; + var code = 'Math.min(Math.max(' + argument0 + ', ' + argument1 + '), ' + + argument2 + ')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + Blockly.Java['math_random_int'] = function(block: any) { + // Random integer between [X] and [Y]. + var argument0 = Blockly.Java.valueToCode(block, 'FROM', + Blockly.Java.ORDER_COMMA) || '0'; + var argument1 = Blockly.Java.valueToCode(block, 'TO', + Blockly.Java.ORDER_COMMA) || '0'; + var functionName = Blockly.Java.provideFunction_( + 'math_random_int', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(a, b) {', + ' if (a > b) {', + ' // Swap a and b to ensure a is smaller.', + ' var c = a;', + ' a = b;', + ' b = c;', + ' }', + ' return Math.floor(Math.random() * (b - a + 1) + a);', + '}']); + var code = functionName + '(' + argument0 + ', ' + argument1 + ')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + Blockly.Java['math_random_float'] = function(block: any) { + // Random fraction between 0 and 1. + return ['Math.random()', Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + +Blockly.Java['lists_create_empty'] = function(block: any) { + // Create an empty list. + return ['[]', Blockly.Java.ORDER_ATOMIC]; +}; + +Blockly.Java['lists_create_with'] = function(block: { itemCount_: number; }) { + // Create a list with any number of elements of any type. + var code = new Array(block.itemCount_); + for (var n = 0; n < block.itemCount_; n++) { + code[n] = Blockly.Java.valueToCode(block, 'ADD' + n, + Blockly.Java.ORDER_COMMA) || 'null'; + } + var codes = '[' + code.join(', ') + ']'; + return [codes, Blockly.Java.ORDER_ATOMIC]; +}; + +Blockly.Java['lists_repeat'] = function(block: any) { + // Create a list with one element repeated. + var functionName = Blockly.Java.provideFunction_( + 'lists_repeat', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(value, n) {', + ' var array = [];', + ' for (var i = 0; i < n; i++) {', + ' array[i] = value;', + ' }', + ' return array;', + '}']); + var argument0 = Blockly.Java.valueToCode(block, 'ITEM', + Blockly.Java.ORDER_COMMA) || 'null'; + var argument1 = Blockly.Java.valueToCode(block, 'NUM', + Blockly.Java.ORDER_COMMA) || '0'; + var code = functionName + '(' + argument0 + ', ' + argument1 + ')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; +}; + +Blockly.Java['lists_length'] = function(block: any) { + // List length. + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_FUNCTION_CALL) || '[]'; + return [argument0 + '.length', Blockly.Java.ORDER_MEMBER]; +}; + +Blockly.Java['lists_isEmpty'] = function(block: any) { + // Is the list empty? + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_MEMBER) || '[]'; + return ['!' + argument0 + '.length', Blockly.Java.ORDER_LOGICAL_NOT]; +}; + +Blockly.Java['lists_indexOf'] = function(block: { getFieldValue: (arg0: string) => string; }) { + // Find an item in the list. + var operator = block.getFieldValue('END') == 'FIRST' ? + 'indexOf' : 'lastIndexOf'; + var argument0 = Blockly.Java.valueToCode(block, 'FIND', + Blockly.Java.ORDER_NONE) || '\'\''; + var argument1 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_MEMBER) || '[]'; + var code = argument1 + '.' + operator + '(' + argument0 + ') + 1'; + return [code, Blockly.Java.ORDER_MEMBER]; +}; + +Blockly.Java['lists_getIndex'] = function(block: { getFieldValue: (arg0: string) => string; }) { + // Get element at index. + // Note: Until January 2013 this block did not have MODE or WHERE inputs. + var mode = block.getFieldValue('MODE') || 'GET'; + var where = block.getFieldValue('WHERE') || 'FROM_START'; + var at = Blockly.Java.valueToCode(block, 'AT', + Blockly.Java.ORDER_UNARY_NEGATION) || '1'; + var list = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_MEMBER) || '[]'; + + if (where == 'FIRST') { + if (mode == 'GET') { + var code = list + '[0]'; + return [code, Blockly.Java.ORDER_MEMBER]; + } else if (mode == 'GET_REMOVE') { + var code = list + '.shift()'; + return [code, Blockly.Java.ORDER_MEMBER]; + } else if (mode == 'REMOVE') { + return list + '.shift();\n'; + } + } else if (where == 'LAST') { + if (mode == 'GET') { + var code = list + '.slice(-1)[0]'; + return [code, Blockly.Java.ORDER_MEMBER]; + } else if (mode == 'GET_REMOVE') { + var code = list + '.pop()'; + return [code, Blockly.Java.ORDER_MEMBER]; + } else if (mode == 'REMOVE') { + return list + '.pop();\n'; + } + } else if (where == 'FROM_START') { + // Blockly uses one-based indicies. + if (Blockly.isNumber(at)) { + // If the index is a naked number, decrement it right now. + at = parseFloat(at) - 1; + } else { + // If the index is dynamic, decrement it in code. + at += ' - 1'; + } + if (mode == 'GET') { + var code = list + '[' + at + ']'; + return [code, Blockly.Java.ORDER_MEMBER]; + } else if (mode == 'GET_REMOVE') { + var code = list + '.splice(' + at + ', 1)[0]'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } else if (mode == 'REMOVE') { + return list + '.splice(' + at + ', 1);\n'; + } + } else if (where == 'FROM_END') { + if (mode == 'GET') { + var code = list + '.slice(-' + at + ')[0]'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } else if (mode == 'GET_REMOVE' || mode == 'REMOVE') { + var functionName = Blockly.Java.provideFunction_( + 'lists_remove_from_end', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(list, x) {', + ' x = list.length - x;', + ' return list.splice(x, 1)[0];', + '}']); + code = functionName + '(' + list + ', ' + at + ')'; + if (mode == 'GET_REMOVE') { + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } else if (mode == 'REMOVE') { + return code + ';\n'; + } + } + } else if (where == 'RANDOM') { + var functionName = Blockly.Java.provideFunction_( + 'lists_get_random_item', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(list, remove) {', + ' var x = Math.floor(Math.random() * list.length);', + ' if (remove) {', + ' return list.splice(x, 1)[0];', + ' } else {', + ' return list[x];', + ' }', + '}']); + code = functionName + '(' + list + ', ' + (mode != 'GET') + ')'; + if (mode == 'GET' || mode == 'GET_REMOVE') { + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + } else if (mode == 'REMOVE') { + return code + ';\n'; + } + } + throw 'Unhandled combination (lists_getIndex).'; +}; + +Blockly.Java['lists_setIndex'] = function(block: { getFieldValue: (arg0: string) => string; }) { + // Set element at index. + // Note: Until February 2013 this block did not have MODE or WHERE inputs. + var list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_MEMBER) || '[]'; + var mode = block.getFieldValue('MODE') || 'GET'; + var where = block.getFieldValue('WHERE') || 'FROM_START'; + var at = Blockly.Java.valueToCode(block, 'AT', + Blockly.Java.ORDER_NONE) || '1'; + var value = Blockly.Java.valueToCode(block, 'TO', + Blockly.Java.ORDER_ASSIGNMENT) || 'null'; + // Cache non-trivial values to variables to prevent repeated look-ups. + // Closure, which accesses and modifies 'list'. + function cacheList() { + if (list.match(/^\w+$/)) { + return ''; + } + var listVar = Blockly.Java.nameDB_.getDistinctName( + 'tmp_list', Blockly.Variables.NAME_TYPE); + var code = 'var ' + listVar + ' = ' + list + ';\n'; + list = listVar; + return code; + } + if (where == 'FIRST') { + if (mode == 'SET') { + return list + '[0] = ' + value + ';\n'; + } else if (mode == 'INSERT') { + return list + '.unshift(' + value + ');\n'; + } + } else if (where == 'LAST') { + if (mode == 'SET') { + var code = cacheList(); + code += list + '[' + list + '.length - 1] = ' + value + ';\n'; + return code; + } else if (mode == 'INSERT') { + return list + '.push(' + value + ');\n'; + } + } else if (where == 'FROM_START') { + // Blockly uses one-based indicies. + if (Blockly.isNumber(at)) { + // If the index is a naked number, decrement it right now. + at = parseFloat(at) - 1; + } else { + // If the index is dynamic, decrement it in code. + at += ' - 1'; + } + if (mode == 'SET') { + return list + '[' + at + '] = ' + value + ';\n'; + } else if (mode == 'INSERT') { + return list + '.splice(' + at + ', 0, ' + value + ');\n'; + } + } else if (where == 'FROM_END') { + var code = cacheList(); + if (mode == 'SET') { + code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\n'; + return code; + } else if (mode == 'INSERT') { + code += list + '.splice(' + list + '.length - ' + at + ', 0, ' + value + + ');\n'; + return code; + } + } else if (where == 'RANDOM') { + var code = cacheList(); + var xVar = Blockly.Java.nameDB_.getDistinctName( + 'tmp_x', Blockly.Variables.NAME_TYPE); + code += 'var ' + xVar + ' = Math.floor(Math.random() * ' + list + + '.length);\n'; + if (mode == 'SET') { + code += list + '[' + xVar + '] = ' + value + ';\n'; + return code; + } else if (mode == 'INSERT') { + code += list + '.splice(' + xVar + ', 0, ' + value + ');\n'; + return code; + } + } + throw 'Unhandled combination (lists_setIndex).'; +}; + +Blockly.Java['lists_getSublist'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Get sublist. + var list = Blockly.Java.valueToCode(block, 'LIST', + Blockly.Java.ORDER_MEMBER) || '[]'; + var where1 = block.getFieldValue('WHERE1'); + var where2 = block.getFieldValue('WHERE2'); + var at1 = Blockly.Java.valueToCode(block, 'AT1', + Blockly.Java.ORDER_NONE) || '1'; + var at2 = Blockly.Java.valueToCode(block, 'AT2', + Blockly.Java.ORDER_NONE) || '1'; + if (where1 == 'FIRST' && where2 == 'LAST') { + var code = list + '.concat()'; + } else { + var functionName = Blockly.Java.provideFunction_( + 'lists_get_sublist', + [ 'function ' + Blockly.Java.FUNCTION_NAME_PLACEHOLDER_ + + '(list, where1, at1, where2, at2) {', + ' function getAt(where, at) {', + ' if (where == \'FROM_START\') {', + ' at--;', + ' } else if (where == \'FROM_END\') {', + ' at = list.length - at;', + ' } else if (where == \'FIRST\') {', + ' at = 0;', + ' } else if (where == \'LAST\') {', + ' at = list.length - 1;', + ' } else {', + ' throw \'Unhandled option (lists_getSublist).\';', + ' }', + ' return at;', + ' }', + ' at1 = getAt(where1, at1);', + ' at2 = getAt(where2, at2) + 1;', + ' return list.slice(at1, at2);', + '}']); + var code = functionName + '(' + list + ', \'' + + where1 + '\', ' + at1 + ', \'' + where2 + '\', ' + at2 + ')'; + } + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; +}; + + + + + + + + + /** + block name: variable_get + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: variable getter + included in final version: YES + */ + Blockly.Java['variable_get'] = function(block: { getFieldValue: (arg0: string) => any; }) { + var code = Blockly.Java.nameDB_.getName(block.getFieldValue('VAR'), + Blockly.Variables.NAME_TYPE); + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + + + + + /** + block name: create_var + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: Variable maker + included in final version: YES + */ + Blockly.Java['create_var'] = function(block: { getFieldValue: (arg0: string) => any; getTitleValue: (arg0: string) => any; }) { + var value_const_value = Blockly.Java.valueToCode(block, 'const_value', Blockly.Java.ORDER_ASSIGNMENT); + var text_const__name = Blockly.Java.nameDB_.getName(block.getFieldValue('const__name'), Blockly.Variables.NAME_TYPE); + + var dropdown_const_type = block.getTitleValue('const_type'); + var code = dropdown_const_type + ' ' +text_const__name+'=' + value_const_value+';\n'; + + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + Blockly.Java['create_constant_arith'] = function(block: { getFieldValue: (arg0: string) => any; getTitleValue: (arg0: string) => any; }) { + var value_const_value = Blockly.Java.valueToCode(block, 'const_value', Blockly.Java.ORDER_ASSIGNMENT); + var text_const__name = Blockly.Java.nameDB_.getName( + block.getFieldValue('const__name'), Blockly.Variables.NAME_TYPE); + + var dropdown_const_type = block.getTitleValue('const_type'); + + var code = dropdown_const_type + ' ' +text_const__name+'=' + value_const_value+';\n'; + + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + + + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + Blockly.Java['get_int'] = function(block: { getFieldValue: (arg0: string) => any; }) { + var variable_name = Blockly.Java.nameDB_.getName(block.getFieldValue('NAME'), Blockly.Variables.NAME_TYPE); + var code = variable_name; + return [code, Blockly.Java.ORDER_FUNCTION_CALL];; + }; + + + + + /** + block name: arith_operation + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: arithmetic operations like addition substraction etc + included in final version: YES + */ + Blockly.Java['arith_operation'] = function(block: { getFieldValue: (arg0: string) => any; }) { + var value_op1 = Blockly.Java.valueToCode(block, 'op1', Blockly.Java.ORDER_ASSIGNMENT); + var value_op2 = Blockly.Java.valueToCode(block, 'op2', Blockly.Java.ORDER_ASSIGNMENT); + var dropdown_operation = block.getFieldValue('operation'); + + var code = value_op1 +" "+dropdown_operation+" "+value_op2; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + /** + block name: number + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: number definition + included in final version: YES + */ + Blockly.Java['number'] = function(block: { getTitleValue: (arg0: string) => any; }) { + var text_number = block.getTitleValue('number'); + var code = text_number; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + /** + block name: constant + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: pi and e numbers definition + included in final version: YES + */ + Blockly.Java['constant'] = function(block: { getTitleValue: (arg0: string) => any; }) { + var dropdown_name = block.getTitleValue('NAME'); + var code = 'Math.'+dropdown_name; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + /** + block name: abs + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: absolute value function + included in final version: YES + */ + Blockly.Java['abs'] = function(block: any) { + var value_name = Blockly.Java.valueToCode(block, 'NAME', Blockly.Java.ORDER_ASSIGNMENT); + var code = 'Math.abs('+value_name+")"; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + /** + block name: trigonometric + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: sin/cosine/tangent function + included in final version: YES + */ + Blockly.Java['trigonometric'] = function(block: { getTitleValue: (arg0: string) => any; }) { + var dropdown_operation = block.getTitleValue('operation'); + var angle_angle = block.getTitleValue('angle'); + var code = 'Math.'+dropdown_operation+'('+angle_angle+'*Math.PI/180)'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + /** + block name: logarithm + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: logarithm function, multiple base + included in final version: YES + */ + Blockly.Java['logarithm'] = function(block: any) { + var value_base = Blockly.Java.valueToCode(block, 'base', Blockly.Java.ORDER_ASSIGNMENT); + var value_op = Blockly.Java.valueToCode(block, 'op', Blockly.Java.ORDER_ASSIGNMENT); + var code = 'Math.log10('+value_op+')/Math.log10('+value_base+')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + /** + block name: pow + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: "power to" function + included in final version: YES + */ + Blockly.Java['pow'] = function(block: any) { + var value_base = Blockly.Java.valueToCode(block, 'base', Blockly.Java.ORDER_ASSIGNMENT); + var value_op = Blockly.Java.valueToCode(block, 'op', Blockly.Java.ORDER_ASSIGNMENT); + var code = 'Math.pow('+value_base+', '+value_op+')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + /** + block name: random + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: random number getter + included in final version: YES + */ + Blockly.Java['random'] = function(block: any) { + var value_op1 = Blockly.Java.valueToCode(block, 'op1', Blockly.Java.ORDER_ASSIGNMENT); + var value_op2 = Blockly.Java.valueToCode(block, 'op2', Blockly.Java.ORDER_ASSIGNMENT); + var low; + var high; + if(value_op1>value_op2){ + high = value_op1; + low = value_op2; + } + else { + high = value_op2; + low = value_op1; + + } + var code = 'Math.random('+high+'-'+low+')+'+low; + + + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + + /** + block name: create_constant_boolean + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + + Blockly.Java['create_constant_boolean'] = function(block: { getTitleValue: (arg0: string) => any; }) { + var value_name = Blockly.Java.valueToCode(block, 'NAME', Blockly.Java.ORDER_ASSIGNMENT); + var text_name = block.getTitleValue('name'); + var code = 'boolean '+text_name+' = '+value_name+';\n'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + + /** + block name: set_true_false + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: true/false setter + included in final version: YES + */ + Blockly.Java['set_true_false'] = function(block: { getTitleValue: (arg0: string) => any; }) { + var dropdown_value = block.getTitleValue('value'); + var code = dropdown_value; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + + /** + block name: not + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: not function + included in final version: YES + */ + Blockly.Java['not'] = function(block: any) { + var value_name = Blockly.Java.valueToCode(block, 'NAME', Blockly.Java.ORDER_ASSIGNMENT); + var code = '!'+value_name; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + + /** + block name: and_or_xor + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: and/or/xor operations + included in final version: YES + */ + Blockly.Java['and_or_xor'] = function(block: { getTitleValue: (arg0: string) => any; }) { + var value_op1 = Blockly.Java.valueToCode(block, 'op1', Blockly.Java.ORDER_ASSIGNMENT); + var value_op2 = Blockly.Java.valueToCode(block, 'op2', Blockly.Java.ORDER_ASSIGNMENT); + var dropdown_name = block.getTitleValue('NAME'); + var code = value_op1+' '+dropdown_name+' '+value_op2; + return [code, Blockly.Java.ORDER_FUNCTION_CALL]; + }; + + + + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + Blockly.Java['get_boolean'] = function(block: { getFieldValue: (arg0: string) => any; }) { + var variable_name = Blockly.Java.nameDB_.getName(block.getFieldValue('NAME'), Blockly.Variables.NAME_TYPE); + var code = variable_name; + return [code, Blockly.Java.ORDER_FUNCTION_CALL];; + }; + + + + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + Blockly.Java['create_string'] = function(block: { getTitleValue: (arg0: string) => any; }) { + var value_value = Blockly.Java.valueToCode(block, 'value', Blockly.Java.ORDER_ATOMIC); + var text_name = block.getTitleValue('NAME'); + var code = 'String '+text_name+' = '+value_value+';\n'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL];; + }; + + + + /** + block name: string_value + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: string setter + included in final version: YES + */ + Blockly.Java['string_value'] = function(block: { getTitleValue: (arg0: string) => any; }) { + var text_string_value = block.getTitleValue('string_value'); + var code = '\"'+text_string_value+ '\"'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL];; + }; + + + + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + Blockly.Java['get_string'] = function(block: { getFieldValue: (arg0: string) => any; }) { + var variable_name = Blockly.Java.nameDB_.getName(block.getFieldValue('NAME'), Blockly.Variables.NAME_TYPE); + var code = variable_name; + return [code, Blockly.Java.ORDER_FUNCTION_CALL];; + }; + + + + /** + block name: string_length + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: string length computation + included in final version: YES + */ + Blockly.Java['string_length'] = function(block: any) { + var value_name = Blockly.Java.valueToCode(block, 'NAME', Blockly.Java.ORDER_ATOMIC); + var code = value_name+'.lentgh()'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL];; + }; + + + + /** + block name: string_concat + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: string concatenation + included in final version: YES + */ + Blockly.Java['string_concat'] = function(block: any) { + var value_string1 = Blockly.Java.valueToCode(block, 'string1', Blockly.Java.ORDER_ATOMIC); + var value_string2 = Blockly.Java.valueToCode(block, 'string2', Blockly.Java.ORDER_ATOMIC); + var code = value_string1+'.concat('+value_string2+')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL];; + }; + + + + /** + block name: string_substring + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: substring getter + included in final version: YES + */ + Blockly.Java['string_substring'] = function(block: any) { + var value_name = Blockly.Java.valueToCode(block, 'NAME', Blockly.Java.ORDER_ATOMIC); + var value_beginindex = Blockly.Java.valueToCode(block, 'beginindex', Blockly.Java.ORDER_ATOMIC); + var value_endindex = Blockly.Java.valueToCode(block, 'endindex', Blockly.Java.ORDER_ATOMIC); + var code = value_name+'.substring('+value_beginindex+', '+value_endindex+')'; + return [code, Blockly.Java.ORDER_FUNCTION_CALL];; + }; + + + /** + block name: procedures_nodefreturn + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method without return + included in final version: YES + */ + Blockly.Java['procedures_defnoreturn'] = function(block: { getFieldValue: (arg0: any, arg1?: any | undefined) => any; id: string; arguments_: string | any[]; }) { + var funcName = Blockly.Java.nameDB_.getName( + block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); + var branch = Blockly.Java.statementToCode(block, 'STACK'); + if (Blockly.Java.STATEMENT_PREFIX) { + branch = Blockly.Java.prefixLines( + Blockly.Java.STATEMENT_PREFIX.replace(/%1/g, + '\'' + block.id + '\''), Blockly.Java.INDENT) + branch; + } + if (Blockly.Java.INFINITE_LOOP_TRAP) { + branch = Blockly.Java.INFINITE_LOOP_TRAP.replace(/%1/g, + '\'' + block.id + '\'') + branch; + } + var returnValue = Blockly.Java.valueToCode(block, 'RETURN', + Blockly.Java.ORDER_NONE) || ''; + + var tipo = 'void'; + + if (returnValue) { + tipo = typeof block.getFieldValue(block, 'RETURN'); + returnValue = ' return ' + returnValue + ';\n'; + + } + var args = []; + for (var x = 0; x < block.arguments_.length; x++) { + args[x] = Blockly.Java.nameDB_.getName(block.arguments_[x], + Blockly.Variables.NAME_TYPE); + args[x] = (typeof args[x])+' '+args[x]; + } + var code; + var value_value = Blockly.Java.valueToCode(block, 'value', Blockly.Java.ORDER_ATOMIC); + var value_value2 = Blockly.Java.valueToCode(block, 'TYPE', Blockly.Java.ORDER_ATOMIC); + + code = 'public '+ 'void'+' ' + funcName + '('+value_value + args.join(', ') + ') {\n' + branch + returnValue + '}'; + + code = Blockly.Java.scrub_(block, code); + return code; + }; + + + + /** + block name: procedures_nodefreturn + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method without return + included in final version: YES + */ + Blockly.Java['procedures_nodefreturn'] = function(block: { getFieldValue: (arg0: any, arg1?: any | undefined) => any; id: string; arguments_: string | any[]; }) { + var funcName = Blockly.Java.nameDB_.getName( + block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); + var branch = Blockly.Java.statementToCode(block, 'STACK'); + if (Blockly.Java.STATEMENT_PREFIX) { + branch = Blockly.Java.prefixLines( + Blockly.Java.STATEMENT_PREFIX.replace(/%1/g, + '\'' + block.id + '\''), Blockly.Java.INDENT) + branch; + } + if (Blockly.Java.INFINITE_LOOP_TRAP) { + branch = Blockly.Java.INFINITE_LOOP_TRAP.replace(/%1/g, + '\'' + block.id + '\'') + branch; + } + var returnValue = Blockly.Java.valueToCode(block, 'RETURN', + Blockly.Java.ORDER_NONE) || ''; + + var tipo = 'void'; + + if (returnValue) { + tipo = typeof block.getFieldValue(block, 'RETURN'); + returnValue = ' return ' + returnValue + ';\n'; + + } + var args = []; + for (var x = 0; x < block.arguments_.length; x++) { + args[x] = Blockly.Java.nameDB_.getName(block.arguments_[x], + Blockly.Variables.NAME_TYPE); + args[x] = (typeof args[x])+' '+args[x]; + } + var code; + var value_value = Blockly.Java.valueToCode(block, 'value', Blockly.Java.ORDER_ATOMIC); + var value_value2 = Blockly.Java.valueToCode(block, 'TYPE', Blockly.Java.ORDER_ATOMIC); + + code = 'public '+ 'void'+' ' + funcName + '('+value_value + args.join(', ') + ') {\n' + branch + returnValue + '}'; + + code = Blockly.Java.scrub_(block, code); + return code; + }; + + + + /** + block name: procedures_defreturn_Int + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method with integer return value + included in final version: YES + */ + Blockly.Java['procedures_defreturn_Int'] = function(block: { getFieldValue: (arg0: any, arg1?: any | undefined) => any; id: string; arguments_: string | any[]; }) { + var funcName = Blockly.Java.nameDB_.getName( + block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); + var branch = Blockly.Java.statementToCode(block, 'STACK'); + if (Blockly.Java.STATEMENT_PREFIX) { + branch = Blockly.Java.prefixLines( + Blockly.Java.STATEMENT_PREFIX.replace(/%1/g, + '\'' + block.id + '\''), Blockly.Java.INDENT) + branch; + } + if (Blockly.Java.INFINITE_LOOP_TRAP) { + branch = Blockly.Java.INFINITE_LOOP_TRAP.replace(/%1/g, + '\'' + block.id + '\'') + branch; + } + var returnValue = Blockly.Java.valueToCode(block, 'RETURN', + Blockly.Java.ORDER_NONE) || ''; + + var tipo = 'int'; + + + if (returnValue) { + tipo = typeof block.getFieldValue(block, 'RETURN'); + + returnValue = ' return ' + returnValue + ';\n'; + + } + var args = []; + for (var x = 0; x < block.arguments_.length; x++) { + args[x] = Blockly.Java.nameDB_.getName(block.arguments_[x], + Blockly.Variables.NAME_TYPE); + args[x] = (typeof args[x])+' '+args[x]; + } + var code; + + code = 'public '+ tipo+' ' + funcName + '(' + args.join(', ') + ') {\n' + branch + returnValue + '}'; + + code = Blockly.Java.scrub_(block, code); + Blockly.Java.definitions_[funcName] = code; + return null; + }; + + + + /** + block name: procedures_defreturn_Boolean + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method with boolean return value + included in final version: YES + */ + Blockly.Java['procedures_defreturn_Boolean'] = function(block: { getFieldValue: (arg0: any, arg1?: any | undefined) => any; id: string; arguments_: string | any[]; }) { + var funcName = Blockly.Java.nameDB_.getName( + block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); + var branch = Blockly.Java.statementToCode(block, 'STACK'); + if (Blockly.Java.STATEMENT_PREFIX) { + branch = Blockly.Java.prefixLines( + Blockly.Java.STATEMENT_PREFIX.replace(/%1/g, + '\'' + block.id + '\''), Blockly.Java.INDENT) + branch; + } + if (Blockly.Java.INFINITE_LOOP_TRAP) { + branch = Blockly.Java.INFINITE_LOOP_TRAP.replace(/%1/g, + '\'' + block.id + '\'') + branch; + } + var returnValue = Blockly.Java.valueToCode(block, 'RETURN', + Blockly.Java.ORDER_NONE) || ''; + + var tipo = 'boolean'; + + + if (returnValue) { + tipo = typeof block.getFieldValue(block, 'RETURN'); + + returnValue = ' return ' + returnValue + ';\n'; + + } + var args = []; + for (var x = 0; x < block.arguments_.length; x++) { + args[x] = Blockly.Java.nameDB_.getName(block.arguments_[x], + Blockly.Variables.NAME_TYPE); + args[x] = (typeof args[x])+' '+args[x]; + } + var code; + + code = 'public '+ tipo+' ' + funcName + '(' + args.join(', ') + ') {\n' + branch + returnValue + '}'; + + code = Blockly.Java.scrub_(block, code); + Blockly.Java.definitions_[funcName] = code; + return null; + }; + + + + /** + block name: procedures_defreturn_String + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method with string return value + included in final version: YES + */ + Blockly.Java['procedures_defreturn_String'] = function(block: { getFieldValue: (arg0: any, arg1?: any | undefined) => any; id: string; arguments_: string | any[]; }) { + var funcName = Blockly.Java.nameDB_.getName( + block.getFieldValue('NAME'), Blockly.Procedures.NAME_TYPE); + var branch = Blockly.Java.statementToCode(block, 'STACK'); + if (Blockly.Java.STATEMENT_PREFIX) { + branch = Blockly.Java.prefixLines( + Blockly.Java.STATEMENT_PREFIX.replace(/%1/g, + '\'' + block.id + '\''), Blockly.Java.INDENT) + branch; + } + if (Blockly.Java.INFINITE_LOOP_TRAP) { + branch = Blockly.Java.INFINITE_LOOP_TRAP.replace(/%1/g, + '\'' + block.id + '\'') + branch; + } + var returnValue = Blockly.Java.valueToCode(block, 'RETURN', + Blockly.Java.ORDER_NONE) || ''; + + var tipo = 'String'; + + + if (returnValue) { + tipo = typeof block.getFieldValue(block, 'RETURN'); + + returnValue = ' return ' + returnValue + ';\n'; + + } + var args = []; + for (var x = 0; x < block.arguments_.length; x++) { + args[x] = Blockly.Java.nameDB_.getName(block.arguments_[x], + Blockly.Variables.NAME_TYPE); + args[x] = (typeof args[x])+' '+args[x]; + } + var code; + + code = 'public '+ tipo+' ' + funcName + '(' + args.join(', ') + ') {\n' + branch + returnValue + '}'; + + code = Blockly.Java.scrub_(block, code); + Blockly.Java.definitions_[funcName] = code; + return null; + }; + + + + + + + + +Blockly.Java['literal_text'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Text value. + var code = Blockly.Java.quote_(block.getFieldValue('TEXT')); + return [code, Blockly.Java.ORDER_ATOMIC]; +}; + +Blockly.Java['literal_integer'] = function(block: { getFieldValue: (arg0: string) => string; }) { + // Numeric value. + var code = parseInt(block.getFieldValue('NUM')); + return [code, Blockly.Java.ORDER_ATOMIC]; +}; + +Blockly.Java['literal_boolean'] = function(block: { getFieldValue: (arg0: string) => string; }) { + // Boolean values true and false. + var code = (block.getFieldValue('BOOL') == 'TRUE') ? 'true' : 'false'; + return [code, Blockly.Java.ORDER_ATOMIC]; +}; + + + +/* +* --- STRINGS --- +* +*/ +var int_variables: any[] = []; +var boolean_variables: any[] = []; +var string_variables: any[] = []; + +Blockly.Java['variable_declare_string'] = function(block: any) { + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + // var varName = Blockly.Java.nameDB_.getName( + // block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + // var varName = block.getFieldValue('VAR'); + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + + if(string_variables.indexOf(varName) < 0) { + string_variables[string_variables.length] = varName; + } + var typeName = 'String'; + return typeName+' '+varName + ' = ' + argument0 + ';\n'; + }; + + Blockly.Java['variable_get_string'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Variable getter. + var code = Blockly.Java.nameDB_.getName(block.getFieldValue('VAR'), + Blockly.Variables.NAME_TYPE); + // code = '$EVAL_' + code + '_EVAL$'; + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['variable_set_string'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Variable setter. + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + return varName + ' = ' + argument0 + ';\n'; + }; + +/* +* --- INTEGER --- +* +*/ + + +Blockly.Java['variable_declare_int'] = function(block: { getFieldValue: (arg0: string) => any; }) { + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + if(int_variables.indexOf(varName) < 0) { + int_variables[int_variables.length] = varName; + } + var typeName = 'int'; + return typeName+' '+varName + ' = ' + argument0 + ';\n'; +}; + +Blockly.Java['variable_get_int'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Variable getter. + var code = Blockly.Java.nameDB_.getName(block.getFieldValue('VAR'), + Blockly.Variables.NAME_TYPE); + // code = '$EVAL_' + code + '_EVAL$'; + return [code, Blockly.Java.ORDER_ATOMIC]; +}; + +Blockly.Java['variable_set_int'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Variable setter. + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + return varName + ' = ' + argument0 + ';\n'; +}; + +Blockly.Java['variable_declare_float'] = function(block: { getFieldValue: (arg0: string) => any; }) { + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '0'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + if(int_variables.indexOf(varName) < 0) { + int_variables[int_variables.length] = varName; + } + var typeName = 'float'; + return typeName+' '+varName + ' = ' + argument0 + ';\n'; +}; + + +Blockly.Java['string_to_integer'] = function(block: { getFieldValue: (arg0: string) => string; }) { + // Numeric value. + var argument0 = Blockly.Java.valueToCode(block, 'paramtxt', + Blockly.Java.ORDER_ASSIGNMENT) || '"0"'; + + var code = 'Integer.parseInt(' + argument0 + ')' ; + return [code, Blockly.Java.ORDER_ATOMIC]; +}; + + +Blockly.Java['string_to_float'] = function(block: { getFieldValue: (arg0: string) => string; }) { + // Numeric value. + var argument0 = Blockly.Java.valueToCode(block, 'paramtxt', + Blockly.Java.ORDER_ASSIGNMENT) || '"0"'; + + var code = 'Float.parseFloat(' + argument0 + ')' ; + return [code, Blockly.Java.ORDER_ATOMIC]; +}; + +/* +* --- BOOLEAN --- +* +*/ +Blockly.Java['variable_declare_boolean'] = function(block: { getFieldValue: (arg0: string) => any; }) { + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || 'true'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + if(boolean_variables.indexOf(varName) < 0) { + boolean_variables[boolean_variables.length] = varName; + } + var typeName = 'boolean'; + return typeName+' '+varName + ' = ' + argument0 + ';\n'; +}; + +Blockly.Java['variable_get_boolean'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Variable getter. + var code = Blockly.Java.nameDB_.getName(block.getFieldValue('VAR'), + Blockly.Variables.NAME_TYPE); + return [code, Blockly.Java.ORDER_ATOMIC]; +}; + +Blockly.Java['variable_set_boolean'] = function(block: { getFieldValue: (arg0: string) => any; }) { + // Variable setter. + var argument0 = Blockly.Java.valueToCode(block, 'VALUE', + Blockly.Java.ORDER_ASSIGNMENT) || 'true'; + var varName = Blockly.Java.nameDB_.getName( + block.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + return varName + ' = ' + argument0 + ';\n'; +}; + + + } + + + +} diff --git a/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.html b/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.html new file mode 100644 index 0000000000000000000000000000000000000000..90a3fa6551a77e6637c551e0d3c9612361277d9c --- /dev/null +++ b/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.html @@ -0,0 +1,14 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete order with id + {{data.id}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.scss b/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.spec.ts b/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..0afa523d11f32dc402e0463cd37668327b808410 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteServiceOrderComponent } from './delete-service-order.component'; + +describe('DeleteServiceOrderComponent', () => { + let component: DeleteServiceOrderComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteServiceOrderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteServiceOrderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.ts b/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..4fd52ebf07f9b9c0b3b529935f612d1d1bcc1e91 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/delete-service-order/delete-service-order.component.ts @@ -0,0 +1,37 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ServiceOrder } from 'src/app/openApis/serviceOrderingManagement/models'; +import { DeleteServiceSpecComponent } from 'src/app/p_services/admin/catalogManagement/delete-service-spec/delete-service-spec.component'; +import { ServiceOrderService } from 'src/app/openApis/serviceOrderingManagement/services'; + +@Component({ + selector: 'app-delete-service-order', + templateUrl: './delete-service-order.component.html', + styleUrls: ['./delete-service-order.component.scss'] +}) +export class DeleteServiceOrderComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceOrder, + private dialogRef: MatDialogRef, + private serviceOrderService: ServiceOrderService + + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.serviceOrderService.deleteServiceOrder(this.data.id).subscribe( + data => {}, + error => {this.dialogRef.close(error); console.error(error)}, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.html b/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.html new file mode 100644 index 0000000000000000000000000000000000000000..71d2c716e2b3ab9dea1464e7e291552f76a7f7bb --- /dev/null +++ b/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.html @@ -0,0 +1,130 @@ +
+
+ +
+
+
+
+

Service Orders

+

View and manage service orders

+
+ + +
+ +
+
+ + Filter Order User + + +
+ +
+ + Orders from (datetime) + + + date_range + + + + + Orders to (datetime) + + date_range + + + +
+ +
+
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Order ID {{element.id}} + Placed By {{element.relatedParty[0].name}} ({{element.relatedParty[0].role}}) Order Date (Local Time) {{element.orderDate | date:'d MMM y, h:mm a'}} + State {{element.state}} + Actions + + + + +
+ + + +
+ +
+
+ +
+
+
+
+

Service Orders Calendar

+

View Service Orders

+
+ +
+ + + +
+
+ +
+ + +
+ + + + + + \ No newline at end of file diff --git a/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.scss b/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.spec.ts b/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..1ae87f965bd238ea488ffc3cbea75b32477a61c2 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListServiceOrdersComponent } from './list-service-orders.component'; + +describe('ListServiceOrdersComponent', () => { + let component: ListServiceOrdersComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListServiceOrdersComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListServiceOrdersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.ts b/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..95b988e08e4f6e31643be2fa5f1043c025d78f39 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/list-service-orders/list-service-orders.component.ts @@ -0,0 +1,268 @@ + +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ServiceOrderService } from 'src/app/openApis/serviceOrderingManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { ServiceOrder } from 'src/app/openApis/serviceOrderingManagement/models'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { FormGroup, FormControl } from '@angular/forms'; +import { DeleteServiceOrderComponent } from '../delete-service-order/delete-service-order.component'; +import { HttpErrorResponse } from '@angular/common/http'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { CacheSearchParametersService } from '../../shared/cache-search-parameters.service'; +import { AppService } from 'src/app/shared/services/app.service'; +import { CalendarOptions, DateSelectArg, EventClickArg, EventApi } from '@fullcalendar/angular'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-list-service-orders', + templateUrl: './list-service-orders.component.html', + styleUrls: ['./list-service-orders.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListServiceOrdersComponent implements OnInit { + + constructor( + private serviceOrder: ServiceOrderService, + private dialog: MatDialog, + private toastr: ToastrService, + private cacheService: CacheSearchParametersService, + public appService: AppService, + private router: Router + ) { } + + //displayedColumns = ['id', 'placed_by', 'order_date', 'state', 'requested_startdate', 'requested_enddate', 'actions'] + displayedColumns = ['id', 'placed_by', 'order_date', 'state', 'actions'] + dataSource = new MatTableDataSource() + + serviceOrders: ServiceOrder[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + orderStates = ['initial', 'acknowledged', 'rejected', 'pending', 'held', 'inProgress', 'cancelled', 'completed', 'failed', 'partial'] + + filterForm = new FormGroup({ + text: new FormControl(), + fromDate: new FormControl(new Date(new Date().setMonth(new Date().getMonth()-4))), + toDate: new FormControl(new Date()), + }); + + get fromDate() { return this.filterForm.get('fromDate').value; } + get toDate() { return this.filterForm.get('toDate').value; } + get text() { return this.filterForm.get('text').value; } + + + //------------------calendar related START------------------------------ + + + calendarVisible = true; + calendarOptions: CalendarOptions = { + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek' + }, + initialView: 'dayGridMonth', + schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives', + //initialEvents: INITIAL_EVENTS, // alternatively, use the `events` setting to fetch from a feed + weekends: true, + editable: true, + selectable: true, + selectMirror: true, + dayMaxEvents: true, + select: this.handleDateSelect.bind(this), + eventClick: this.handleEventClick.bind(this), + eventsSet: this.handleEvents.bind(this), + /* you can update a remote database when these fire: + eventAdd: + eventChange: + eventRemove: + */ + + events: function(info, successCallback, failureCallback) { + + if ( this == null){ + console.info("this is null") + return + } + + var str = info.start.valueOf(); + const adate = new Date(str); + adate.setDate(adate.getDate() - 30); + const dateTimeNow = adate.toISOString(); + + this.serviceOrder.listServiceOrder({ starttime: `${dateTimeNow}` }).subscribe( + + //this.serviceOrder.listServiceOrder({ }).subscribe( + data => { this.serviceOrders = data }, + error => { + console.error(error) + failureCallback(error) + }, + () => { + successCallback( + Array.prototype.slice.call( // convert to array + this.serviceOrders + ).map(function(eventEl: ServiceOrder) { + + console.info("this is event: " + eventEl.id +" " + eventEl.requestedStartDate ) + // var result = new Date(eventEl.startDate); + // var evd = result.toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today + + return { + title: eventEl.relatedParty[0].name , + extendedProps: eventEl , + start: eventEl.startDate, + end: eventEl.expectedCompletionDate + } + }) + ) + + } + ) + + }.bind(this) + + }; + currentEvents: EventApi[] = []; + + handleDateSelect(selectInfo: DateSelectArg) { + // const title = prompt('Please enter a new title for your event'); + // const calendarApi = selectInfo.view.calendar; + + // calendarApi.unselect(); // clear date selection + + // if (title) { + // calendarApi.addEvent({ + // id: createEventId(), + // title, + // start: selectInfo.startStr, + // end: selectInfo.endStr, + // allDay: selectInfo.allDay + // }); + // } + } + + handleEventClick(clickInfo: EventClickArg) { + this.router.navigate([`services/service_order/${clickInfo.event.extendedProps.id}`]); + } + + handleEvents(events: EventApi[]) { + this.currentEvents = events; + } + + //------------------calendar related end ------------------------------ + + + + + ngOnInit() { + this.retrieveOrderList() + } + + retrieveOrderList() { + this.serviceOrder.listServiceOrder({}).subscribe( + data => { this.serviceOrders = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.serviceOrders + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'placed_by': return item.relatedParty[0].name + case 'order_date': return new Date(item.orderDate).getTime() + case 'requested_startdate': return new Date(item.requestedStartDate).getTime() + case 'requested_enddate': return new Date(item.requestedCompletionDate).getTime() + default: return item[property] + } + } + this.dataSource.filterPredicate = (data, filter) => { + // console.log(filter) + + const dataString = `${data.relatedParty[0].name} (${data.relatedParty[0].role})` + + let filterExpression: boolean = true + + // console.log(filterExpression) + if (this.text) { + filterExpression = dataString.trim().toLowerCase().includes(this.text) + } + + + if (this.fromDate && this.toDate) { + filterExpression = filterExpression && new Date(data.orderDate).getTime() >= new Date(this.fromDate).getTime() && new Date(data.orderDate).getTime() <= new Date(this.toDate).getTime() + } + + return filterExpression + + + if (filter !== "applyPeriodFilter") { + filter = filter.trim(); + filter = filter.toLowerCase(); + const dataString = `${data.relatedParty[0].name} (${data.relatedParty[0].role})` + let filterExpression = dataString.trim().toLowerCase().includes(filter) + if (this.fromDate && this.toDate) { + filterExpression = new Date(data.orderDate).getTime() >= new Date(this.fromDate).getTime() && new Date(data.orderDate).getTime() <= new Date(this.toDate).getTime() && dataString.trim().toLowerCase().includes(filter) + } + return filterExpression + } + + else + { + if (this.fromDate && this.toDate) { + return new Date(data.orderDate).getTime() >= new Date(this.fromDate).getTime() && new Date(data.orderDate).getTime() <= new Date(this.toDate).getTime() + } + } + + } + this.applyPeriodFilter() + } + ) + } + + applyTextFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + if (filterValue) { + this.dataSource.filter = filterValue; + } + } + + applyPeriodFilter() { + if (this.fromDate && this.toDate) { + this.dataSource.filter = "applyPeriodFilter" + } + // this.cacheService.serviceOrderListDateFrom = this.fromDate + // this.cacheService.serviceOrderListDateTo = this.toDate + // this.dataSource.filterPredicate = this.filterPeriod + } + + filterPeriod (data: ServiceOrder, filter: string) { + return data.orderDate >= this.fromDate && data.orderDate <= this.toDate + } + + openOrderDeleteDialog(element: ServiceOrder) { + const dialogRef = this.dialog.open(DeleteServiceOrderComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toastr.error("An error occurred while attempting to delete Service Order") + } else { + this.toastr.success("Service Order list is successfully updated") + this.retrieveOrderList() + } + } + } + ) + } + + + +} diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.html b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..bfd45da9f13ca2ff22b6ede0ef086414cbfc3ec6 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.html @@ -0,0 +1,223 @@ + + + +
+
+ This service does not contain any configurable characteristics +
+ +
+
User Configurable Characteristics
+
+ +
- {{charForm.get('name').value}}
+
+ + + + + + + + + + + + + + + + + + + + Custom Value + + date_range + + + + + + + + Custom Value + + + + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + +
+
+
+
+ + Custom Alias + + + + + + Custom Value + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+ + + + + Non Configurable Characteristics +
+ +
+
{{charForm.get('name').value}}
+ +
+ + + + + + + + + + + + + + + + + + + + Custom Value + + date_range + + + + + + + + Custom Value + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + +
+
+ +
+ + +
+ +
+ +
+ + + diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.scss b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..f26be3632681e69f1000aba26841217e2f35d7fa --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.scss @@ -0,0 +1,15 @@ +.spinner-container { + display: flex; + justify-content: center; + align-items: center; + min-height: 20vh; +} + +.service-spec-container { + min-height: 20vh; +} + +.border-bottom { + border-bottom: 1px dotted rgba(0, 0, 0, 0.125); + margin-bottom: .75rem; +} \ No newline at end of file diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.spec.ts b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..741fe7dabef9d937fa4b6ca23be16e32abf5044b --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditOrdersServiceSpecCharacteristicsComponent } from './edit-orders-service-spec-characteristics.component'; + +describe('EditOrdersServiceSpecCharacteristicsComponent', () => { + let component: EditOrdersServiceSpecCharacteristicsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditOrdersServiceSpecCharacteristicsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditOrdersServiceSpecCharacteristicsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.ts b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..3d7ffb3bbbe05409573cb17f8ef537f861e8e569 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-orders-service-spec-characteristics/edit-orders-service-spec-characteristics.component.ts @@ -0,0 +1,156 @@ +import { Component, OnInit, Inject, Input, Output, EventEmitter } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { ServiceOrderItem } from 'src/app/openApis/serviceOrderingManagement/models'; +import { FormArray, FormGroup, FormControl } from '@angular/forms'; +import { ServiceSpecification, ServiceSpecCharacteristic } from 'src/app/openApis/serviceCatalogManagement/models'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { trigger } from '@angular/animations'; +import { fadeIn, simpleFade } from 'src/app/shared/animations/animations'; +import { AuthService } from 'src/app/shared/services/auth.service'; + +@Component({ + selector: 'app-edit-orders-service-spec-characteristics', + templateUrl: './edit-orders-service-spec-characteristics.component.html', + styleUrls: ['./edit-orders-service-spec-characteristics.component.scss'], + animations: [ + trigger('fadeIn', fadeIn()), + trigger('simpleFade', simpleFade()) + ] + +}) +export class EditOrdersServiceSpecCharacteristicsComponent implements OnInit { + + constructor( + private dialogRef: MatDialogRef, + private specService: ServiceSpecificationService, + private toastr: ToastrService, + private sortingService: SortingService, + private authService: AuthService + ) { } + + isAdminUser: boolean = false + + @Input() set _activeListItem(activeItem: {orderItem: ServiceOrderItem, serviceSpec: ServiceSpecification}) { + this.orderItem = activeItem.orderItem + this.serviceSpec = activeItem.serviceSpec + this.isAdminUser = this.authService.portalUserJWT.realm_access.roles.includes('ADMIN') + this.initValuesForm() + } + @Output() characteristicsWasEdited = new EventEmitter<{orderItemID: string, serviceSpecChars:[]}>() + + orderItem: ServiceOrderItem + serviceSpec: ServiceSpecification + + confSpecFormArray = new FormArray([]) + nonConfSpecFormArray = new FormArray([]) + + confSpecCharacteristics: ServiceSpecCharacteristic[] = [] + nonConfSpecCharacteristics: ServiceSpecCharacteristic[] = [] + + ngOnInit() { } + + retrieveServiceSpec() { + this.specService.retrieveServiceSpecification({id: this.orderItem.service.serviceSpecification.id}).subscribe( + data => { this.serviceSpec = data }, + error => this.toastr.error("An error occurred retrieving Service Specification Characteristics information"), + () => { + this.initValuesForm() + } + ) + } + + initValuesForm() { + this.confSpecFormArray = new FormArray([]) + this.nonConfSpecFormArray = new FormArray([]) + + const confSpecFA = this.confSpecFormArray as FormArray + const nonConfSpecFA = this.nonConfSpecFormArray as FormArray + + this.confSpecCharacteristics = this.serviceSpec.serviceSpecCharacteristic.filter(specChar => {return specChar.configurable && this.orderItem.service.serviceCharacteristic.some( item => item.name === specChar.name) } ) + this.confSpecCharacteristics.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + if (this.isAdminUser) { + this.nonConfSpecCharacteristics = this.serviceSpec.serviceSpecCharacteristic.filter(specChar => {return !specChar.configurable && this.orderItem.service.serviceCharacteristic.some( item => item.name === specChar.name) }) + this.nonConfSpecCharacteristics.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + } + + this.confSpecCharacteristics.forEach ( (confSpecChar) => { + confSpecFA.push(this.updateFormArrayItem(confSpecChar, this.confSpecCharacteristics)) + }) + + this.nonConfSpecCharacteristics.forEach((nonConfSpecChar) => { + nonConfSpecFA.push(this.updateFormArrayItem(nonConfSpecChar, this.nonConfSpecCharacteristics)) + }) + } + + updateFormArrayItem( specChar: ServiceSpecCharacteristic, specCharList: ServiceSpecCharacteristic[]): FormGroup { + + const orderedServiceCharacteristic = this.orderItem.service.serviceCharacteristic.find(char => char.name === specChar.name) + + let charValueArray = orderedServiceCharacteristic.value + + if (['SET', 'ARRAY', 'ENUMERABLE'].includes(this.orderItem.service.serviceCharacteristic.find(char => char.name === specChar.name).valueType)) { + charValueArray = JSON.parse(orderedServiceCharacteristic.value.value) + } + + return new FormGroup({ + name: new FormControl(specChar.name), + valueType: new FormControl(specChar.valueType), + value: new FormControl(charValueArray) + }) + } + + addToArrayCharacteristicValue(characteristic: ServiceSpecCharacteristic) { + this.confSpecFormArray.value.concat(this.nonConfSpecFormArray.value).find(char => char.name === characteristic.name).value.push( + { + value: '', + alias: '' + } + ) + } + + deleteFromArrayCharacteristicValue(characteristic: ServiceSpecCharacteristic, index) { + this.confSpecFormArray.value.concat(this.nonConfSpecFormArray.value).find(char => char.name === characteristic.name).value.splice(index, 1) + } + + compareFn( optionOne, optionTwo ) : boolean { + return (optionOne.value === optionTwo.value) || (optionOne.alias === optionTwo.alias); + } + + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + // console.log(this.confSpecFormArray.value) + // console.log(this.nonConfSpecFormArray.value) + const editedCharsFA = this.confSpecFormArray.value.concat(this.nonConfSpecFormArray.value) + // console.log(editedCharsFA) + + let newServiceCharacteristics = [] + let editedCharValue + editedCharsFA.forEach( editedChar => { + editedCharValue = editedChar.value + if (editedChar.valueType === "SET" || editedChar.valueType === "ARRAY") { + editedCharValue = { + value: JSON.stringify( editedChar.value.map(el => {return {'value': el.value, 'alias': el.alias}}) ), + alias: '' + } + } + editedChar.value = editedCharValue + }) + + this.characteristicsWasEdited.emit({ + orderItemID: this.orderItem.id, + serviceSpecChars: editedCharsFA + }) + } + + ngOnDestroy() { + this.submitDialog() + } + +} diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.html b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.html new file mode 100644 index 0000000000000000000000000000000000000000..4feaf50f4c3231f5cf8586ef45f425dd6fe52f0e --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.html @@ -0,0 +1,47 @@ + +
+

+ + Edit Specification Characteristics of Selected Order Items' allocated Services +

+ + + + + + + + + + + + + +
+ +
+
+
+
+ + + + +
+
+ + +
+
+
diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.scss b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..630305506529d02677d61d7efe0db1fef960e3f4 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.scss @@ -0,0 +1,15 @@ +mat-tab-group { + margin-bottom: 1rem; + // border-top: 1px solid rgba(0, 0, 0, 0.1); + // border-bottom: 1px solid rgba(0, 0, 0, 0.1); +} + +.spinner-container { + display: flex; + justify-content: center; + align-items: center; + min-height: 40vh; + max-height: 65vh; + transition: all 2s linear; +} + diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.spec.ts b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..fa9d232a3dce19f534e3b4ecfd401dbc1686cf7f --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditServiceOrderItemsComponent } from './edit-service-order-items.component'; + +describe('EditServiceOrderItemsComponent', () => { + let component: EditServiceOrderItemsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditServiceOrderItemsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditServiceOrderItemsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.ts b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f695ca47403edfd627d32abacb8d3d1fad806e0 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/edit-service-order-items/edit-service-order-items.component.ts @@ -0,0 +1,78 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatTabChangeEvent } from '@angular/material/tabs'; +import { ServiceOrderItem, ServiceOrderUpdate } from 'src/app/openApis/serviceOrderingManagement/models'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { forkJoin } from 'rxjs'; +import { ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; + +@Component({ + selector: 'app-edit-service-order-items', + templateUrl: './edit-service-order-items.component.html', + styleUrls: ['./edit-service-order-items.component.scss'] +}) +export class EditServiceOrderItemsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public selectedOrderItems: ServiceOrderItem[], + private dialogRef: MatDialogRef, + private specService: ServiceSpecificationService + ) { } + + activeListItem: { + orderItem: ServiceOrderItem + serviceSpec: ServiceSpecification + } + selectedItemsServiceSpecs: ServiceSpecification[] + activeTabIndex: number + + editedOrderItems: {orderItemID: string, serviceSpecChars:[]}[] = [] + + ngOnInit() { + // this.activeListItem = this.selectedOrderItems[0] + this.retrieveSpecsFromOrderItems() + } + + retrieveSpecsFromOrderItems() { + let serviceSpecs$ = [] + this.selectedOrderItems.forEach( item => { + serviceSpecs$.push(this.specService.retrieveServiceSpecification({id: item.service.serviceSpecification.id})) + }) + + forkJoin(serviceSpecs$).subscribe( + data => {this.selectedItemsServiceSpecs = data}, + error => {console.error(error)}, + () => { + this.activeListItem = { + orderItem: this.selectedOrderItems[0], + serviceSpec: this.selectedItemsServiceSpecs[0] + } + this.activeTabIndex = 0 + } + ) + } + + changeTab(event: MatTabChangeEvent) { + setTimeout(() => { + this.activeTabIndex = event.index + this.activeListItem = { + orderItem: this.selectedOrderItems[event.index], + serviceSpec: this.selectedItemsServiceSpecs[event.index] + } + }, 500); + } + + orderItemCharsEdited(event: {orderItemID: string, serviceSpecChars:[]}) { + if (!this.editedOrderItems.some(item => item.orderItemID === event.orderItemID)) { + this.editedOrderItems.push(event) + } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + this.dialogRef.close(this.editedOrderItems) + } +} diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.html b/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.html new file mode 100644 index 0000000000000000000000000000000000000000..92974ea81aeb756bf96c871ddcf5faad53e1673b --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.html @@ -0,0 +1,518 @@ +
+
+
+

Service Order with id #{{orderID}} is not found

+
+
+
+ +
+
+
+ + +
+ +
+
+
+
+

Service Order Overview And Management

+ + +

Overview and Manage Service Order #{{serviceOrder?.id}}

+ + +
+
+
+
+ +
+
+
+ +
+
+
+ + +
+
+
+
+
+
+
Orderer By
+

{{serviceOrder?.relatedParty[0].name}}

+
+
+
Order Date
+

{{serviceOrder?.orderDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{serviceOrder?.orderDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+ +
+
Requested Starting Date
+

{{serviceOrder?.requestedStartDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{serviceOrder?.requestedStartDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+
+
Requested Completion Date
+

{{serviceOrder?.requestedCompletionDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{serviceOrder?.requestedCompletionDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+ +
+
Description
+

{{serviceOrder?.description}}

+
+
+
Notification Contact
+

{{serviceOrder?.notificationContact}}

+
+ +
+ +
Priority
+

{{serviceOrder?.priority}}

+
+ + +
+
+ +
State
+

{{serviceOrder?.state}}

+
+ + + State + + + + {{state | uppercase}} + + + + + + {{state | uppercase}} + + + + +
+ +
+ +
Starting Date
+
+

{{serviceOrder?.startDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{serviceOrder?.startDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+
+ + + Starting Date + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.startDate | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+ +
+ +
Expected Completion Date
+
+

{{serviceOrder?.expectedCompletionDate | date:'d MMM y, h:mm a'}} - Local Time

+

{{serviceOrder?.expectedCompletionDate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+ +
+ + + Expected Completion Date + + date_range + + Date is displayed in Local Time (UTC: {{editForm.value.expectedCompletionDate | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+ +
+
Notes
+
+
+
+
+ {{note.text}} +
+ {{note.date | date:'d MMM y, h:mm:ss a'}} (Local Time) + by {{note.author}} +
+
+
+
+
+ +
+ + +
+
+
+ + New Note + + + +
+
+
+
+
+
+
+ +
+
+ + + +
+
+ +
+
+ + + +
+
+ +
+ + +
+
+ + + +
+
+
+
+ There are not any related parties assigned +
+ +
+
Username (Role)
+

{{relatedParty.name}} ({{relatedParty.role}})

+ + +
+
+ +
+
+ + + +
+
+
+
+ + + + + + + + Order Item's Service main properties + + + +
+
+
ID
+

{{orderItem?.service.id}}

+
+
+
Name
+

{{orderItem?.service.serviceSpecification.name}}

+
+
+
State
+
+

{{orderItem?.service.state}}

+
+
+
+
Service Type
+

{{orderItem?.service.serviceType}}

+
+
+
Category
+

{{orderItem?.service.category}}

+
+
+ +
+ + + + + Service Specification Characteristics allocated with Order Item's Service + + + +
+ There are not any Service Specification Characteristics allocated. +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Characteristic
Value (Alias)
{{specCharacteristic.name}} + {{specCharacteristic.value.value}} ({{specCharacteristic.value.alias}}) + + + + + + + + +
+ {{value.value}} ({{value.alias}}) +
+ +
+
+
+ + + + + Supporting Services allocated with Service + + + +
+ There are no supporting services assigned to this Service. +
+ + + + +
+ + + + + Service relationships overview + + +
+
+ Relationship graph not available +
+
+
+
+ +
+ +
+
+
+ + + + + +
+ +
+ +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.scss b/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..f8d7d92a203d4e5f8898273428e2fbcd6fb5f188 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.scss @@ -0,0 +1,89 @@ +.minh-40vh { + min-height: 30vh; +} + +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled { + color: rgba(0,0,0,.30); +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.nav-item { + border-bottom: 1px dashed rgba(0, 0, 0, 0.125); + padding: .5rem 0; +} + + +.tab-pane > .card:nth-child(1) { + min-height: max(350px, 20vh); +} + +.tab-pane .card .card-body.space-between{ + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.orderItem-border { + border: 2px dotted #ddd; + padding: 1rem .5rem .5rem .5rem; + border-radius: 12px; + margin-bottom: 1rem; +} + +.orderItem-title { + margin-bottom: 1rem; + text-align: center; +} + +.note-card-body { + padding: .5rem; +} + +mat-form-field { + width: 100%; +} + +.notes-container { + max-height: 660px; + overflow-y: auto; +} + +.notes-graph-container { + display: flex; + justify-content: center; +} + +.service-spec-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +table.table-borderless tbody tr td { + padding: 0; +} + +.supporting-service-card { + cursor: pointer +} + +.no-shadow { + box-shadow: none; +} + +.supporting-service-card:hover { + box-shadow: none; +} + +.supporting-service-card .note-card-body:hover { + background: #e5e5e5; + border-radius: 12px; +} \ No newline at end of file diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.spec.ts b/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b10ca7b8404c6f9301078324a7435d773ba5a14b --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PreviewServiceOrderComponent } from './preview-service-order.component'; + +describe('PreviewServiceOrderComponent', () => { + let component: PreviewServiceOrderComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PreviewServiceOrderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PreviewServiceOrderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.ts b/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..69c43d678ea6f93ee88347b741bd36c09ae098bb --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/preview-service-order.component.ts @@ -0,0 +1,384 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ServiceOrder, ServiceOrderUpdate, ServiceRef, ServiceOrderItem } from 'src/app/openApis/serviceOrderingManagement/models'; +import { ServiceOrderService } from 'src/app/openApis/serviceOrderingManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { FormControl, FormGroup } from '@angular/forms'; +import { ServiceService } from 'src/app/openApis/serviceInventoryManagement/services'; +import { Service } from 'src/app/openApis/serviceInventoryManagement/models'; +import { delay } from 'rxjs/operators'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { MatDialog } from '@angular/material/dialog'; + +import { timer, Subscription } from 'rxjs'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { trigger } from '@angular/animations'; +import { fadeIn, simpleFade } from 'src/app/shared/animations/animations'; +import { SelectionModel } from '@angular/cdk/collections'; +import { EditServiceOrderItemsComponent } from './edit-service-order-items/edit-service-order-items.component'; +import { TerminateServiceOrderItemsComponent } from './terminate-service-order-items/terminate-service-order-items.component'; +import { AppService } from 'src/app/shared/services/app.service'; +import { relative } from 'path'; + +@Component({ + selector: 'app-preview-service-order', + templateUrl: './preview-service-order.component.html', + styleUrls: ['./preview-service-order.component.scss'], + animations: [ + trigger('fadeIn', fadeIn()), + trigger('simpleFade', simpleFade()), + ] + +}) +export class PreviewServiceOrderComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private orderService: ServiceOrderService, + private router: Router, + private inventoryService: ServiceService, + private toast: ToastrService, + private authService: AuthService, + private dialog: MatDialog, + private sortingService: SortingService, + public appService: AppService + ) { } + + staticListItems = ["Main Order Properties", "Related Parties"] + activeListItem = "Main Order Properties" + + availableOrderStates = ['INITIAL', 'ACKNOWLEDGED', 'REJECTED', 'PENDING', 'HELD', 'INPROGRESS', 'CANCELLED', 'COMPLETED', 'FAILED', 'PARTIAL'] + availableInitialOrderStates = ['INITIAL', 'ACKNOWLEDGED', 'REJECTED'] + + availablePriorities = ['low', 'normal', 'high'] + + + serviceOrder: ServiceOrder + orderID: string + serviceOrderNotFound: boolean = false + finishedLoading: boolean = false + + supportingServices: Service[][] = [[]] + + editMode: boolean = false + editModeNotes: boolean = false + isAdminUser: boolean = false + + editForm = new FormGroup ({ + state: new FormControl(), + priority: new FormControl('NORMAL'), + startDate: new FormControl(), + expectedCompletionDate: new FormControl(), + note: new FormControl() + }) + + checkboxesOrderItemList: {orderItem: ServiceOrderItem, isChecked: boolean}[] = [] + selection = new SelectionModel(true, []); + + subscription = new Subscription + + currentItemRelationshipsUrl: string[] = [] + notesGraphUrl: string + + ngOnInit() { + this.isAdminUser = this.authService.portalUserJWT.realm_access.roles.includes('ADMIN') + + if (this.activatedRoute.snapshot.params.id) + { + this.orderID = this.activatedRoute.snapshot.params.id + this.retrieveServiceOrder() + } else { + this.router.navigate(['../service_orders'], { relativeTo: this.activatedRoute}) + } + } + + selectListItem(item: string) { + this.activeListItem = item + + if (!this.staticListItems.includes(item)) + this.serviceOrder.orderItem.find(it => it.id === item).service.serviceCharacteristic + } + + retrieveServiceOrder() { + this.selection.clear() + this.orderService.retrieveServiceOrder({id: this.orderID}).subscribe( + data => this.serviceOrder = data, + error => { console.error(error) }, + () => { + if (this.serviceOrder) { + this.finishedLoading = true + + this.editForm.patchValue({ + state: this.serviceOrder.state, + startDate: this.serviceOrder.startDate ? this.serviceOrder.startDate : this.serviceOrder.requestedStartDate, + expectedCompletionDate: this.serviceOrder.expectedCompletionDate ? this.serviceOrder.expectedCompletionDate : this.serviceOrder.completionDate + }) + + this.serviceOrder.note.sort(this.sortingService.ascDateSortingFuncByDateProperty()) + + if (!this.serviceOrder.startDate) { this.serviceOrder.startDate = this.serviceOrder.requestedStartDate } + + if (!this.serviceOrder.expectedCompletionDate) { this.serviceOrder.expectedCompletionDate = this.serviceOrder.requestedCompletionDate } + + this.checkboxesOrderItemList = [] + this.currentItemRelationshipsUrl = [] + this.serviceOrder.orderItem.forEach((orderItem, index) => { + + this.checkboxesOrderItemList.push({orderItem: orderItem, isChecked: false}) + + orderItem.service.serviceCharacteristic.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + orderItem.service.supportingService.forEach( (supService, serviceIndex) => { + this.retrieveServiceInventory(supService.id).pipe(delay(Math.random()*1000)).subscribe( + data => this.supportingServices[index][serviceIndex] = data + ) + }) + + + this.currentItemRelationshipsUrl.push( this.orderService.rootUrl + "/serviceOrdering/v4/serviceOrder/" + this.serviceOrder.id + "/item/" + orderItem.id + "/relationship_graph" ); + }) + + this.notesGraphUrl = this.orderService.rootUrl + "/serviceOrdering/v4/serviceOrder/" + this.serviceOrder.id + "/notes_graph"; + + if (this.activatedRoute.snapshot.queryParams && this.serviceOrder.orderItem.some(item => item.id === this.activatedRoute.snapshot.queryParams.item)) { + // console.log(this.activatedRoute.snapshot.queryParams) + this.activeListItem = this.activatedRoute.snapshot.queryParams.item + + } + } else { + this.serviceOrderNotFound = true + } + } + ) + } + + retrieveServiceInventory(serviceId:string) { + return this.inventoryService.retrieveService({id:serviceId}) + } + + orderItemStateClassSelector(state:'feasibilityChecked' | 'designed' | 'reserved' | 'inactive' | 'active' | 'terminated') { + let cssClass: string = 'badge' + switch (state) { + case 'active': + cssClass += ' badge-success' + break; + case 'inactive': + cssClass += ' badge-secondary' + break; + case 'terminated': + cssClass += ' badge-danger' + break; + default: + cssClass += ' badge-warning' + } + return cssClass + } + + orderStateClassSelector(state:'INITIAL'|'ACKNOWLEDGED'|'REJECTED'|'PENDING'|'HELD'|'INPROGRESS'|'CANCELLED'|'COMPLETED'|'FAILED'|'PARTIAL') { + let cssClass: string = 'badge' + switch (state) { + case 'INITIAL': + cssClass += ' badge-primary' + break; + case 'REJECTED': + case 'CANCELLED': + case 'FAILED': + cssClass += ' badge-danger' + break; + case 'COMPLETED': + cssClass += ' badge-success' + break; + default: + cssClass += ' badge-warning' + } + return cssClass + } + + enableOrderEditing() { + this.editMode = true + } + + submitOrderEditing() { + this.editMode = false + let orderUpdate: ServiceOrderUpdate = { + state: this.editForm.get('state').value, + startDate: this.editForm.get('startDate').value, + expectedCompletionDate: this.editForm.get('expectedCompletionDate').value, + } + if (this.editForm.get('note').value) { + orderUpdate.note = [{ + author:this.authService.portalUserJWT.preferred_username, + text: this.editForm.get('note').value, + date: new Date().toISOString() + }] + } + + this.orderService.patchServiceOrder({serviceOrder: orderUpdate, id: this.orderID}).subscribe( + data => {this.toast.success("Service Order was successfully updated")}, + error => {console.error(error); this.toast.error("An error occurred while editing Service Order")}, + () => { + this.enableOrderRefreshTimer() + } + ) + } + + cancelOrderEditing() { + this.editMode = false + } + + triggerAdminNote() { + this.editModeNotes = !this.editModeNotes + } + + // openOrdersSpecCharacteristicsDialog(orderItem: ServiceOrderItem) { + + // const dialogRef = this.dialog.open(EditOrdersServiceSpecCharacteristicsComponent, { + // data: { orderItem } + // }) + + // dialogRef.afterClosed().subscribe( + // result => { + // // console.log(result) + // // console.log() + // // if (result) { + // // orderItem.service.serviceCharacteristic = result + // // } + // console.log(this.serviceOrder) + // if (result) { + + // let newOrderUpdate: ServiceOrderUpdate = { + // orderItem: [] + // } + + // this.serviceOrder.orderItem.find(item => item.id === orderItem.id).service.serviceCharacteristic = result + // newOrderUpdate.orderItem = this.serviceOrder.orderItem + + // this.orderService.patchServiceOrder({serviceOrder: newOrderUpdate, id: this.serviceOrder.id}).subscribe( + // data => { this.retrieveServiceOrder() }, + // error => console.error(error) + // ) + // } + // } + // ) + // } + + areOrderItemsEditable() { + // states > 'INITIAL'|'ACKNOWLEDGED'|'REJECTED'|'PENDING'|'HELD'|'INPROGRESS'|'CANCELLED'|'COMPLETED'|'FAILED'|'PARTIAL' + // return ['INITIAL', 'REJECTED','CANCELLED', 'COMPLETED', 'FAILED', 'PARTIAL'].includes(this.serviceOrder.state) + return ['INITIAL'].includes(this.serviceOrder.state) + } + + areOrderItemsTerminable() { + return ['COMPLETED', 'FAILED', 'PARTIAL'].includes(this.serviceOrder.state) + } + + openEditServiceOrderItemsDialog() { + const dialogRef = this.dialog.open(EditServiceOrderItemsComponent, { + data: this.selection.selected, + minWidth: "60vw" + }) + + dialogRef.afterClosed().subscribe( + (editedOrderItems: {orderItemID: string, serviceSpecChars:[]}[]) => { + + // console.log(editedOrderItems) + if (editedOrderItems) { + + let newOrderUpdate: ServiceOrderUpdate = { + orderItem: [] + } + editedOrderItems.forEach( editedOrderItem => { + this.serviceOrder.orderItem.find(item => item.id === editedOrderItem.orderItemID).service.serviceCharacteristic = editedOrderItem.serviceSpecChars + // Decide orderItem action verb + if (this.serviceOrder.state === "COMPLETED") { + this.serviceOrder.orderItem.find(item => item.id === editedOrderItem.orderItemID).action = "modify" + } + + // newOrderUpdate.orderItem.push(this.serviceOrder.orderItem.find(item => item.id === editedOrderItem.orderItemID)) + }) + + newOrderUpdate.orderItem = this.serviceOrder.orderItem + + // console.log(newOrderUpdate) + + this.orderService.patchServiceOrder({serviceOrder: newOrderUpdate, id: this.serviceOrder.id}).subscribe( + data => { + this.toast.success("Selected Order Items were successfully updated") + this.retrieveServiceOrder() + }, + error => { + this.toast.error("An error occurred while updating Service Order Items") + this.retrieveServiceOrder() + console.error(error) + } + ) + } + } + ) + + } + + terminateServiceOrderItemsDialog() { + const dialogRef = this.dialog.open(TerminateServiceOrderItemsComponent, { + data: this.selection.selected + }) + + dialogRef.afterClosed().subscribe( + result => { + if (result) { + let newOrderUpdate: ServiceOrderUpdate = { + orderItem: [] + } + this.selection.selected.forEach( selectedOrderItem => { + this.serviceOrder.orderItem.find(item => item.id === selectedOrderItem.id).action = "modify" + this.serviceOrder.orderItem.find(item => item.id === selectedOrderItem.id).service.state = "terminated" + }) + + newOrderUpdate.orderItem = this.serviceOrder.orderItem + + // console.log(newOrderUpdate) + + this.orderService.patchServiceOrder({serviceOrder: newOrderUpdate, id: this.serviceOrder.id}).subscribe( + data => { + this.toast.success("Selected Order Items were successfully updated") + this.retrieveServiceOrder() + }, + error => { + this.toast.error("An error occurred while updating Service Order Items") + this.retrieveServiceOrder() + console.error(error) + } + ) + } + } + ) + } + + //checkBoxSelection Logic + isAllSelected() { + const numSelected = this.selection.selected.length + const numItems = this.serviceOrder.orderItem.length + return numSelected === numItems + } + + masterCheckboxToggle() { + this.isAllSelected() ? + this.selection.clear() : + this.serviceOrder.orderItem.forEach (item => this.selection.select(item)) + } + //---checkBoxSelection Logic + + enableOrderRefreshTimer() { + this.subscription.unsubscribe() + this.subscription = timer(0, 10000).subscribe( + data => { + // this.supportingServices = [[]] + this.retrieveServiceOrder() + } + ) + } + + ngOnDestroy() { + this.subscription.unsubscribe() + } +} diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.html b/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.html new file mode 100644 index 0000000000000000000000000000000000000000..3cad477ecd4918b087e18ec744eb997df3927a5d --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.html @@ -0,0 +1,16 @@ +

+ + Confirm termination +

+
+ Are you sure you want to terminate services allocated with the selected Order Items? +
    +
  • {{orderItem.service.serviceSpecification.name}}
  • +
+
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.scss b/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.spec.ts b/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..79039742275348c20ed6094ea8c3c3bac55181cb --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TerminateServiceOrderItemsComponent } from './terminate-service-order-items.component'; + +describe('TerminateServiceOrderItemsComponent', () => { + let component: TerminateServiceOrderItemsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TerminateServiceOrderItemsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TerminateServiceOrderItemsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.ts b/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..fe247d26b3887a21bbae83c83f840b7361fc1a44 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/preview-service-order/terminate-service-order-items/terminate-service-order-items.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { DeleteServiceCategoryComponent } from 'src/app/p_services/admin/catalogManagement/delete-service-category/delete-service-category.component'; +import { ServiceOrderItem } from 'src/app/openApis/serviceOrderingManagement/models'; + +@Component({ + selector: 'app-terminate-service-order-items', + templateUrl: './terminate-service-order-items.component.html', + styleUrls: ['./terminate-service-order-items.component.scss'] +}) +export class TerminateServiceOrderItemsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceOrderItem[], + private dialogRef: MatDialogRef, + ) { } + + ngOnInit() { + } + + confirmTermination() { + this.dialogRef.close('deleted') + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/orderManagement/service-order-calendar/event-utils.ts b/src/app/p_services/admin/orderManagement/service-order-calendar/event-utils.ts new file mode 100644 index 0000000000000000000000000000000000000000..7818436d43312acba438499cf1aefb6d090cddf6 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/service-order-calendar/event-utils.ts @@ -0,0 +1,25 @@ +import { EventInput } from '@fullcalendar/angular'; + +let eventGuid = 0; +const TODAY_STR = new Date().toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today +var result = new Date(); +result.setDate(result.getDate() + 2); +const TODAY_STRONW = result.toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today + +export const INITIAL_EVENTS: EventInput[] = [ + { + id: createEventId(), + title: 'All-day event', + start: TODAY_STR + }, + { + id: createEventId(), + title: 'Timed event', + start: TODAY_STR + 'T12:00:00', + end: TODAY_STRONW + 'T18:00:00' + } +]; + +export function createEventId() { + return String(eventGuid++); +} diff --git a/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.html b/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.html new file mode 100644 index 0000000000000000000000000000000000000000..c36b58c36a59dcd10b7b249c7ecfe26502c54b6b --- /dev/null +++ b/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.html @@ -0,0 +1,20 @@ +
+
+
+
+
+
+

Service Orders Calendar

+

View Service Orders

+
+ +
+ + + + + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.scss b/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6c61423bebb55df0dc47f1e1c3759d93885a0cf3 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.scss @@ -0,0 +1,5 @@ +.jumbotron-heading { + display: flex; + justify-content: space-between; + align-items: center; +} \ No newline at end of file diff --git a/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.ts b/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8daf914b8e623cfb0a4f57742fd4a7e312d43420 --- /dev/null +++ b/src/app/p_services/admin/orderManagement/service-order-calendar/service-order-calendar.component.ts @@ -0,0 +1,165 @@ +import { Router } from '@angular/router'; +import { startWith } from 'rxjs/operators'; +import { MatTableDataSource } from '@angular/material/table'; +import { ServiceOrder } from 'src/app/openApis/serviceOrderingManagement/models'; +import { ServiceOrderService } from 'src/app/openApis/serviceOrderingManagement/services'; + +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { CalendarOptions, DateSelectArg, EventClickArg, EventApi } from '@fullcalendar/angular'; +import { INITIAL_EVENTS, createEventId } from './event-utils'; +import { formatDate } from '@angular/common'; + +@Component({ + selector: 'service-order-calendar', + templateUrl: './service-order-calendar.component.html', + styleUrls: ['./service-order-calendar.component.scss'] + }) +export class ServiceOrdersCalendarComponent implements OnInit { + + calendarVisible = true; + calendarOptions: CalendarOptions = { + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek' + }, + initialView: 'dayGridMonth', + //initialEvents: INITIAL_EVENTS, // alternatively, use the `events` setting to fetch from a feed + weekends: true, + editable: true, + selectable: true, + selectMirror: true, + dayMaxEvents: true, + select: this.handleDateSelect.bind(this), + eventClick: this.handleEventClick.bind(this), + eventsSet: this.handleEvents.bind(this), + /* you can update a remote database when these fire: + eventAdd: + eventChange: + eventRemove: + */ + + events: function(info, successCallback, failureCallback) { + + if ( this == null){ + console.info("this is null") + return + } + + var str = info.start.valueOf(); + const adate = new Date(str); + adate.setDate(adate.getDate() - 30); + const dateTimeNow = adate.toISOString(); + + this.serviceOrder.listServiceOrder({ starttime: `${dateTimeNow}` }).subscribe( + + //this.serviceOrder.listServiceOrder({ }).subscribe( + data => { this.serviceOrders = data }, + error => { + console.error(error) + failureCallback(error) + }, + () => { + successCallback( + Array.prototype.slice.call( // convert to array + this.serviceOrders + ).map(function(eventEl: ServiceOrder) { + + console.info("this is event: " + eventEl.id +" " + eventEl.requestedStartDate ) + // var result = new Date(eventEl.startDate); + // var evd = result.toISOString().replace(/T.*$/, ''); // YYYY-MM-DD of today + + return { + title: eventEl.id , + start: eventEl.startDate, + end: eventEl.expectedCompletionDate + } + }) + ) + + } + ) + + }.bind(this) + + }; + currentEvents: EventApi[] = []; + + + constructor( + private serviceOrder: ServiceOrderService, + private router: Router + ) { } + + + serviceOrders: ServiceOrder[] + dataSource = new MatTableDataSource() + + retrieveOrderList() { + this.serviceOrder.listServiceOrder({}).subscribe( + data => { this.serviceOrders = data }, + error => { console.error(error) }, + () => { + + + } + ) + } + + + handleCalendarToggle() { + this.calendarVisible = !this.calendarVisible; + } + + handleWeekendsToggle() { + const { calendarOptions } = this; + calendarOptions.weekends = !calendarOptions.weekends; + } + + handleDateSelect(selectInfo: DateSelectArg) { + // const title = prompt('Please enter a new title for your event'); + // const calendarApi = selectInfo.view.calendar; + + // calendarApi.unselect(); // clear date selection + + // if (title) { + // calendarApi.addEvent({ + // id: createEventId(), + // title, + // start: selectInfo.startStr, + // end: selectInfo.endStr, + // allDay: selectInfo.allDay + // }); + // } + } + + handleEventClick(clickInfo: EventClickArg) { + // if (confirm(`Are you sure you want to delete the event '${clickInfo.event.title}'`)) { + // clickInfo.event.remove(); + // } + + ///services/service_order/{{element.id}} + this.router.navigate([`services/service_order/${clickInfo.event.title}`]); + + + } + + handleEvents(events: EventApi[]) { + this.currentEvents = events; + } + + + + + ngOnInit() { + + + + } + + +} \ No newline at end of file diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.html b/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..11a47b295f901639c28e6caae6262fc763d6748c --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.html @@ -0,0 +1,197 @@ +
+

+ + Edit Service Characteristics +

+ + +
+ +
+
+ The Service Specification, which the Service is based upon, cannot be found or is deleted. The Service Characteristics cannot be edited. +
+ +
+ + + + + +
+ This service does not contain any characteristics +
+ +
+
Service Specification characteristics (editable)
+ +
+ +
- {{charForm.get('name').value}}
+
+ + + + + + + + + + + + + + + + + + + + Custom Value + + date_range + + + + + + + + Custom Value + + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + + +
+
+
+
+ + Custom Alias + + + + + + Custom Value + + + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+ + +
+
Service specific characteristics (Read only)
+
+
{{char.name}}
+
+ + + + + + + + + + + + + + + {{char.value.value}} ({{char.value.alias}}) + + + + + + + + + + + + +
+ {{value.value}} ({{value.alias}}) +
+ + +
+
+
+
+
+
+ +
+
+ + +
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.scss b/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6d2b0019fef094cf775e16838209f16d5693d2e0 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.scss @@ -0,0 +1,18 @@ +table.table-borderless tbody tr td { + padding: 0; +} + +mat-dialog-content { + min-height: 15vw; +} + +mat-dialog-content .spinner-container{ + display: flex; + align-items: center; + justify-content: center; +} + +.border-bottom { + border-bottom: 1px dotted rgba(0, 0, 0, 0.125); + margin-bottom: .75rem; +} \ No newline at end of file diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.spec.ts b/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9ec6004e3b4cca0e6335d6f4df00fbb501bdceb8 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditServiceCharacteristicsComponent } from './edit-service-characteristics.component'; + +describe('EditServiceCharacteristicsComponent', () => { + let component: EditServiceCharacteristicsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditServiceCharacteristicsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditServiceCharacteristicsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.ts b/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..e08cd917e2dd724bde4a13e226ecec5e76891816 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/edit-service-characteristics/edit-service-characteristics.component.ts @@ -0,0 +1,157 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ServiceService } from 'src/app/openApis/serviceActivationAndConfiguration/services'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ServiceSpecificationRef , Characteristic, ServiceUpdate, Service} from 'src/app/openApis/serviceActivationAndConfiguration/models'; +import { ServiceSpecification, ServiceSpecCharacteristic } from 'src/app/openApis/serviceCatalogManagement/models'; +import { FormArray, FormGroup, FormControl } from '@angular/forms'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-edit-service-characteristics', + templateUrl: './edit-service-characteristics.component.html', + styleUrls: ['./edit-service-characteristics.component.scss'], + animations: [ + trigger('fadeIn', fadeIn()), + ] +}) +export class EditServiceCharacteristicsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public injectedData: { service: Service}, + private dialogRef: MatDialogRef, + private serviceService: ServiceService, + private specService: ServiceSpecificationService, + private sortingService: SortingService, + private toastService: ToastrService + ) { } + + serviceSpec: ServiceSpecification + serviceSpecificationNotFound: boolean + + servCharFormArray = new FormArray([]) + specCharFormArray = new FormArray([]) + + serviceCharacteristics: Characteristic[] = [] + specificationCharacteristics: ServiceSpecCharacteristic[] = [] + + ngOnInit() { + this.retrieveServiceSpec() + } + + retrieveServiceSpec() { + this.specService.retrieveServiceSpecification({id: this.injectedData.service.serviceSpecification.id}).subscribe( + data => this.serviceSpec = data, + error => console.error(error), + () => { + this.initValuesForm() + } + ) + } + + initValuesForm() { + const specCharFA = this.specCharFormArray as FormArray + const servCharFA = this.servCharFormArray as FormArray + + // First check if the Service Specification, which the Service is based on, is still present and not deleted. + if (this.serviceSpec) { + this.specificationCharacteristics = this.serviceSpec.serviceSpecCharacteristic.filter( char => {return this.injectedData.service.serviceCharacteristic.some (specChar => specChar.name === char.name) }) + this.specificationCharacteristics.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + this.serviceCharacteristics = this.injectedData.service.serviceCharacteristic.filter( char => {return !this.serviceSpec.serviceSpecCharacteristic.some (specChar => specChar.name === char.name) }) + this.serviceCharacteristics.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + this.specificationCharacteristics.forEach ( specChar => { + // if (this.injectedData.serviceCharacteristic.some(char => char.name === specChar.name)) { + specCharFA.push(this.updateFAItem(specChar)) + // } + }) + } + // If the Service Specification is deleted, then it is not anymore possible to edit the service characteristics as the template is missing (data types, predefined values, etc). + // This might have happen if the user tries to edit an "old" service, which its Specification has been deleted. + else { + this.serviceSpecificationNotFound = true + } + + } + + updateFAItem (characteristic: ServiceSpecCharacteristic): FormGroup { + + const specCharacteristic = this.injectedData.service.serviceCharacteristic.find( char => char.name === characteristic.name) + + let charValueArray = specCharacteristic.value + + if (['SET', 'ARRAY', 'ENUMERABLE'].includes(this.injectedData.service.serviceCharacteristic.find(char => char.name === characteristic.name).valueType)) { + charValueArray = JSON.parse(specCharacteristic.value.value) + } + + return new FormGroup({ + name: new FormControl(characteristic.name), + valueType: new FormControl(characteristic.valueType), + value: new FormControl(charValueArray) + }) + } + + addToArrayCharacteristicValue(characteristic: ServiceSpecCharacteristic) { + this.specCharFormArray.value.find(char => char.name === characteristic.name).value.push( + { + value: '', + alias: '' + } + ) + } + + deleteFromArrayCharacteristicValue(characteristic: ServiceSpecCharacteristic, index) { + this.specCharFormArray.value.find(char => char.name === characteristic.name).value.splice(index, 1) + } + + + compareFn( optionOne, optionTwo ) : boolean { + return (optionOne.value === optionTwo.value) || (optionOne.alias === optionTwo.alias); + } + + submitDialog() { + + //editable service spec characteristics + let editedCharValue; + this.specCharFormArray.value.forEach( editedChar => { + editedCharValue = { 'value': editedChar.value.value, 'alias': editedChar.value.alias } + if (editedChar.valueType === "SET" || editedChar.valueType === "ARRAY") { + editedCharValue = { + value: JSON.stringify( editedChar.value.map(el => {return {'value': el.value, 'alias': el.alias}}) ), + alias: '' + } + } + editedChar.value = editedCharValue + }) + + + //read only service characteristics + let serviceChars: Characteristic[] = [] + this.serviceCharacteristics.forEach ( readOnlyChar => { + serviceChars.push({ + name: readOnlyChar.name, + value: readOnlyChar.value, + valueType: readOnlyChar.valueType + }) + }) + + + let serviceUpdate: ServiceUpdate = { + serviceCharacteristic: serviceChars.concat(this.specCharFormArray.value) + } + + this.serviceService.patchService1({service: serviceUpdate, id: this.injectedData.service.id}).subscribe( + data => { }, + error => { console.error(error); this.toastService.error("An error occurred upon updating Service")}, + () => { this.dialogRef.close('updated') } + ) + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.html b/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.html new file mode 100644 index 0000000000000000000000000000000000000000..38daee21bb922d1f97df00d8df6cbeb177c6c264 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.html @@ -0,0 +1,57 @@ +
+

+ + Execute MANO primitives +

+ +
+ +
+
+
Primitive Type
+

{{data.primitiveType}}

+
+ +
+
VNF Profile ID
+

{{data.primitive.vnf_id}}

+
+ +
+
Primitive
+

{{data.primitive.primitive.name}}

+
+ +
+
+ + Primitive Parameter Name + + + {{parameter.name}} + + + + + + Primitive Parameter Value + + + +
+
+
+ + + + +
+
+
+ + +
+
+
+ +
\ No newline at end of file diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.scss b/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.spec.ts b/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..ae48253aa29f4ace2155ab688a879b6ffdc9c686 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExecuteManoServicePrimitiveComponent } from './execute-mano-service-primitive.component'; + +describe('ExecuteManoServicePrimitiveComponent', () => { + let component: ExecuteManoServicePrimitiveComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ExecuteManoServicePrimitiveComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ExecuteManoServicePrimitiveComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.ts b/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee146f36ee09176d41fc31c0110fb246c3edf055 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/execute-mano-service-primitive/execute-mano-service-primitive.component.ts @@ -0,0 +1,82 @@ +import { trigger } from '@angular/animations'; +import { Component, Inject, OnInit } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Characteristic, Service, ServiceUpdate } from 'src/app/openApis/serviceInventoryManagement/models'; +import { ServiceService } from 'src/app/openApis/serviceInventoryManagement/services'; +import { fadeIn, simpleFade } from 'src/app/shared/animations/animations'; + +@Component({ + selector: 'app-execute-mano-service-primitive', + templateUrl: './execute-mano-service-primitive.component.html', + styleUrls: ['./execute-mano-service-primitive.component.scss'], + animations: [ [ trigger('fadeIn', fadeIn()), trigger('simpleFade', simpleFade()) ]] +}) +export class ExecuteManoServicePrimitiveComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + primitiveType: string + primitive: {"vnf_id":string, "primitive":{"name":string, "parameter"?:{"name":string, "data-type":string}}}, + serviceToBeUpdated: Service + }, + private dialogRef: MatDialogRef, + private serviceService: ServiceService + ) { } + + ngOnInit(): void { + this.initFormControlSubscriptions() + } + + parameterSelectionCtrl + primitivesParamsForm = new FormGroup({ + parameter: new FormControl(""), + value: new FormControl("") + }) + + initFormControlSubscriptions() { + this.primitivesParamsForm.get("parameter").valueChanges.subscribe( + _ => this.primitivesParamsForm.get("value").reset() + ) + } + + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + // To execute the primitive, we need to add it as a Service Characteristic with name "Primitive::{{name}}" + let primitiveObjectValue = [ + {alias: "member_vnf_index", value: this.data.primitive.vnf_id}, + {alias: "primitive", value: this.data.primitive.primitive.name} + ] + + const paramName = this.primitivesParamsForm.get("parameter").value.name; + const paramValue = this.primitivesParamsForm.get("value").value; + + if (this.primitivesParamsForm.get("parameter").value) { + // Add the parameter directly with its own alias and value + primitiveObjectValue.push({ alias: paramName, value: paramValue }); + } + + // this is the new Primitive Service Characteristics + let primitiveCharacteristic: Characteristic = { + name: "Primitive::"+this.data.primitive.primitive.name, + valueType: "ARRAY", + value: {value: JSON.stringify(primitiveObjectValue), alias:""} + } + + this.data.serviceToBeUpdated.serviceCharacteristic.push(primitiveCharacteristic) + + let serviceUpdate: ServiceUpdate = { + serviceCharacteristic: this.data.serviceToBeUpdated.serviceCharacteristic + } + + this.serviceService.patchService({service: serviceUpdate, id: this.data.serviceToBeUpdated.id}).subscribe( + data => { }, + error => { console.error(error); this.dialogRef.close(error)}, + () => { this.dialogRef.close("updated") } + ) + } +} diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.html b/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.html new file mode 100644 index 0000000000000000000000000000000000000000..7296ad1752769f069bfd7f1f5c53f76ea3df3b46 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.html @@ -0,0 +1,500 @@ +
+
+
+

Service with id #{{serviceID}} is not found

+
+
+
+
+
+
+
+
+
+
+
+

Service Overview And Management

+

Overview and Manage + {{service?.name}} service

+

{{service['@type']}}

+ +
+ Service created at + {{service?.serviceDate | date:'short'}} (Local Time) +
+
+
+
+
+ +
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+
Name
+

{{service?.name}}

+
+ +
+
Category
+

{{service?.category}}

+
+ +
+ +
State
+

+ {{service?.state}}

+
+ + + State + + + {{state}} + + + +
+ + +
+
Description
+

{{service?.description}}

+
+ +
+
Service Type
+

{{service?.serviceType}}

+
+ +
+
Start Mode
+

{{service?.startMode}}

+
+
+
+ + + +
+
Linked Service Orders
+

+ {{order.id}} +

+
+
+
Service Specification
+

{{service?.serviceSpecification.name}} +

+
+
+
+ +
+ +
Starting Date
+

+ {{service?.startDate | date:'d MMM y, h:mm a'}} - Local + Time

+

+ {{service?.startDate | date:'d MMM y, h:mm a':'UTC'}} - + UTC

+
+ + + Starting Date + + date_range + + Date is displayed in Local Time (UTC: + {{editForm.value.startDate | date:'dd/MM/yy, HH:mm':'UTC'}}) + + +
+ +
+ +
Ending Date
+

+ {{service?.endDate | date:'d MMM y, h:mm a'}} - Local + Time

+

+ {{service?.endDate | date:'d MMM y, h:mm a':'UTC'}} - + UTC

+
+ + + Ending Date + + date_range + + Date is displayed in Local Time (UTC: + {{editForm.value.startDate | date:'dd/MM/yy, HH:mm':'UTC'}}) + + +
+
+ + +
+ + +
+
Notes
+
+
+
+
+ {{note.text}} +
+ {{note.date | date:'d MMM y, h:mm:ss a'}} (Local Time) + by {{note.author}} +
+
+
+
+
+ +
+ +
+
+
+ + New Note + + + +
+
+
+
+
+ +
+
+ + +
+
+ + +
+ + + + + +
+
+
+
+ There are not any Service Specification Characteristics allocated. +
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Characteristic
+
+
Value (Alias)
+
{{specCharacteristic.name}} + + {{specCharacteristic.value.value}} ({{specCharacteristic.value.alias}}) + + + + + + + +
+ {{value.value}} ({{value.alias}}) +
+ +
+ + +
+ +
+ +
+
+ + + + +
+
+
+
+ There are not any Supporting Services allocated. +
+

+ {{suppServ.name}} +

+
+ +
+
+ + + + + +
+
+
+
+ There are not any Supporting Resources allocated. +
+

+ {{resource.name}} + {{resource.name}} +

+
+ +
+
+ + + +
+
+
+ +
+ There not any Contextual Features available at this service. +
+ + + + + + MANO NSLCM + + +
+ + +
+
+ + + + + MANO Primitives List + + +
+ + + + + + + VNF-Level Primitives + + +
+ + + Apply Filter to VNF Profile IDs... + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
VNF Profile ID {{element.vnf_id}} Primitive + {{element.primitive.name}} + + + + + Primitive Parameters + +
+
+ {{param?.name}} + ({{param['data-type']}}) +
+
+
Actions + + + +
+ + +
+ + + +
+
+
+
+ +
+
+ +
+
+
+
+
+
+ + +
+
+
+
diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.scss b/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..471ddc04795775033c4a1d2a84e9d5f0a17543cf --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.scss @@ -0,0 +1,43 @@ +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled { + color: rgba(0,0,0,.30); +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.tab-pane > .card { + min-height: max(250px, 20vh); +} + +.tab-pane .card .card-body.space-between{ + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.note-card-body { + padding: .5rem; +} + +table.table-borderless tbody tr td { + padding: 0; +} + +.notes-container { + max-height: 265px; + overflow-y: auto; +} + +mat-form-field { + width: 100%; +} + +.no-shadow { + box-shadow: none; +} \ No newline at end of file diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.spec.ts b/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..c2127bb73c5667b6bbc7527b272b9bd1db4d1f61 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PreviewServiceComponent } from './preview-service.component'; + +describe('PreviewServiceComponent', () => { + let component: PreviewServiceComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PreviewServiceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PreviewServiceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.ts b/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..715e06314352506b5eb4caa1d39134ff3ea3f7c3 --- /dev/null +++ b/src/app/p_services/admin/serviceActivationAndConfiguration/preview-service/preview-service.component.ts @@ -0,0 +1,326 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; +import { ServiceService } from 'src/app/openApis/serviceInventoryManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { Service, ServiceUpdate } from 'src/app/openApis/serviceActivationAndConfiguration/models'; +import { FormGroup, FormControl } from '@angular/forms'; +import { Subscription } from 'rxjs'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { MatDialog } from '@angular/material/dialog'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { EditServiceCharacteristicsComponent } from '../edit-service-characteristics/edit-service-characteristics.component'; +import { AppService } from 'src/app/shared/services/app.service'; +import { MatTableDataSource } from '@angular/material/table'; +import { MatPaginator } from '@angular/material/paginator'; +import { JsonEditorOptions } from 'ang-jsoneditor'; +import { ExecuteManoServicePrimitiveComponent } from '../execute-mano-service-primitive/execute-mano-service-primitive.component'; +import { HttpErrorResponse } from '@angular/common/http'; + + +@Component({ + selector: 'app-preview-service', + templateUrl: './preview-service.component.html', + styleUrls: ['./preview-service.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class PreviewServiceComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private serviceService: ServiceService, + private toast: ToastrService, + private router: Router, + private dialog: MatDialog, + private sortingService: SortingService, + private authService: AuthService, + private toastr: ToastrService, + public appService: AppService + ) { } + + serviceID: string + service: Service + newService: boolean = false + serviceNotFound: boolean = false + finishedLoading: boolean = false + + editForm = new FormGroup({ + state: new FormControl(), + note: new FormControl(), + startDate: new FormControl(), + endDate: new FormControl() + }) + editMode: boolean = false + + newNote: boolean = false + availableStates = ['feasibilityChecked', 'designed', 'reserved', 'inactive', 'active', 'terminated'] + + subscriptions = new Subscription() + + listItems = ["Main Properties", "Service Characteristics", "Supporting Services", "Supporting Resources", "Contextual Features"] + activeListItem = "Main Properties" + + jsonEditorOptions = new JsonEditorOptions() + + ngOnInit() { + + this.initSubscriptions() + + if (this.activatedRoute.snapshot.params.id) + { + this.serviceID = this.activatedRoute.snapshot.params.id + this.retrieveService() + this.configureJSONEditor() + } else { + this.newService = true + } + + } + + initSubscriptions() { + this.subscriptions.add(this.router.events.subscribe( + event => { + if (event instanceof ActivationEnd && event.snapshot.params && event.snapshot.params.id) { + this.serviceID = this.activatedRoute.snapshot.params.id + this.retrieveService() + } + } + )) + } + + configureJSONEditor() { + this.jsonEditorOptions.mode = "view" + this.jsonEditorOptions.sortObjectKeys = true + this.jsonEditorOptions.name = "NSLCM" + } + + + retrieveService() { + this.serviceService.retrieveService({id: this.serviceID}).subscribe( + data => { + this.service = data + }, + error => { + console.error(error) + }, + () => { + this.finishedLoading = true + if (!this.service) { + this.serviceNotFound = true + } + this.service.serviceCharacteristic.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + this.service.note.sort(this.sortingService.ascDateSortingFuncByDateProperty()) + this.editForm.patchValue({ + state: this.service.state, + startDate: this.service.startDate, + endDate: this.service.endDate + }) + + // only populate contextual features tab if the service = RFS. "ResourceFacingServiceSpecification" check remains for backwards compatibility, as it has been correctly changed to "ResourceFacingService" + if (this.service.category === "ResourceFacingService" || "ResourceFacingServiceSpecification") { + this.populateContextualFeatures() + } + } + ) + } + + // Main properties Tab block + // + + triggerNewNote() { + if (this.newNote) this.editForm.get('note').reset() + this.newNote = !this.newNote + } + + selectListitem(item: string) { + this.activeListItem = item + } + + enableServiceEditing() { + this.editMode = true + } + + cancelServiceEditing() { + this.editForm.patchValue({ + state: this.service.state, + startDate: this.service.startDate, + endDate: this.service.endDate + }) + this.editMode = false + } + + submitServiceEditing() { + this.editMode = false + let serviceUpdate: ServiceUpdate = { + state: this.editForm.get('state').value, + startDate: this.editForm.get('startDate').value, + endDate: this.editForm.get('endDate').value + } + if (this.editForm.get('note').value) { + serviceUpdate.note = [{ + author:this.authService.portalUserJWT.preferred_username, + text: this.editForm.get('note').value, + date: new Date().toISOString() + }] + } + + this.serviceService.patchService({service: serviceUpdate, id: this.serviceID}).subscribe( + data => { this.toast.success("Service is successfully updated") }, + error => { console.error(error), this.toastr.error("An error occurred updating this Service") }, + () => { + this.triggerNewNote() + this.retrieveService() + } + ) + } + + serviceStateClassSelector(state:'feasibilityChecked'| 'designed'| 'reserved'| 'inactive'| 'active'| 'terminated') { + let cssClass: string = 'badge' + switch (state) { + case 'feasibilityChecked': + cssClass += ' badge-primary' + break; + case 'inactive': + cssClass += ' badge-secondary' + break; + case 'terminated': + cssClass += ' badge-danger' + break; + case 'active': + cssClass += ' badge-success' + break; + default: + cssClass += ' badge-warning' + } + return cssClass + } + + // + // ENDOF Main properties Tab block + + + // Service Characteristics Tab block + // + openCharacteristicsEditDialog() { + const dialogRef = this.dialog.open(EditServiceCharacteristicsComponent, { + data: { + service: this.service, + }, + minWidth: "60vw" + }) + + dialogRef.afterClosed().subscribe( + result => { + if (result) { + this.toast.success("Service is successfully updated") + } + this.retrieveService() + } + ) + } + + // + // ENDOF Service Characteristics Tab block + + + // Contextual Features Tab block + // + NSLCMCharacteristic + NSLCMObject + primitivesListCharacteristic + + vnfPrimListDisplayColumns = ["VNF Profile ID", "Primitive", "Primitive Parameters", "Actions"] + vnfPrimListDatasource = new MatTableDataSource() + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + populateContextualFeatures() { + this.NSLCMCharacteristic = this.service.serviceCharacteristic.find(el => el.name === "NSLCM") + this.primitivesListCharacteristic = this.service.serviceCharacteristic.find(el => el.name === "PrimitivesList") + + // NSLCM display feature + const NSLCMCharacteristicValue = this.NSLCMCharacteristic?.value?.value + if (NSLCMCharacteristicValue) { + try { + this.NSLCMObject = JSON.parse(NSLCMCharacteristicValue) + } + catch { + this.NSLCMObject = {} + } + } + + // Primitives List feature + const primitivesListObjectValue = this.primitivesListCharacteristic?.value?.value + + let primitivesListObject + if (primitivesListObjectValue) { + try { + primitivesListObject = JSON.parse(primitivesListObjectValue) + } + catch { + primitivesListObject = {} + } + } + + if (this.primitivesListCharacteristic && primitivesListObject) { + + // list VNF-level primitives + const vnfPrimitives = primitivesListObject['vnfs'] + if (vnfPrimitives && vnfPrimitives.length) { + let primListDataSource: { "vnf_id":string, "primitive":{"name":string, "parameter"?:{"name":string, "data-type":string}[]} }[] = [] + vnfPrimitives.forEach( vnf => { + if (vnf['config-primitive'] && vnf['config-primitive'].length) { + vnf['config-primitive'].forEach ( primitive => { + // if the vnf primitive has parameters + if (primitive?.parameter && primitive?.parameter?.length) { + primListDataSource.push({"vnf_id":vnf.id, "primitive": {"name":primitive.name, "parameter": primitive.parameter}}) + } + // if the vnf primitive does not have parameters + else { + primListDataSource.push({"vnf_id":vnf.id, "primitive": {"name":primitive.name}}) + } + }) + } + }) + this.vnfPrimListDatasource.data = primListDataSource + this.vnfPrimListDatasource.paginator = this.paginator + } + } + } + + openExecutePrimitiveDialog(element: {"vnf_id":string, "primitive":{"name":string, "parameter"?:{"name":string, "data-type":string}[]}}) { + const dialogRef = this.dialog.open(ExecuteManoServicePrimitiveComponent, { + data: { + primitiveType: "VNF-level Primitive", + serviceToBeUpdated: this.service, + primitive: element + } + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to queue the service primitive for execution") + } else { + // check if something is returned from the dialog (updated service object) or the dialog is cancelled + if (result) { + this.toast.success("The service primitive was successfully queued for execution. Please check NSLCM for updates.") + this.retrieveService() + } + } + } + ) + } + + applyVNFPrimListFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.vnfPrimListDatasource.filter = filterValue; + } + // + // Contextual Features Tab block + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } +} diff --git a/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.html b/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.html new file mode 100644 index 0000000000000000000000000000000000000000..01c0ad0bf8d0014726bdfd15f9737897f8c93958 --- /dev/null +++ b/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.html @@ -0,0 +1,12 @@ +

+ + Confirm import +

+
+ Are you sure you want to import {{experiment.name}} as a Service Specification? +
+ +
+ + +
\ No newline at end of file diff --git a/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.scss b/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.spec.ts b/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..3aade624c7dfffbaa75a7d510abba0a8e1c8f64f --- /dev/null +++ b/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ImportNsdDialogComponent } from './import-nsd-dialog.component'; + +describe('ImportNsdDialogComponent', () => { + let component: ImportNsdDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ImportNsdDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ImportNsdDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.ts b/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..7befb2cd781ccdcc2b5599e629aabc65adfd0782 --- /dev/null +++ b/src/app/p_services/admin/serviceDescriptorsImport/import-nsd-dialog/import-nsd-dialog.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-import-nsd-dialog', + templateUrl: './import-nsd-dialog.component.html', + styleUrls: ['./import-nsd-dialog.component.scss'] +}) +export class ImportNsdDialogComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public experiment, + private specService: ServiceSpecificationService, + private dialogRef: MatDialogRef, + private toast: ToastrService + ) { } + + ngOnInit() { + } + + submitDialog() { + this.specService.createServiceSpecificationFromNSDID(this.experiment.id).subscribe( + data => { + this.dialogRef.close(data) + }, + error => { console.error(error); this.toast.error("An error occurred while importing NSD") } + ) + + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.html b/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.html new file mode 100644 index 0000000000000000000000000000000000000000..1aaced28ff4915721c632495a54b283f748f8892 --- /dev/null +++ b/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.html @@ -0,0 +1,73 @@ +
+
+
+
+
+
+

Import NSDs

+

Create a Service Specification from a NSD. The NSD is retrieved from NSD/VNF catalog.

+
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Owner {{element.owner?.username}} Teaser + {{element.shortDescription}} + {{element.shortDescription | slice:0:49}}... + Onboarded +
{{onboardingDescriptor.obMANOprovider.name}}
+
Packaging Format {{element.packagingFormat}} Actions + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.scss b/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.spec.ts b/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..64faf338c80c82541651e6ec9c29b693da2d7d2b --- /dev/null +++ b/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListNsdComponent } from './list-nsd.component'; + +describe('ListNsdComponent', () => { + let component: ListNsdComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListNsdComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListNsdComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.ts b/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..e81dccd4c1092d42f9ebc964a01a90187aa137fd --- /dev/null +++ b/src/app/p_services/admin/serviceDescriptorsImport/list-nsd.component.ts @@ -0,0 +1,75 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ArtifactsApiControllerService } from 'src/app/openApis/portalRepositoryAPI/services'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ImportNsdDialogComponent } from './import-nsd-dialog/import-nsd-dialog.component'; +import { Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; +import { AppService } from 'src/app/shared/services/app.service'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; + +@Component({ + selector: 'app-list-nsd', + templateUrl: './list-nsd.component.html', + styleUrls: ['./list-nsd.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListNsdComponent implements OnInit { + + constructor( + private artifactsApiService: ArtifactsApiControllerService, + private dialog: MatDialog, + private router: Router, + private toast: ToastrService, + private appService: AppService, + ) { } + + displayedColumns = ['name', 'owner','short_description', 'onboarded', 'packaging_format', 'actions'] + dataSource = new MatTableDataSource() + experiments: any + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveExperiments() + } + + retrieveExperiments() { + this.artifactsApiService.getAllAppsUsingGET().subscribe( + data => this.experiments = data, + error => console.error(error), + () => { + this.dataSource.data = this.experiments + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + openImportDialog(experiment) { + const dialogRef = this.dialog.open(ImportNsdDialogComponent, {data: experiment}) + + dialogRef.afterClosed().subscribe ( + (result: ServiceSpecification) => { + if (result) { + this.toast.success(`Service Specification is successfully created form ${experiment.name}`) + this.router.navigate([this.appService.portalDomain, 'service_spec_update', result.id]) + } + } + ) + } + + +} diff --git a/src/app/p_services/admin/shared/cache-search-parameters.service.spec.ts b/src/app/p_services/admin/shared/cache-search-parameters.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f30c1bf83df1e143d0cd650fca2de70dcf60999 --- /dev/null +++ b/src/app/p_services/admin/shared/cache-search-parameters.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { CacheSearchParametersService } from './cache-search-parameters.service'; + +describe('CacheSearchParametersService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: CacheSearchParametersService = TestBed.get(CacheSearchParametersService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/shared/cache-search-parameters.service.ts b/src/app/p_services/admin/shared/cache-search-parameters.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f21af4951d974098633bfeefac90cd0c4a065c7 --- /dev/null +++ b/src/app/p_services/admin/shared/cache-search-parameters.service.ts @@ -0,0 +1,12 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class CacheSearchParametersService { + + constructor() { } + + serviceOrderListDateFrom = new Date(new Date().setMonth(new Date().getMonth()-3)) + serviceOrderListDateTo = new Date() +} diff --git a/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.html b/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.html new file mode 100644 index 0000000000000000000000000000000000000000..e842c2c6258b274de0eeb41a1eb6186c547d3b4d --- /dev/null +++ b/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.html @@ -0,0 +1,12 @@ +

+ +Confirm import +

+
+Are you sure you want to import {{testSpecification.name}} as a Service Specification? +
+ +
+ + +
\ No newline at end of file diff --git a/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.scss b/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.spec.ts b/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..cb6a9045cb4825e0c09cbd48a03a2facab642a0f --- /dev/null +++ b/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ImportTestDialogComponent } from './import-test-dialog.component'; + +describe('ImportTestDialogComponent', () => { + let component: ImportTestDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ImportTestDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ImportTestDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.ts b/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..236f2635c7f8d7c4b15f6c08a728a8a99510a9ae --- /dev/null +++ b/src/app/p_services/admin/testSpecificationImport/import-test-dialog/import-test-dialog.component.ts @@ -0,0 +1,37 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ServiceTestSpecification } from 'src/app/openApis/serviceTestManagement/models'; + +@Component({ + selector: 'app-import-test-dialog', + templateUrl: './import-test-dialog.component.html', + styleUrls: ['./import-test-dialog.component.scss'] +}) +export class ImportTestDialogComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public testSpecification: ServiceTestSpecification, + private specService: ServiceSpecificationService, + private dialogRef: MatDialogRef, + private toast: ToastrService + ) { } + + ngOnInit() { + } + + submitDialog() { + this.specService.createServiceSpecificationFromServiceTestSpecification(this.testSpecification.id).subscribe( + data => { + this.dialogRef.close(data) + }, + error => { console.error(error); this.toast.error("An error occurred while importing Test Specification") } + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_services/admin/testSpecificationImport/list-tests.component.html b/src/app/p_services/admin/testSpecificationImport/list-tests.component.html new file mode 100644 index 0000000000000000000000000000000000000000..5476b0d9ea763ba6535af16d0f9142ad41144288 --- /dev/null +++ b/src/app/p_services/admin/testSpecificationImport/list-tests.component.html @@ -0,0 +1,65 @@ +
+
+
+
+
+
+

Import Tests

+

Create a Service Specification from a Test Specification. The tests are retrieved from test specification catalog.

+
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description}} + {{element.description | slice:0:49}}... + Version {{element.version}} Imported as + {{element.relatedServiceSpecification[0].id}} + Actions + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_services/admin/testSpecificationImport/list-tests.component.scss b/src/app/p_services/admin/testSpecificationImport/list-tests.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_services/admin/testSpecificationImport/list-tests.component.spec.ts b/src/app/p_services/admin/testSpecificationImport/list-tests.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..721511c0d15f3b4d80d21c3cc0b7a288c71bba37 --- /dev/null +++ b/src/app/p_services/admin/testSpecificationImport/list-tests.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListTestsComponent } from './list-tests.component'; + +describe('ListTestsComponent', () => { + let component: ListTestsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListTestsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListTestsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/admin/testSpecificationImport/list-tests.component.ts b/src/app/p_services/admin/testSpecificationImport/list-tests.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..ffce946c5082ff66fac1560c82a2f1beb9d82fd5 --- /dev/null +++ b/src/app/p_services/admin/testSpecificationImport/list-tests.component.ts @@ -0,0 +1,74 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceTestSpecification } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestSpecificationService } from 'src/app/openApis/serviceTestManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; +import { ImportTestDialogComponent } from './import-test-dialog/import-test-dialog.component'; + +@Component({ + selector: 'app-list-tests', + templateUrl: './list-tests.component.html', + styleUrls: ['./list-tests.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListTestsComponent implements OnInit { + + constructor( + private dialog: MatDialog, + private router: Router, + private toast: ToastrService, + private testSpecService: ServiceTestSpecificationService, + public appService: AppService, + ) { } + + displayedColumns = ['name', 'description', 'version', 'relatedService', 'actions'] + dataSource = new MatTableDataSource() + testSpecifications: ServiceTestSpecification[] = [] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveTestSpecifications() + } + + retrieveTestSpecifications() { + this.testSpecService.listServiceTestSpecification({}).subscribe( + data => this.testSpecifications = data, + error => console.error(error), + () => { + this.dataSource.data = this.testSpecifications + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + openImportDialog(testSpecification) { + const dialogRef = this.dialog.open(ImportTestDialogComponent, {data: testSpecification}) + + dialogRef.afterClosed().subscribe ( + (result: ServiceSpecification) => { + if (result) { + this.toast.success(`Service Specification is successfully created form ${testSpecification.name}`) + this.router.navigate([this.appService.portalDomain, 'service_spec_update', result.id]) + } + } + ) + } + +} diff --git a/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.html b/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.html new file mode 100644 index 0000000000000000000000000000000000000000..40c976e5b1c866324d0ebb6e10670ed5dea8f187 --- /dev/null +++ b/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.html @@ -0,0 +1,190 @@ +
+ + + + +
+
+
+ Service Image + + +
+
+ +
+
{{spec?.name}}
+ +
+
+ {{category.name}} +
+
+ +
+
+ Version +
+ {{spec?.version}} +
+
+
+ Bundle +
+ {{spec?.isBundle}} +
+
+ +
+ + + +
+ You must be logged in to place an order +
+ + +
+ + +
+
+ Description +
+ +
+
+
+ + +
+ + +
Service Characteristics
+ + +
+ + + +
+ + User Defined Service Characteristics +
+ +
This service does not contain any configurable characteristics
+ +
+ + + + + + + + + + + + + + + + + + + +
Characteristic's Name + {{element.name}} Default Values + +
{{val.value.value}} ({{val.value.alias}}) + +
+
{{val.unitOfMeasure}}
+ +
+
+
+ +
+ + + + + Predefined Service Characteristics +
+ +
This service does not contain any predefined characteristics
+ +
+ + + + + + + + + + + + + + + + + + +
Characteristic's Name + {{element.name}} Default Values + + {{val.value.value}} ({{val.value.alias}}) + +
+
{{val.unitOfMeasure}}
+ +
+
+
+ +
+ +
+ +
+ + +
+ +
+ + + + + + diff --git a/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.scss b/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..2b6801944fbba50d781d50d2553088b1507bea89 --- /dev/null +++ b/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.scss @@ -0,0 +1,75 @@ +.mat-dialog-title { + font-weight: 500; +} + +.description-text { + color: #9a9a9a; +} + +.image-container { + height: 150px; + // border: 2px solid #ccc; + margin-bottom: .5rem; + display: flex; + align-items: center; + justify-content: center; +} + +.image-container img { + border-radius: 6px; +} + + +.img-fluid { + max-height: 100%; +} + +.isConfigurable-class td{ + color:#3f51b5 +} + + +/////@at-root +.dialog-content-container { + min-width: 40vw; +} + +.header-section { + font-size: 1.4rem; + font-weight: 500; +} + +.general-info-tab { + margin-bottom: .75rem; +} + +.separator-div { + height: 0; + margin: 1rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.table th, .table td { + border-top: 0 +} + +.no-chars-found { + font-style: italic; + margin-top: 1rem; + // text-align: center; +} + +span.hidden { + display: none; +} + +.mat-column-defaultValues span:last-child span span.comma-separator { + display: none; +} + +.value-measureUnits { + color: #727272; + font-size: 11px; + line-height: 1.1; +} \ No newline at end of file diff --git a/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.spec.ts b/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..51ba93e6210baf76b4f44a769bab70adf8092a05 --- /dev/null +++ b/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PreviewMarketplaceItemComponent } from './preview-marketplace-item.component'; + +describe('PreviewServiceComponent', () => { + let component: PreviewMarketplaceItemComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PreviewMarketplaceItemComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PreviewMarketplaceItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.ts b/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c0c0e5a1d0777fb03ae7fd279b1750b686628270 --- /dev/null +++ b/src/app/p_services/marketplace/preview-marketplace-item/preview-marketplace-item.component.ts @@ -0,0 +1,150 @@ +import { Component, OnInit, Inject, ViewChild } from '@angular/core'; +import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ServiceCandidate, ServiceSpecification, ServiceSpecCharacteristicValue, ServiceSpecCharacteristic, AttachmentRef } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { RequesterService } from 'src/app/p_services/orderCheckout/services/requester.service'; +import { ToastrService } from 'ngx-toastr'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { ThemingService } from 'src/app/theming/theming.service'; + + +@Component({ + selector: 'app-preview-service', + templateUrl: './preview-marketplace-item.component.html', + styleUrls: ['./preview-marketplace-item.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class PreviewMarketplaceItemComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + serviceCandidate: ServiceCandidate + }, + private dialogRef: MatDialogRef, + private specService: ServiceSpecificationService, + private requesterService: RequesterService, + private toastr: ToastrService, + private sortingService: SortingService, + public authService: AuthService, + private themingService: ThemingService + ) { } + + candidate: ServiceCandidate + spec: ServiceSpecification + specLogoRef: AttachmentRef + specLogoUrl: string + specServiceRootUrl: string + + displayedColumns = ['name', 'defaultValues'] + dataSourceConf = new MatTableDataSource() + + dataSourceNonConf = new MatTableDataSource() + + @ViewChild('sort1', {static: true}) sort1: MatSort; + @ViewChild('sort2', {static: true}) sort2: MatSort; + + + orderView = false + + ngOnInit() { + this.specServiceRootUrl = this.specService.rootUrl + + this.candidate = this.data.serviceCandidate + this.retrieveServiceSpec(this.data.serviceCandidate) + } + + configurableFilterChanged(event:MatCheckboxChange) { + if (event.checked) this.dataSourceConf.data = this.spec.serviceSpecCharacteristic.filter(spec => spec.configurable) + else this.dataSourceConf.data = this.spec.serviceSpecCharacteristic + } + + retrieveServiceSpec(candidate: ServiceCandidate) { + this.specService.retrieveServiceSpecification({id: candidate.serviceSpecification.id}).subscribe( + data => this.spec = data, + error => console.error(error), + () => { + this.dataSourceConf.data = this.spec.serviceSpecCharacteristic.filter(spec => spec.configurable) + this.dataSourceConf.sort = this.sort1 + this.dataSourceNonConf.data = this.spec.serviceSpecCharacteristic.filter(spec => !spec.configurable) + this.dataSourceNonConf.sort = this.sort2 + + //Check if spec has a defined logo + this.specLogoRef = this.spec.attachment.find( att => att.name.includes('logo') ) + if (this.specLogoRef) { + this.specLogoUrl = this.specServiceRootUrl+this.specLogoRef.url + } else { + this.specLogoUrl = this.themingService.getConfig().DEPLOYMENT_LOGO_PATH + } + } + ) + } + + closeDialog() { + this.dialogRef.close() + } + + + placeInOrderList() { + if (!this.requesterService.orderedSpecsList.some(el => el.id === this.spec.id)) { + // this.requesterService.serviceSpecsCart.push(this.spec) + + this.requesterService.orderedSpecsList.push(this.spec) + this.saveOrderToLocalStorage(this.spec.id) + + // this.requesterService.serviceConfigurationList.push({ + // spec: this.spec, + // checked: false, + // specCharacteristics: this.initCharacteristicsValue() + // }) + this.dialogRef.close("added_to_order_list") + } else { + this.toastr.warning("This Service is already in your Service Order List") + } + } + + saveOrderToLocalStorage(specId) { + let orderArray = [] + orderArray = JSON.parse(localStorage.getItem('orderedSpecsList')) || [] + orderArray.push(specId) + localStorage.setItem('orderedSpecsList', JSON.stringify(orderArray)) + } + + initCharacteristicsValue() { + let initialCharValues: { + name: string, + valueType: string, + value: ServiceSpecCharacteristicValue[] + }[] =[] + + const configurableSpecChar = this.spec.serviceSpecCharacteristic.filter(specChar => specChar.configurable) + + configurableSpecChar.forEach( confSpecChar => { + + const charDefaultValueArray = confSpecChar.serviceSpecCharacteristicValue.filter( val => val.isDefault ) + + //In case there are no Default Values assigned, initiate Default Value Array with null values + if (charDefaultValueArray.length === 0) {charDefaultValueArray[0] = {value: {value:'' , alias:''}}} + + initialCharValues.push({ + name: confSpecChar.name, + valueType: confSpecChar.valueType, + value: charDefaultValueArray + }) + }) + + + initialCharValues.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + + + return initialCharValues + } + +} diff --git a/src/app/p_services/marketplace/services-marketplace.component.html b/src/app/p_services/marketplace/services-marketplace.component.html new file mode 100644 index 0000000000000000000000000000000000000000..0825fd2e5531eac54ca3ea6c3403db5a13edbe29 --- /dev/null +++ b/src/app/p_services/marketplace/services-marketplace.component.html @@ -0,0 +1,106 @@ +
+
+
+ +
+
Service Catalog Explorer
+
+ +
+
+ +
+
+
+

Welcome to the {{config.TITLE}} Services Marketplace

+
Browse available services and sign in to order
+
+ +
+
+
Service Specifications of {{selectedCategory.name}} category
+ {{selectedCategory.description}} + Description not available +
+
+ + Filter services... + + +
+ +
+
+
+
+
+ {{candidate.name}} + +
+
+
+
+
+ Service Image + + +
+
+
+
Version: {{candidate.version}}
+
+
+ {{category.name}} +
+
+ +
+ + + + {{candidate.description | slice:0:59}} ... + + + {{candidate.description}} + + +
+ + + +
+
+
+ + +
+
+
+ +
+ No results found... +
+ +
+ +
+ +
+
+ +
\ No newline at end of file diff --git a/src/app/p_services/marketplace/services-marketplace.component.scss b/src/app/p_services/marketplace/services-marketplace.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..85a6cee4615ee67c78a452b751f868a8373a7c2a --- /dev/null +++ b/src/app/p_services/marketplace/services-marketplace.component.scss @@ -0,0 +1,99 @@ +.catalog-tree-header { + letter-spacing: 0px; + // font-size: 1.2em; + padding: 1rem; + // font-weight: bold; +} + +.catalog-tree-container { + padding: 0 .85rem .25rem .25rem +} + +.catalog-header { + padding: .5rem .5rem; + font-weight: bold; + letter-spacing: 1px; + text-decoration: underline; + font-size: 1.1rem; +} + +.appTitle { + font-size: 1.25rem; + // font-weight: bold; + // padding-left: 0px; + // border-bottom: rgb(238, 207, 207); + border-bottom-style: dotted; + border-bottom-width: 1px; + // margin-bottom: 5px; + // padding-bottom: 5px; +} + +.card.card-paper { + border-radius: 12px; + box-shadow: 0 6px 10px -4px rgba(0,0,0,.15); + background-color: #fff; + color: #252422; + margin-bottom: 20px; + position: relative; + border: 0; + transition: box-shadow .2s ease,-webkit-transform .3s cubic-bezier(.34,2,.6,1); + transition: transform .3s cubic-bezier(.34,2,.6,1),box-shadow .2s ease; + transition: transform .3s cubic-bezier(.34,2,.6,1),box-shadow .2s ease,-webkit-transform .3s cubic-bezier(.34,2,.6,1); +} + +.card.card-paper .card-header { + // padding: 15px 15px 0; + padding: 15px; + // border: 0; +} + +.card.card-paper .card-body { + padding: 15px 15px 0px; +} + +.card.card-paper .card-footer { + padding: 0px 15px 15px; + border: 0; + background: transparent; +} + +.img-container { + height: 200px; + display: flex; + align-items: center; + justify-content: center; +} + +.info-container { + display: flex; + flex-direction: column; + justify-content: center; + min-height: 200px; + // align-items: center; +} + +.description-container { + max-height: 80px; + overflow: hidden; +} + +.img-container img { + border-radius: 6px; +} + +.img-fluid { + max-height: 100%; +} + +.card-stats { + font-size: .9rem; + display: flex; + align-items: center; +} + +.card-stats i { + font-size: .9em; +} +// .img-responsive { +// min-height: 300px; +// } \ No newline at end of file diff --git a/src/app/p_services/marketplace/services-marketplace.component.spec.ts b/src/app/p_services/marketplace/services-marketplace.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..f2a7bfb1836770064009726f5797c851a58af8f7 --- /dev/null +++ b/src/app/p_services/marketplace/services-marketplace.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ServicesMarketplaceComponent } from './services-marketplace.component'; + +describe('ServicesMarketplaceComponent', () => { + let component: ServicesMarketplaceComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ServicesMarketplaceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ServicesMarketplaceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/marketplace/services-marketplace.component.ts b/src/app/p_services/marketplace/services-marketplace.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8924d1e7cc956d90a923da8656b69ac365bc73b5 --- /dev/null +++ b/src/app/p_services/marketplace/services-marketplace.component.ts @@ -0,0 +1,174 @@ +import { Component, OnInit } from '@angular/core'; +import { ServiceCatalogService, ServiceCandidateService, ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; +import { ServiceCatalog, ServiceCategoryRef, ServiceCategory, ServiceCandidateRef, ServiceCandidate, ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models'; +import { TreeServiceMarketPlaceService } from './services/tree-service-market-place.service'; +import { Observable, Subscription } from 'rxjs'; +import { FormControl } from '@angular/forms'; +import { startWith, map } from 'rxjs/operators'; +import { MatDialog } from '@angular/material/dialog'; +import { PreviewMarketplaceItemComponent } from './preview-marketplace-item/preview-marketplace-item.component'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { trigger } from '@angular/animations'; +import { simpleFade } from 'src/app/shared/animations/animations'; +import { ServiceCandidateWithLogo } from 'src/app/shared/models/service-candidate-with-logo.model'; +import { AppService } from 'src/app/shared/services/app.service'; +import { IAppConfig } from 'src/app/shared/models/app-config.model'; +import { ThemingService } from 'src/app/theming/theming.service'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'app-services-marketplace', + templateUrl: './services-marketplace.component.html', + styleUrls: ['./services-marketplace.component.scss'], + animations: [ trigger('simpleFade', simpleFade()) ] +}) + +export class ServicesMarketplaceComponent implements OnInit { + + constructor( + private appService: AppService, + private catalogService: ServiceCatalogService, + // private categoryService: ServiceCategoryService, + private candidateService: ServiceCandidateService, + private specificationService: ServiceSpecificationService, + private treeMarketPlaceService: TreeServiceMarketPlaceService, + private dialog: MatDialog, + private sortingService: SortingService, + private themingService: ThemingService, + private activatedRoute: ActivatedRoute + ) { } + + serviceCatalogs: ServiceCatalog[] + isCatalogsCollapsed: Boolean[] = [] + + selectedCategoryRef: ServiceCategoryRef + + selectedCategory: ServiceCategory + + serviceCandidates: ServiceCandidateWithLogo[] = [] + + serviceCandidatesFilterCtrl = new FormControl(); + filteredServiceCandidates$: Observable + + specServiceRootUrl : string + config: IAppConfig + + resultsNotFound: boolean = false + subscriptions = new Subscription() + + ngOnInit() { + this.config = this.appService.config + + this.specServiceRootUrl = this.specificationService.rootUrl + + this.retrieveCatalogsList() + + this.treeMarketPlaceService.categorySelected$.subscribe( + category => { + this.selectedCategory = category + this.serviceCandidates = [] + this.serviceCandidatesFilterCtrl.reset() + this.resultsNotFound = category.serviceCandidate.length === 0 + this.subscriptions.unsubscribe() + this.subscriptions = new Subscription() + category.serviceCandidate.forEach((candidateRef) => { + this.retrieveCandidateFromRef(candidateRef) + }) + } + ) + + const queryParams = this.activatedRoute.snapshot.queryParams.spec + if (queryParams) { + this.retrieveCandidateFromSpecID(queryParams) + } + } + + retrieveCatalogsList() { + this.catalogService.listServiceCatalog({}).subscribe( + data => { this.serviceCatalogs = data }, + error => { console.error(error) }, + () => { + this.treeMarketPlaceService.catalogs$.next(this.serviceCatalogs) + } + ) + } + + retrieveCandidateFromSpecID(specID: string) { + this.candidateService.listServiceCandidate({}).subscribe( + data => { + const candidate = data.find(cand => { + if (cand.serviceSpecification && cand.serviceSpecification.id) { + return cand.serviceSpecification.id === specID + } + }) + if (candidate) {this.previewServiceSpec(candidate)} + }, + error => { console.error(error) } + ) + } + + retrieveCandidateFromRef(candidateRef: ServiceCandidateRef) { + + this.subscriptions.add(this.candidateService.retrieveServiceCandidate({ id: candidateRef.id }).subscribe( + data => { + // console.log(data) + let candidate: ServiceCandidateWithLogo = data + candidate.fetchingLogo = true + candidate.logo = this.themingService.getConfig().DEFAULT_SERVICE_LOGO_PATH //set Default App Image, path defined in theming.service.ts + + this.serviceCandidates.push(candidate) + + this.specificationService.getAttachment({id: data.serviceSpecification.id, attid:'logo'}).subscribe( + data => { + const reader = new FileReader(); + reader.readAsDataURL(data); + reader.onload = (__event) => { + const base64data = reader.result; + this.serviceCandidates.find(cand => cand.id === candidateRef.id).logo = base64data + candidate.fetchingLogo = false + } + }, + error => { + candidate.fetchingLogo = false + // console.error (error) + } + ) + + }, + error => { console.error(error) }, + () => { + this.serviceCandidates.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + this.filteredServiceCandidates$ = this.serviceCandidatesFilterCtrl.valueChanges.pipe( + startWith(null), + map( (value:null | string) => value ? this._filterOnServiceCandidates(value) : this.serviceCandidates.slice() ) + ) + } + )) + } + + private _filterOnServiceCandidates(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + return this.serviceCandidates.filter( cand => cand.name.toLowerCase().includes(filterValue) ) + } + + previewServiceSpec(candidate: ServiceCandidate) { + const dialogRef = this.dialog.open(PreviewMarketplaceItemComponent, { + data: { + serviceCandidate: candidate + }, + autoFocus: false + }) + + dialogRef.afterClosed().subscribe( + result => { + // console.log(result); + } + ) + } + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } + +} diff --git a/src/app/p_services/marketplace/services/tree-service-market-place.service.spec.ts b/src/app/p_services/marketplace/services/tree-service-market-place.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..f531f0ad64917e57cf7e67f458f1fa9f28434b52 --- /dev/null +++ b/src/app/p_services/marketplace/services/tree-service-market-place.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { TreeServiceMarketPlaceService } from './tree-service-market-place.service'; + +describe('TreeServiceMarketPlaceService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: TreeServiceMarketPlaceService = TestBed.get(TreeServiceMarketPlaceService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/marketplace/services/tree-service-market-place.service.ts b/src/app/p_services/marketplace/services/tree-service-market-place.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f0202c9b0c8e6cd8c40db728839d2563f118026 --- /dev/null +++ b/src/app/p_services/marketplace/services/tree-service-market-place.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; +import { Subject } from 'rxjs'; +import { ServiceCatalog, ServiceCategory } from 'src/app/openApis/serviceCatalogManagement/models'; + +@Injectable({ + providedIn: 'root' +}) +export class TreeServiceMarketPlaceService { + + constructor() { } + + catalogs$: Subject = new Subject + categorySelected$: Subject = new Subject +} diff --git a/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.html b/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.html new file mode 100644 index 0000000000000000000000000000000000000000..f4513d62488cdfa2219e53c9fc053f528eb9b2e1 --- /dev/null +++ b/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.html @@ -0,0 +1,20 @@ + + + + {{node.item}} + {{node.item}} + + + + + {{node.item}} + {{node.item}} + + + + \ No newline at end of file diff --git a/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.scss b/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..be9032727f7401fb7032a0b1a7ec972606a7c138 --- /dev/null +++ b/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.scss @@ -0,0 +1,34 @@ +.mat-tree-node { + font-size: 0.9em; +} + +.catalog-header { + // padding: 5rem .5rem; + font-weight: bold; + // letter-spacing: 1px; + // text-decoration: underline; + font-size: 1em; + cursor: pointer; +} + +.node-header { + cursor: pointer; +} + +.catalog-divider { + height: 0; + // margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.active { + // padding: 0.5rem 1rem; + padding: 0.25rem 0.75rem; + color: #fff; + text-shadow: 4px 4px 6px #aaa; + border-radius: 0.25rem; + transition: all 0.2s; + +} + diff --git a/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.spec.ts b/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b4a7cb7a50baa8f81503243bffa28393c885c556 --- /dev/null +++ b/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TreeSidenavComponent } from './tree-sidenav.component'; + +describe('TreeSidenavComponent', () => { + let component: TreeSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TreeSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TreeSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.ts b/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..39657d815e9341ff600216c37a9d30a334ee05d6 --- /dev/null +++ b/src/app/p_services/marketplace/tree-sidenav/tree-sidenav.component.ts @@ -0,0 +1,159 @@ +import {CollectionViewer, SelectionChange} from '@angular/cdk/collections'; +import {FlatTreeControl} from '@angular/cdk/tree'; +import {Component, Injectable} from '@angular/core'; +import {BehaviorSubject, merge, Observable, forkJoin} from 'rxjs'; +import {map} from 'rxjs/operators'; +import { TreeServiceMarketPlaceService } from '../services/tree-service-market-place.service'; +import { ServiceCatalog, ServiceCategory } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceCategoryService } from 'src/app/openApis/serviceCatalogManagement/services'; + +export class DynamicFlatNode { + constructor(public item: string, public level = 1, public expandable = false, + public info: ServiceCatalog|ServiceCategory, + public isLoading = false) {} +} + + +@Injectable() +export class DynamicDataSource { + + dataChange = new BehaviorSubject([]); + + get data(): DynamicFlatNode[] { return this.dataChange.value; } + set data(value: DynamicFlatNode[]) { + this._treeControl.dataNodes = value; + this.dataChange.next(value); + } + + constructor(private _treeControl: FlatTreeControl, + private _categoryService: ServiceCategoryService) {} + + connect(collectionViewer: CollectionViewer): Observable { + this._treeControl.expansionModel.changed.subscribe(change => { + if ((change as SelectionChange).added || + (change as SelectionChange).removed) { + this.handleTreeControl(change as SelectionChange); + } + }); + + return merge(collectionViewer.viewChange, this.dataChange).pipe(map(() => this.data)); + } + + /** Handle expand/collapse behaviors */ + handleTreeControl(change: SelectionChange) { + if (change.added) { + change.added.forEach(node => this.toggleNode(node, true)); + } + if (change.removed) { + change.removed.slice().reverse().forEach(node => this.toggleNode(node, false)); + } + } + + /** + * Toggle the node, remove from display list + */ + toggleNode(node: DynamicFlatNode, expand: boolean) { + + // const children = this._database.getChildren(node.item); + const index = this.data.indexOf(node); + + if (node.info.category.length === 0 || index < 0) { // If no children, or cannot find the node, no op + return; + } + + if (expand) { + let childrenCategoryRequests: Observable[] = [] + + node.info.category.forEach(child => { + childrenCategoryRequests.push(this._categoryService.retrieveServiceCategory({ id: child.id })) + }) + + forkJoin(childrenCategoryRequests).subscribe( + children => { + const nodes = children.map(category => + new DynamicFlatNode(category.name, node.level + 1, category.category.length > 0, category)); + this.data.splice(index + 1, 0, ...nodes); + // notify the change + this.dataChange.next(this.data); + } + ) + } else { + let count = 0; + for (let i = index + 1; i < this.data.length + && this.data[i].level > node.level; i++ , count++) { } + this.data.splice(index + 1, count); + // notify the change + this.dataChange.next(this.data); + } + + // // notify the change + // this.dataChange.next(this.data); + + + // node.isLoading = true; + + // setTimeout(() => { + // if (expand) { + // const nodes = children_Categories.map(cat => + // new DynamicFlatNode(cat.name, node.level + 1, true, cat)); + // this.data.splice(index + 1, 0, ...nodes); + // } else { + // let count = 0; + // for (let i = index + 1; i < this.data.length + // && this.data[i].level > node.level; i++, count++) {} + // this.data.splice(index + 1, count); + // } + + // // notify the change + // console.log(this.data) + // this.dataChange.next(this.data); + // node.isLoading = false; + // }, 1000); + + // fetchCategoryFromRef() => {} + } +} + +/** + * @title Tree with dynamic data + */ + +@Component({ + selector: 'app-tree-sidenav', + templateUrl: './tree-sidenav.component.html', + styleUrls: ['./tree-sidenav.component.scss'] + +}) +export class TreeSidenavComponent { + + constructor(categoryService: ServiceCategoryService, private treeMarketPlaceService: TreeServiceMarketPlaceService) { + this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable); + this.dataSource = new DynamicDataSource(this.treeControl, categoryService); + } + + treeControl: FlatTreeControl; + + dataSource: DynamicDataSource; + + getLevel = (node: DynamicFlatNode) => node.level; + + isExpandable = (node: DynamicFlatNode) => node.expandable; + + hasChild = (_: number, _nodeData: DynamicFlatNode) => _nodeData.expandable; + + ngOnInit(): void { + this.treeMarketPlaceService.catalogs$.subscribe( + data => { + // this.initialDataObjArr = data + const initialData = data.map(catalog => new DynamicFlatNode(catalog.name, 0, catalog.category.length > 0, catalog )) + this.dataSource.data = initialData + } + ) + } + + selectedTreeNodeID: string + selectTreeNode(node: DynamicFlatNode) { + this.selectedTreeNodeID = node.info.id + this.treeMarketPlaceService.categorySelected$.next(node.info) + } +} diff --git a/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.html b/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.html new file mode 100644 index 0000000000000000000000000000000000000000..52ba9cc0b073e96479466362b157de6d1935cbe3 --- /dev/null +++ b/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.html @@ -0,0 +1,221 @@ +
+ + +

Service Order Checkout

+ + +

+ Service Order List is empty +

+ + + +
+
+
+
+ Selected Service Configuration + {{selectedOrderSpecToView?.spec.name}} +
+
+ +
+ This service does not contain any configurable characteristics +
+ +
+
+
+
+ + + {{charForm.get('name').value}} +
+ +
+
+ + + + + + + + + + + + + + + + + + + + Custom Value + + date_range + + + + + + + + Custom Value + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + + Custom Value + + + {{charValue.value.alias}} + + + + + + +
+
+
+
+ + Custom Alias + + + + Custom Value + + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+
+ + +
+
+ +
+ + +
+ Order Item List + {{orderedSpecsConfigurationList.length}} +
+ + +
    +
  • +
    +
    {{item.spec.name}}
    + {{item.spec.version}} +
    +
    + +
    +
  • +
+
+
+ +
+
+
+
+ Service Order Preferences +
+
+
+ + Notes about the order + + +
+
+ + Requested Start Date + + + date_range + + Date is displayed in Local Time (UTC: {{reqStartDate.value | date:'dd/MM/yy, HH:mm':'UTC'}}) + + + + Requested Completion Date + + date_range + + Date is displayed in Local Time (UTC: {{reqCompletionDate.value | date:'dd/MM/yy, HH:mm':'UTC'}}) + +
+
+ +
+
+
+
+ + +
+
+ +
+
+ +
\ No newline at end of file diff --git a/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.scss b/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..fd36c88ccc4999bd789679e12e5f11b283995638 --- /dev/null +++ b/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.scss @@ -0,0 +1,31 @@ +.shadow { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +.selected-spec { + // color: #fff; + background-color: rgba(0, 0, 0, 0.06); + border-color: #ddd; +} + +.list-group-item { + cursor: pointer; +} + +.container { + min-height: 40vh; + display: flex; + flex-direction: column; + justify-content: center; +} + +.info-icon { + color:555; + cursor: pointer; +} + +.border-bottom { + border-bottom: 1px dotted rgba(0, 0, 0, 0.125); + margin-bottom: .75rem; +} + diff --git a/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.spec.ts b/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..26acbd592bc2b91f2ed5d9cce3f8e3f7524b8281 --- /dev/null +++ b/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ServiceOrderCheckoutComponent } from './service-order-checkout.component'; + +describe('ServiceOrderCheckoutComponent', () => { + let component: ServiceOrderCheckoutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ServiceOrderCheckoutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ServiceOrderCheckoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.ts b/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..957ccf713cb288409da2aa0d2db12f54d52565ff --- /dev/null +++ b/src/app/p_services/orderCheckout/service-order-checkout/service-order-checkout.component.ts @@ -0,0 +1,267 @@ +import { Component, OnInit } from '@angular/core'; +import { RequesterService, serviceSpecConfigurationListItem } from '../services/requester.service'; +import { ServiceSpecCharacteristic, ServiceSpecCharacteristicValue } from 'src/app/openApis/serviceCatalogManagement/models'; +import { FormControl, FormArray, FormGroup } from '@angular/forms'; +import { ServiceOrderCreate, ServiceOrderItem } from 'src/app/openApis/serviceOrderingManagement/models'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { ServiceOrderService } from 'src/app/openApis/serviceOrderingManagement/services'; +import { ToastrService } from 'ngx-toastr'; +import { Router } from '@angular/router'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { Subscription } from 'rxjs'; +import { AppService } from 'src/app/shared/services/app.service'; + +const today = new Date() + +@Component({ + selector: 'app-service-order-checkout', + templateUrl: './service-order-checkout.component.html', + styleUrls: ['./service-order-checkout.component.scss'] +}) + +export class ServiceOrderCheckoutComponent implements OnInit { + + constructor( + public requesterService: RequesterService, + private authService: AuthService, + private orderService: ServiceOrderService, + private toast: ToastrService, + private router: Router, + private sortingService: SortingService, + private appService: AppService + ) { } + + subscription = new Subscription + + serviceNoteCtrl = new FormControl('') + reqStartDate = new FormControl(new Date()) + reqCompletionDate = new FormControl(new Date(new Date().setDate(today.getDate()+1))) + + specCharFormArray = new FormArray([]) + + configurableSpecChar: ServiceSpecCharacteristic[] = [] + + orderedSpecsConfigurationList: serviceSpecConfigurationListItem[] = [] + selectedOrderSpecToView: serviceSpecConfigurationListItem + + + ngOnInit() { + + if (this.requesterService.orderedSpecsList.length === 0) { + this.freshLoadOrderListChanges() + } + + this.populateOrderedSpecsConfigurationList() + } + + freshLoadOrderListChanges () { + let storageOrderArray = [] + storageOrderArray = JSON.parse(localStorage.getItem('orderedSpecsList')) || [] + + this.subscription = this.requesterService.orderListUpdated$.subscribe( + () => { + if (storageOrderArray.length && (storageOrderArray.length === this.requesterService.orderedSpecsList.length)){ + this.populateOrderedSpecsConfigurationList() + } + } + ) + } + + populateOrderedSpecsConfigurationList() { + this.requesterService.orderedSpecsList.forEach( orderedSpec => { + this.orderedSpecsConfigurationList.push({ + spec: orderedSpec, + checked: false, + specCharacteristics: this.initCharacteristicsValue(orderedSpec) + }) + }) + + this.selectedOrderSpecToView = this.orderedSpecsConfigurationList[0] + + if (this.orderedSpecsConfigurationList.length) { + this.initValuesForm() + } + } + + initCharacteristicsValue(orderedSpec) { + let initialCharValues: { + name: string, + valueType: string, + value: ServiceSpecCharacteristicValue[] + }[] = [] + + const configurableSpecChar = orderedSpec.serviceSpecCharacteristic.filter(specChar => specChar.configurable) + + configurableSpecChar.forEach( confSpecChar => { + + const charDefaultValueArray = confSpecChar.serviceSpecCharacteristicValue.filter( val => val.isDefault ) + + //In case there are no Default Values assigned, initiate Default Value Array with null values + if (charDefaultValueArray.length === 0) {charDefaultValueArray[0] = {value: {value:'' , alias:''}}} + + initialCharValues.push({ + name: confSpecChar.name, + valueType: confSpecChar.valueType, + value: charDefaultValueArray + }) + }) + + + // initialCharValues.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + return initialCharValues + } + + initValuesForm() { + // console.log(this.requesterService.serviceConfigurationList) + this.specCharFormArray = new FormArray([]) + + const formArray = this.specCharFormArray as FormArray + + this.configurableSpecChar = this.selectedOrderSpecToView.spec.serviceSpecCharacteristic.filter(specChar => specChar.configurable) + + //Sort Configurable Characteristics by Asc Name Order + this.configurableSpecChar.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + this.configurableSpecChar.forEach( (confSpecChar) => { + formArray.push(this.updateFormArrayItem(confSpecChar)) + }) + + } + + updateFormArrayItem( specChar: ServiceSpecCharacteristic): FormGroup { + const charValueArray = this.orderedSpecsConfigurationList.find(listItem => listItem.spec.id === this.selectedOrderSpecToView.spec.id).specCharacteristics.find(char => char.name === specChar.name).value + + return new FormGroup({ + name: new FormControl(specChar.name), + valueType: new FormControl(specChar.valueType), + value: new FormControl(charValueArray) + }) + } + + addToArrayCharacteristicValue(characteristic: ServiceSpecCharacteristic) { + this.orderedSpecsConfigurationList.find(listItem => listItem.spec.id === this.selectedOrderSpecToView.spec.id).specCharacteristics.find(char => char.name === characteristic.name).value.push( + { + isDefault: true, + valueType: characteristic.serviceSpecCharacteristicValue[0].valueType, + value: {value: '', alias: ''} + } + ) + } + + deleteFromArrayCharacteristicValue(characteristic: ServiceSpecCharacteristic, index) { + this.orderedSpecsConfigurationList.find(listItem => listItem.spec.id === this.selectedOrderSpecToView.spec.id).specCharacteristics.find(char => char.name === characteristic.name).value.splice(index, 1) + } + + + viewAndConfigureSpec(item: serviceSpecConfigurationListItem) { + + this.updateActiveServiceInList() + + this.selectedOrderSpecToView = item + this.initValuesForm() + } + + removeSpecFromCart(item: serviceSpecConfigurationListItem) { + const toBeRemovedSpecIndex = this.orderedSpecsConfigurationList.findIndex(el => el.spec.id === item.spec.id) + this.selectedOrderSpecToView = null + + this.orderedSpecsConfigurationList.splice(toBeRemovedSpecIndex, 1) + this.requesterService.orderedSpecsList.splice(toBeRemovedSpecIndex, 1) + this.removeOrderFromLocalStorage(item.spec.id) + + if (toBeRemovedSpecIndex === this.orderedSpecsConfigurationList.length) { + this.selectedOrderSpecToView = this.orderedSpecsConfigurationList[toBeRemovedSpecIndex-1] + } else { + this.selectedOrderSpecToView = this.orderedSpecsConfigurationList[toBeRemovedSpecIndex] + } + } + + removeOrderFromLocalStorage(specId) { + let orderArray = [] + orderArray = JSON.parse(localStorage.getItem('orderedSpecsList')) || [] + if (orderArray.length){ + orderArray.splice(orderArray.findIndex(el => el === specId), 1) + } + + localStorage.setItem('orderedSpecsList', JSON.stringify(orderArray)) + } + + + submitOrder() { + + this.updateActiveServiceInList() + let newOrder: ServiceOrderCreate = { + orderItem:[], + requestedStartDate: this.reqStartDate.value, + requestedCompletionDate: this.reqCompletionDate.value + } + + if (this.serviceNoteCtrl.value) { + newOrder.note = [{ + author:this.authService.portalUserJWT.preferred_username, + text: this.serviceNoteCtrl.value, + date: new Date().toISOString() + }] + } + + let newOrderItem: ServiceOrderItem + // = { service: {}, action: 'add'} + this.orderedSpecsConfigurationList.forEach(serviceItem => { + // console.log(serviceItem) + newOrderItem = { service: { + serviceSpecification: { + id: serviceItem.spec.id, + name: serviceItem.spec.name, + version: serviceItem.spec.version + }, + serviceCharacteristic: [] + }, action: 'add'} + + serviceItem.specCharacteristics.forEach( (characteristic, index) => { + newOrderItem.service.serviceCharacteristic.push({ + name: characteristic.name, + valueType: characteristic.valueType, + value: undefined + }) + + // if (characteristic.value.length > 1) { + if (characteristic.valueType === "SET" || characteristic.valueType === "ARRAY") { + newOrderItem.service.serviceCharacteristic[index].value = { + value: JSON.stringify( characteristic.value.map(el => {return {'value': el.value.value, 'alias': el.value.alias}}) ) + } + } else { + newOrderItem.service.serviceCharacteristic[index].value = characteristic.value[0].value + } + }) + newOrder.orderItem.push(newOrderItem) + }) + // console.log(newOrderItem) + + // console.log(newOrder) + + + this.orderService.createServiceOrder(newOrder).subscribe( + response => { }, + error => { console.error(error); this.toast.error("An error occurred while processing your Service Order") }, + () => { + this.toast.success("Service Order was successfully placed") + + // clear order lists + this.orderedSpecsConfigurationList = [] + this.requesterService.orderedSpecsList = [] + localStorage.removeItem('orderedSpecsList') + + this.router.navigate([this.appService.portalDomain, 'services_marketplace']) + } + ) + } + + updateActiveServiceInList() { + this.orderedSpecsConfigurationList.find(listItem => listItem.spec.id === this.selectedOrderSpecToView.spec.id).specCharacteristics = this.specCharFormArray.value + } + + ngOnDestroy() { + this.subscription.unsubscribe() + } +} diff --git a/src/app/p_services/orderCheckout/services/requester.service.spec.ts b/src/app/p_services/orderCheckout/services/requester.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3993114d8775e761cfa92cec444d7fc6e513160 --- /dev/null +++ b/src/app/p_services/orderCheckout/services/requester.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { RequesterService } from './requester.service'; + +describe('RequesterService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: RequesterService = TestBed.get(RequesterService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/p_services/orderCheckout/services/requester.service.ts b/src/app/p_services/orderCheckout/services/requester.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..fb3f93184d000d9f9715b1757ad8c8b8689860a7 --- /dev/null +++ b/src/app/p_services/orderCheckout/services/requester.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; +import { ServiceSpecification, ServiceSpecCharacteristicValue, ServiceSpecCharacteristic } from 'src/app/openApis/serviceCatalogManagement/models'; +import { Subject } from 'rxjs'; +import { ServiceSpecificationService } from 'src/app/openApis/serviceCatalogManagement/services'; + +@Injectable({ + providedIn: 'root' +}) +export class RequesterService { + + orderedSpecsList: ServiceSpecification[] = [] + + orderListUpdated$ = new Subject() + // serviceConfigurationList: serviceConfigurationItem[] = [] + // selectedSpecToView: serviceSpecConfigurationListItem + + constructor( + private specService: ServiceSpecificationService + ) { + // check if Specs are not in orderedSpecsList and exist in Localstorage.orderedSpecsList (that happens only after a hard refresh on app) + const orderList: string[] = JSON.parse(localStorage.getItem('orderedSpecsList')) + if (orderList && (this.orderedSpecsList.length === 0 || orderList.length !== this.orderedSpecsList.length)) { + orderList.forEach(specId => { + if (!this.orderedSpecsList.some(el => el.id === specId)) { + this.specService.retrieveServiceSpecification({id: specId}).subscribe( + data => { + this.orderedSpecsList.push(data) + this.orderListUpdated$.next(true) + }, + error => { + this.orderedSpecsList = [] + localStorage.removeItem('orderedSpecsList') + } + ) + } + }); + } + } +} + +export interface serviceSpecConfigurationListItem { + checked:boolean, + spec: ServiceSpecification, + specCharacteristics: { + name: string, + valueType: string, + value:ServiceSpecCharacteristicValue[] }[] +} \ No newline at end of file diff --git a/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.html b/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ac6884ee8b5c3b3e8e0da67b883793bbe5c5f575 --- /dev/null +++ b/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete test instance {{data.name}} ? +
+ +
+ + +
\ No newline at end of file diff --git a/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.scss b/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.spec.ts b/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8fc45096e6aeb464ce392c382a70cecc6ed5dacf --- /dev/null +++ b/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteServiceTestComponent } from './delete-service-test.component'; + +describe('DeleteServiceTestComponent', () => { + let component: DeleteServiceTestComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteServiceTestComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteServiceTestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.ts b/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..46347293a95ec31bcb259c65f3269bf9e3f922b8 --- /dev/null +++ b/src/app/p_testing/admin/testManagement/delete-service-test/delete-service-test.component.ts @@ -0,0 +1,35 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ServiceTest } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestService } from 'src/app/openApis/serviceTestManagement/services'; + +@Component({ + selector: 'app-delete-service-test', + templateUrl: './delete-service-test.component.html', + styleUrls: ['./delete-service-test.component.scss'] +}) +export class DeleteServiceTestComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceTest, + private dialogRef: MatDialogRef, + private testService: ServiceTestService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.testService.deleteServiceTest(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.html b/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.html new file mode 100644 index 0000000000000000000000000000000000000000..4f4389675347712f5966f197aadaeaf120cd090e --- /dev/null +++ b/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.html @@ -0,0 +1,203 @@ +
+
+
+

Service with id #{{serviceTestID}} is not found

+
+
+
+
+
+
+
+
+
+
+
+

Service Test Instance Overview And Management

+

Overview and Manage + {{serviceTest?.name}} service test instance

+
+
+
+
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+
+
Name
+

{{serviceTest?.name}}

+
+ +
+
Lifecycle Status
+

{{serviceTest?.lifecycleStatus}}

+
+ +
+
Description
+

{{serviceTest?.description}}

+
+ + + Description + + + +
+
Last Updated
+

{{serviceTest?.lastUpdate | date:'d MMM y, h:mm a'}} - Local Time

+

{{serviceTest?.lastUpdate | date:'d MMM y, h:mm a':'UTC'}} - UTC

+
+
+ +
+
+
Linked Service
+

+ {{serviceTest?.relatedService.id}} +

+
+
+
Service Test Specification
+

+ {{serviceTest?.testSpecification.id}} +

+
+
+ +
+ + +
+
+ +
+ +
+
+
+
+ There are not any Service Test characteristics allocated. +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Characteristic
+
+
Value
+
{{characteristic.name}} + + {{characteristic.value.value}} + + + + + + + +
+ {{value.value}} ({{value.alias}}) +
+ +
+ + +
+ +
+ +
+
+
+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.scss b/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..d2a4fea8ca4ebb639795994e77f4f4e40ba0d126 --- /dev/null +++ b/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.scss @@ -0,0 +1,20 @@ +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled { + color: rgba(0,0,0,.30); +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.tab-pane > .card { + min-height: max(250px, 20vh); +} + +mat-form-field { + width: 100%; +} \ No newline at end of file diff --git a/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.spec.ts b/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..37ab681527465ac2657f02cc2da197c48299d221 --- /dev/null +++ b/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditServiceTestComponent } from './edit-service-test.component'; + +describe('EditServiceTestComponent', () => { + let component: EditServiceTestComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditServiceTestComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditServiceTestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.ts b/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..6c9a95345254139901c7b0efc709eb71ed6e9870 --- /dev/null +++ b/src/app/p_testing/admin/testManagement/edit-service-test/edit-service-test.component.ts @@ -0,0 +1,106 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit } from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ServiceTest, ServiceTestUpdate } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestService } from 'src/app/openApis/serviceTestManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { SortingService } from 'src/app/shared/functions/sorting.service'; +import { AppService } from 'src/app/shared/services/app.service'; + +@Component({ + selector: 'app-edit-service-test', + templateUrl: './edit-service-test.component.html', + styleUrls: ['./edit-service-test.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditServiceTestComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private toast: ToastrService, + private router: Router, + private sortingService: SortingService, + public appService: AppService, + private testService: ServiceTestService + ) { } + + serviceTestID: string + serviceTest: ServiceTest + newServiceTest = false + serviceTestNotFound: boolean + finishedLoading: boolean + + editForm = new FormGroup({ + description: new FormControl(), + }) + editMode: boolean = false + + listItems = ["Main Properties", "Service Test Characteristics"] + activeListItem = "Main Properties" + + ngOnInit() { + if (this.activatedRoute.snapshot.params.id) + { + this.serviceTestID = this.activatedRoute.snapshot.params.id + this.retrieveServiceTest() + } + } + + retrieveServiceTest() { + this.testService.retrieveServiceTest({id: this.serviceTestID}).subscribe( + data => { + this.serviceTest = data + }, + error => { + console.error(error) + }, + () => { + this.finishedLoading = true + if (!this.serviceTest) { + this.serviceTestNotFound = true + } + this.serviceTest.characteristic.sort(this.sortingService.ascStringSortingFunctionByNameProperty()) + + this.editForm.patchValue({ + name: this.serviceTest.name, + description: this.serviceTest.description, + }) + } + ) + } + + selectListitem(item: string) { + this.activeListItem = item + } + + enableServiceTestEditing() { + this.editMode = true + } + + cancelServiceTestEditing() { + this.editForm.patchValue({ + description: this.serviceTest.description, + }) + this.editMode = false + } + + submitServiceTestEditing() { + let serviceTestUpdate: ServiceTestUpdate = { + description: this.editForm.get('description').value, + } + + this.testService.patchServiceTest({serviceSpecification: serviceTestUpdate, id: this.serviceTestID}).subscribe( + data => { this.toast.success("Service Test Instance is successfully updated") }, + error => { console.error(error), this.toast.error("An error occurred while updating this Service Test Instance") }, + () => { + this.editMode = false + this.retrieveServiceTest() + } + ) + } + + + +} diff --git a/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.html b/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.html new file mode 100644 index 0000000000000000000000000000000000000000..2d8095b5257f07a1c151c1619b0b6b59251278d9 --- /dev/null +++ b/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.html @@ -0,0 +1,75 @@ +
+
+
+
+
+
+

Service Test Instances

+

View and manage service test instances

+
+ +
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description}} + {{element.description | slice:0:49}}... + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} Instance of Test Specification + {{element.testSpecification.id}} + Linked Service + {{element.relatedService.id}} + Actions + + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.scss b/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.spec.ts b/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..da7ad07fc4d0dde940603953fcc7cefc53ef8b89 --- /dev/null +++ b/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListServiceTestsComponent } from './list-service-tests.component'; + +describe('ListServiceTestsComponent', () => { + let component: ListServiceTestsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListServiceTestsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListServiceTestsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.ts b/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..6d5cf1e225ac65d98917ecad58b19b15df302c16 --- /dev/null +++ b/src/app/p_testing/admin/testManagement/list-service-tests/list-service-tests.component.ts @@ -0,0 +1,87 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { ServiceTestService } from 'src/app/openApis/serviceTestManagement/services'; +import { ServiceTest } from 'src/app/openApis/serviceTestManagement/models'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteServiceTestComponent } from '../delete-service-test/delete-service-test.component'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-list-service-tests', + templateUrl: './list-service-tests.component.html', + styleUrls: ['./list-service-tests.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListServiceTestsComponent implements OnInit { + + constructor( + private testSpecificationService: ServiceTestService, + private toast: ToastrService, + public appService: AppService, + private dialog: MatDialog + ) { } + + displayedColumns = ['name', 'description', 'lastUpdate', 'testSpecification', 'service', 'actions'] + dataSource = new MatTableDataSource() + + serviceSpecifications: ServiceTest[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveTestsList() + } + + retrieveTestsList() { + this.testSpecificationService.listServiceTest({}).subscribe( + data => { this.serviceSpecifications = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.serviceSpecifications + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + // this.dataSource.sortingDataAccessor = (item, property): string | number => { + // switch (property) { + // case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + // default: return item[property]; + // } + // } + + } + ) + } + + openTestDeleteDialog(element: ServiceTest) { + const dialogRef = this.dialog.open(DeleteServiceTestComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Service Test Instance") + } else { + this.toast.success("Service Test Instance list is successfully updated") + this.retrieveTestsList() + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + +} diff --git a/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.html b/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b008a3d155b2fc75a19f80ab359fa1c27cde41b0 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.html @@ -0,0 +1,13 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete specification {{data.name}} ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.scss b/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.spec.ts b/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..c643d3021b42829ca4acbb2ac50c7c480282e5d4 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteServiceTestSpecComponent } from './delete-service-test-spec.component'; + +describe('DeleteServiceTestSpecComponent', () => { + let component: DeleteServiceTestSpecComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteServiceTestSpecComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteServiceTestSpecComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.ts b/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..4883b16a068247c0f479e63f96a7fcb343b0674d --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/delete-service-test-spec/delete-service-test-spec.component.ts @@ -0,0 +1,34 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ServiceTestSpecification } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestSpecificationService } from 'src/app/openApis/serviceTestManagement/services'; + +@Component({ + selector: 'app-delete-service-test-spec', + templateUrl: './delete-service-test-spec.component.html', + styleUrls: ['./delete-service-test-spec.component.scss'] +}) +export class DeleteServiceTestSpecComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: ServiceTestSpecification, + private dialogRef: MatDialogRef, + private testSpecService: ServiceTestSpecificationService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.testSpecService.deleteServiceTestSpecification(this.data.id).subscribe( + data => {}, + error => { this.dialogRef.close(error); console.error(error) }, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } +} diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.html b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.html new file mode 100644 index 0000000000000000000000000000000000000000..2240d3f54ab264a69765b7f18540922c8e061380 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete the relationship with the imported Test as a Service (id #{{data.serviceRelationshipToBeDeleted.id}}) ? +
+ +
+ + +
diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.scss b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.spec.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..e15a4ac9e40ebbeb1fbd98727971dd0c4edd6b51 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteServiceRelationshipComponent } from './delete-service-relationship.component'; + +describe('DeleteServiceRelationshipComponent', () => { + let component: DeleteServiceRelationshipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteServiceRelationshipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteServiceRelationshipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..18c8036fd700b63bb1dbe59291cd4f46a676166d --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-service-relationship/delete-service-relationship.component.ts @@ -0,0 +1,46 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ServiceSpecificationRef } from 'src/app/openApis/serviceCatalogManagement/models'; +import { ServiceTestSpecification, ServiceTestSpecificationUpdate } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestSpecificationService } from 'src/app/openApis/serviceTestManagement/services'; + +@Component({ + selector: 'app-delete-service-relationship', + templateUrl: './delete-service-relationship.component.html', + styleUrls: ['./delete-service-relationship.component.scss'] +}) +export class DeleteServiceRelationshipComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + newServiceTestRelatedServicesArray: Array, + serviceRelationshipToBeDeleted: ServiceSpecificationRef, + serviceTestSpec: ServiceTestSpecification + }, + private dialogRef: MatDialogRef, + private testSpecService: ServiceTestSpecificationService + + ) { } + + ngOnInit() { + } + + confirmDeletion() { + // this.dialogRef.close('deleted') + const updateSpecObj: ServiceTestSpecificationUpdate = { + relatedServiceSpecification: this.data.newServiceTestRelatedServicesArray + } + + this.testSpecService.patchServiceTestSpecification({ id: this.data.serviceTestSpec.id, serviceSpecification: updateSpecObj }).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + + +} diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.html b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.html new file mode 100644 index 0000000000000000000000000000000000000000..2dcf8ce229ec04ef7bbea436e30319826c9d592b --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete attachment {{data.attachmentToBeDeleted.name}} ? +
+ +
+ + +
diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.scss b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.spec.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..be0bfcae75678e098daaba027ed5299fd70e5b2d --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteTestSpecAttachmentComponent } from './delete-test-spec-attachment.component'; + +describe('DeleteTestSpecAttachmentComponent', () => { + let component: DeleteTestSpecAttachmentComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteTestSpecAttachmentComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteTestSpecAttachmentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..e91a884dc97436fc34c24de345f868bd24c7ff78 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-attachment/delete-test-spec-attachment.component.ts @@ -0,0 +1,43 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { AttachmentRefOrValue, ServiceTestSpecification, ServiceTestSpecificationUpdate } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestSpecificationService } from 'src/app/openApis/serviceTestManagement/services'; + +@Component({ + selector: 'app-delete-test-spec-attachment', + templateUrl: './delete-test-spec-attachment.component.html', + styleUrls: ['./delete-test-spec-attachment.component.scss'] +}) +export class DeleteTestSpecAttachmentComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + serviceTestSpec: ServiceTestSpecification + serviceTestSpecAttachmentArray: AttachmentRefOrValue[], + attachmentToBeDeleted: AttachmentRefOrValue + }, + private dialogRef: MatDialogRef, + private testSpecService: ServiceTestSpecificationService + ) { } + + ngOnInit() { + } + + confirmDeletion() { + // this.dialogRef.close('deleted') + const updateSpecObj: ServiceTestSpecificationUpdate = { + attachment: this.data.serviceTestSpecAttachmentArray + } + + this.testSpecService.patchServiceTestSpecification({ id: this.data.serviceTestSpec.id, serviceSpecification: updateSpecObj }).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.html b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.html new file mode 100644 index 0000000000000000000000000000000000000000..d123501ab681db4d87ccdfabdf8edabdb1bb9cb4 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete characteristic {{data.charToBeDeleted.name}} ? +
+ +
+ + +
diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.scss b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.spec.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..0af8c9c6a8d6aa8c1b71a4f32b12d234a92f8840 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteTestSpecCharacteristicComponent } from './delete-test-spec-characteristic.component'; + +describe('DeleteTestSpecCharacteristicComponent', () => { + let component: DeleteTestSpecCharacteristicComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteTestSpecCharacteristicComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteTestSpecCharacteristicComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..96d86fe3122c365c3d40d5847bcf5eecab4d5b3c --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/delete-test-spec-characteristic/delete-test-spec-characteristic.component.ts @@ -0,0 +1,44 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { CharacteristicSpecificationRes, ServiceTestSpecification, ServiceTestSpecificationUpdate } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestSpecificationService } from 'src/app/openApis/serviceTestManagement/services'; + +@Component({ + selector: 'app-delete-test-spec-characteristic', + templateUrl: './delete-test-spec-characteristic.component.html', + styleUrls: ['./delete-test-spec-characteristic.component.scss'] +}) +export class DeleteTestSpecCharacteristicComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + serviceTestSpec: ServiceTestSpecification + newCharacteristicsArray:CharacteristicSpecificationRes[], + charToBeDeleted: CharacteristicSpecificationRes + }, + private dialogRef: MatDialogRef, + private testSpecService: ServiceTestSpecificationService + ) { } + + ngOnInit() { + } + + confirmDeletion() { + // this.dialogRef.close('deleted') + const updateSpecObj: ServiceTestSpecificationUpdate = { + specCharacteristic: this.data.newCharacteristicsArray + } + + + this.testSpecService.patchServiceTestSpecification({ id: this.data.serviceTestSpec.id, serviceSpecification: updateSpecObj }).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/discard-changes.component.html b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/discard-changes.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b3511090b98ba9cba1a347000d8bb3ce26f1cad3 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/discard-changes.component.html @@ -0,0 +1,12 @@ +

+ + Discard Changes +

+
+ Unsubmitted changes will be discarded. Are you sure you want to discard changes and continue with the navigation? +
+ +
+ + +
diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.html b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.html new file mode 100644 index 0000000000000000000000000000000000000000..0642071f27b8fc55b687fa5303abfb074c42a170 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.html @@ -0,0 +1,337 @@ +
+
+
+

Service Test Specification with id #{{testSpecID}} is not found

+
+
+
+ +
+
+
+ + +
+ +
+
+
+
+

Service Test Specification Designer

+ +

Design a new Service Test + Specification

+ +

Edit design of + {{testSpec?.name}} Service Test Specification +

+ +
+ Last updated at + {{testSpec?.lastUpdate | date:'short'}} (Local Time) +
+
+ +
+
+
+ +
+
+ +
+ +
+ +
+
+ + +
+
+
+
+
+ + Name + + + + + Version + + + + + + + Description + + + + + Lifecycle Status + + + {{status}} + + + + + +
+ +
+
+ +
+
+
+ +
+
+
+ + + +
+
+
+
+
Test type
+ + Predefined + Developer-defined + +
+ +
+ Please upload a test descriptor to assign it to the Service Test Specification. +
+ Please upload a test descriptor and the respective developer-defined test scripts to assign them to the Service Test Specification. +
Note: The script names must match the respective testcase names in the test descriptor.
+ +
+
+ + + +
+ Only one test descriptor can be uploaded per single Service Test Specification when the selected test type is "Predefined". +
+ + + + + Supported file type: .yaml + + Supported file type: .yaml + + +
+
+ + +
+
+
+ + + + + Supported file types: .yaml, .tar.gz + + Supported file types: .yaml, .tar.gz + + +
+
+ + +
+
+
+
+ +
+
+ + + + +
+
+
+
+ + Apply Filter... + + + +
+ +
+
+ + +
+ + + + + + + + + + + + + + + + + + + +
Name + + {{element.name}} + Description + + {{element.description}} Actions +
+ + + +
+
+ + +
+
+ +
+
+ + + +
+
+
+
+ There are not any service specification relationships assigned +
+ +
Imported Test as a Service
+
+ + + +
+
+ +
+
+ + +
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.scss b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..4ff6921e4711e23eee378aba6c45b88ebb78b30a --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.scss @@ -0,0 +1,37 @@ +.nav-link:hover { + cursor: pointer; +} + +.nav-link.disabled:not(.active) { + color: rgba(0,0,0,.4) !important; +} + +.nav-pills .nav-link.active { + color: #fff; + transition: all 0.2s; +} + +.tab-pane > .card:nth-child(1) { + min-height: max(350px, 20vh); +} + + +file-upload { + outline-offset: -5px; +} + +file-upload.ng-touched.ng-invalid { + outline-color: #ff0000; + background-color: #fdf4f4; +} + +.file-icon { + // border: 1px solid #c9c9c9; + border-radius: 4px; + // color: #909293; + height: 25px; + width: 25px; + display: inline-flex; + justify-content: center; + align-items: center; +} \ No newline at end of file diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.spec.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9f31e594c1eb66998eda0c994679d2c08d1e07de --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditServiceTestSpecComponent } from './edit-service-test-spec.component'; + +describe('EditServiceTestSpecComponent', () => { + let component: EditServiceTestSpecComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditServiceTestSpecComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditServiceTestSpecComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..13449141d06184a3aaa9fc63ed15570705558e22 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-service-test-spec.component.ts @@ -0,0 +1,428 @@ +import { trigger } from '@angular/animations'; +import { Component, OnInit, ViewChild } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ActivatedRoute, Router } from '@angular/router'; +import { FileUploadControl, FileUploadValidators } from '@iplab/ngx-file-upload'; +import { ToastrService } from 'ngx-toastr'; +import { Subscription } from 'rxjs'; +import { ServiceSpecificationRef } from 'src/app/openApis/serviceCatalogManagement/models'; +import { AttachmentRefOrValue, CharacteristicSpecificationRes, ServiceTestSpecification, ServiceTestSpecificationCreate, ServiceTestSpecificationUpdate } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestSpecificationService } from 'src/app/openApis/serviceTestManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { DeleteServiceRelationshipComponent } from './delete-service-relationship/delete-service-relationship.component'; +import { DeleteTestSpecAttachmentComponent } from './delete-test-spec-attachment/delete-test-spec-attachment.component'; +import { DeleteTestSpecCharacteristicComponent } from './delete-test-spec-characteristic/delete-test-spec-characteristic.component'; +import { EditTestSpecCharacteristicComponent } from './edit-test-spec-characteristic/edit-test-spec-characteristic.component'; +import { ImportCharacteristicsFromYamlComponent } from './import-characteristics-from-yaml/import-characteristics-from-yaml.component'; + +@Component({ + selector: 'app-edit-service-test-spec', + templateUrl: './edit-service-test-spec.component.html', + styleUrls: ['./edit-service-test-spec.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class EditServiceTestSpecComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private testSpecService: ServiceTestSpecificationService, + private dialog: MatDialog, + private toast: ToastrService, + private router: Router + + ) { } + + testSpecID: string + testSpec: ServiceTestSpecification + newTestSpec = false + + testSpecNotFound: boolean = false + finishedLoading: boolean = false + + editForm = new FormGroup ({ + name: new FormControl("", Validators.required), + description: new FormControl("", Validators.required), + version: new FormControl("0.1.0", Validators.required), + lifecycleStatus: new FormControl("In design", Validators.required), + // validFor: new FormGroup({ + // endDateTime: new FormControl(new Date(new Date().setFullYear(new Date().getFullYear()+20)), Validators.required), + // startDateTime: new FormControl(new Date(), Validators.required) + // }) + }) + + listItems = ["Main Properties", "Attachments","Test Specification Characteristics", "Related Service Specification"] + activeListItem = "Main Properties" + + lifecycleStatuses = ["In study", "In design", "In test", "Active", "Launched", "Retired", "Obsolete", "Rejected"] + + displayedColumnsCharacteristics = ['name', 'description', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild('charSort') set matSort(ms: MatSort) { + this.dataSource.sort = ms; + } + + testType = new FormControl('preDefined') + + attachmentFilesCtrl = new FileUploadControl({listVisible: true}, FileUploadValidators.accept(['.yaml'])) + testSpecServiceRootUrl: string + + subscriptions = new Subscription() + + ngOnInit() { + this.testSpecServiceRootUrl = this.testSpecService.rootUrl + + const urlParam = this.activatedRoute.snapshot.params.id + if (urlParam) { + this.testSpecID = urlParam + this.retrieveTestSpec() + } + else { + this.newTestSpec = true + this.finishedLoading = true + } + + this.subscribeOnTestTypeChanged() + } + + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } + + retrieveTestSpec() { + this.testSpecService.retrieveServiceTestSpecification({id: this.testSpecID}).subscribe( + data => this.testSpec = data, + error => console.error(error), + () => { + if (this.testSpec) { + // populate Main Properties Panel Info + this.finishedLoading = true + + if (!this.testSpec.validFor) this.testSpec.validFor = {endDateTime:null, startDateTime:null} + + this.dataSource.data = this.testSpec.specCharacteristic + + this.editForm.patchValue(this.testSpec) + this.editForm.markAsPristine() + + // populate Attachments Panel Info + if (this.testSpec.attachment.length > 1) { + this.testType.setValue('developerDefined') + } + } + else { + this.testSpecNotFound = true + } + } + ) + } + + updateServiceTestMainProperties() { + if (this.editForm.valid) { + const updateObj: ServiceTestSpecificationUpdate | ServiceTestSpecificationCreate = { + name: this.editForm.value.name, + description: this.editForm.value.description, + lifecycleStatus: this.editForm.value.lifecycleStatus, + // validFor: this.editForm.value.validFor, + version: this.editForm.value.version + } + + let updatedSpec: ServiceTestSpecification + + if (this.newTestSpec) { + this.testSpecService.createServiceTestSpecification(updateObj).subscribe( + data => { updatedSpec = data }, + error => console.error(error), + () => { + this.newTestSpec = false + this.toast.success("Service Test Specification was successfully created") + this.testSpecID = updatedSpec.id + this.retrieveTestSpec() + } + ) + } + else { + this.testSpecService.patchServiceTestSpecification({ id: this.testSpecID, serviceSpecification: updateObj }).subscribe( + data => { updatedSpec = data }, + error => console.error(error), + () => { + this.toast.success("Service Test Specification was successfully updated") + this.retrieveTestSpec() + } + ) + } + } + } + + subscribeOnTestTypeChanged() { + this.subscriptions = this.testType.valueChanges.subscribe( _ => { + if (this.testType.value === "developerDefined") { + this.attachmentFilesCtrl = new FileUploadControl({listVisible: true}, FileUploadValidators.accept(['.yaml', '.gz', 'application/gzip', 'application/x-gzip'])) + } else { + this.attachmentFilesCtrl = new FileUploadControl({listVisible: true}, FileUploadValidators.accept(['.yaml'])) + } + }) + } + + selectListItem(item: string) { + if (this.editForm.pristine) { + this.activeListItem = item + } else { + const dialogRef = this.dialog.open(DiscardChangesComponent, {autoFocus: true}) + + dialogRef.afterClosed().subscribe (discardChanges => { + if (discardChanges) { + this.editForm.patchValue(this.testSpec) + this.editForm.markAsPristine() + this.activeListItem = item + } + }) + } + } + + applyTestSpecCharFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + openCharacteristicDesignDialog(characteristic: CharacteristicSpecificationRes) { + const dialogRef = this.dialog.open(EditTestSpecCharacteristicComponent, { + data: { + serviceTestSpec: this.testSpec, + characteristicToBeUpdated: characteristic + } + }) + + dialogRef.afterClosed().subscribe( + res => { + if (res) { + this.toast.success("Service Test Specification characteristics list was successfully updated") + this.retrieveTestSpec() + } + } + ) + } + + cloneTestSpecificationCharacteristic(characteristic: CharacteristicSpecificationRes) { + const cloneCharacteristic: CharacteristicSpecificationRes = { + name: `Copy of ${characteristic.name}`, + description: characteristic.description, + validFor: characteristic.validFor, + valueType: characteristic.valueType + } + + let newCharacteristicsArray = this.testSpec.specCharacteristic.slice() + newCharacteristicsArray.push(cloneCharacteristic) + + const updateCharacteristicObj: ServiceTestSpecificationUpdate = { + specCharacteristic: newCharacteristicsArray + } + + this.testSpecService.patchServiceTestSpecification({id: this.testSpec.id, serviceSpecification: updateCharacteristicObj}).subscribe( + data => {}, + error => console.error(error), + () => { + this.toast.success("Service Test Specification characteristics list was successfully updated") + this.retrieveTestSpec() + } + ) + } + + openCharacteristicDeleteDialog(characteristic: CharacteristicSpecificationRes) { + const specIndex = this.testSpec.specCharacteristic.findIndex (char => char.id === characteristic.id) + + // remove Characteristic from Characteristic's array to send at PATCH request, upon confirmation + const newSpecCharacteristicArray: CharacteristicSpecificationRes[] = this.testSpec.specCharacteristic.slice() + newSpecCharacteristicArray.splice(specIndex, 1) + + const dialogRef = this.dialog.open(DeleteTestSpecCharacteristicComponent, { + data: { + serviceTestSpec: this.testSpec, + newCharacteristicsArray: newSpecCharacteristicArray, + charToBeDeleted: characteristic + } + }) + + dialogRef.afterClosed().subscribe( + res => { + if (res) { + this.toast.success("Service Test Specification characteristics list was successfully updated") + this.retrieveTestSpec() + } + } + ) + } + + openServiceRelationshipDeleteDialog(relatedService: ServiceSpecificationRef) { + const relatedServiceIndex = this.testSpec.relatedServiceSpecification.findIndex (service => service.id === relatedService.id) + + // remove Characteristic from Characteristic's array to send at PATCH request, upon confirmation + const newServiceTestRelatedServicesArray: ServiceSpecificationRef[] = this.testSpec.relatedServiceSpecification.slice() + newServiceTestRelatedServicesArray.splice(relatedServiceIndex, 1) + + const dialogRef = this.dialog.open(DeleteServiceRelationshipComponent, { + data: { + newServiceTestRelatedServicesArray: newServiceTestRelatedServicesArray, + serviceRelationshipToBeDeleted: relatedService, + serviceTestSpec: this.testSpec + } + }) + + dialogRef.afterClosed().subscribe( + res => { + if (res) { + this.toast.success("Service Test Specification related services list was successfully updated") + this.retrieveTestSpec() + } + } + ) + } + + submitAttachment() { + if (this.attachmentFilesCtrl.valid) { + + this.attachmentFilesCtrl.value.forEach (attachmentFile => { + this.testSpecService.addAttachmentToServiceTestSpecification({ id: this.testSpecID, afile: attachmentFile }).subscribe( + data => { }, + error => { + console.error(error) + this.toast.error("An error occurred while uploading attachment") + }, + () => { + this.toast.success("Attachment was successfully uploaded") + this.clearAttachmentsList() + this.retrieveTestSpec() + } + ) + }) + + // Asynchronously check if there is a text-typed file uploaded (Test Descriptor), and try to automatically extract the variables within {{ }}, e.g. {{ variable1 }} + let variablesArray = [] + + // Comment1: Recognized type of yaml files is '' and for py files is 'text/x-python' + // Comment2: Interface Blob doesn't support text in TS 3.5.3 so indirect reference is made + const yamlFile = this.attachmentFilesCtrl.value.find( yamlFile => yamlFile.type === '') + if (yamlFile) { + // this.attachmentFilesCtrl.value[0]['text']() //Interface Blob doesn't support text in TS 3.5.3 so indirect reference is made + + yamlFile['text']() + .then( + data => { + //regular expression to identify strings inside {{ }}, and parse them omitting brackets in capture group 1 + const regex = /\{{2}([^{}]*)\}{2}/gm; + variablesArray = Array.from(data.matchAll(regex), m => m[1].trim()); + } + ) + .catch( + onrejected => console.error(onrejected) + ) + .finally( + () => { + if (variablesArray.length) { + const dialogRef = this.dialog.open(ImportCharacteristicsFromYamlComponent, { + data: { + variablesArray: variablesArray + }, + autoFocus: false + }) + + dialogRef.afterClosed().subscribe( + result => { + if (result) { + if (result !== 'no') { + + let exportedCharacteristicsArray: CharacteristicSpecificationRes[] = [] + variablesArray.forEach(variable => { + exportedCharacteristicsArray.push({ + name: variable, + description: 'auto exported user variable' + }) + }) + + + if (result === 'override') { + this.testSpec.specCharacteristic = exportedCharacteristicsArray + } + + if (result === 'append') { + this.testSpec.specCharacteristic = this.testSpec.specCharacteristic.concat(exportedCharacteristicsArray) + } + + const updateCharacteristicObj: ServiceTestSpecificationUpdate = { + specCharacteristic: this.testSpec.specCharacteristic + } + + + this.testSpecService.patchServiceTestSpecification({ id: this.testSpec.id, serviceSpecification: updateCharacteristicObj }).subscribe( + data => { }, + error => { console.error(error); this.toast.error("An error occurred upon auto-exporting Test Specification Characteristics") }, + () => { + this.retrieveTestSpec() + } + ) + } + } + } + ) + } + } + ) + } + } + } + + clearAttachmentsList() { + this.attachmentFilesCtrl.clear() + } + + openAttachmentDeleteDialog(attachment: AttachmentRefOrValue) { + const attToBeDeletedIndex = this.testSpec.attachment.findIndex(char => char.id === attachment.id) + + const newSpecAttArray: AttachmentRefOrValue[] = this.testSpec.attachment.slice() + + newSpecAttArray.splice(attToBeDeletedIndex, 1) + + const dialogRef = this.dialog.open(DeleteTestSpecAttachmentComponent, { + data: { + serviceTestSpec: this.testSpec, + serviceTestSpecAttachmentArray: newSpecAttArray, + attachmentToBeDeleted: this.testSpec.attachment[attToBeDeletedIndex] + } + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Service Test Specification attachments list was successfully updated") + this.retrieveTestSpec() + this.testType.value === "developerDefined" + } + } + ) + } +} + +@Component({ + selector: 'app-discard-changes', + templateUrl: 'discard-changes.component.html', +}) +export class DiscardChangesComponent { + + constructor( + public dialogRef: MatDialogRef, + ) {} + + onNoClick(): void { + this.dialogRef.close(false); + } + + onYesClick(): void { + this.dialogRef.close(true) + } +} \ No newline at end of file diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.html b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.html new file mode 100644 index 0000000000000000000000000000000000000000..2db917f19a680e0eb7761e405b4e87893af78908 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.html @@ -0,0 +1,41 @@ +

+ + Design New Test Service Specification Characteristic +

+ +

+ + Edit Service Test Specification Characteristic +

+ +
+ +
+ + Name + + + + + Description + + + + + Value Type + + + {{type}} + + + +
+ +
+
+ + +
+
+
\ No newline at end of file diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.scss b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.spec.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..01496973714f74a1e3057ee1dd5363d93f976734 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditTestSpecCharacteristicComponent } from './edit-test-spec-characteristic.component'; + +describe('EditTestSpecCharacteristicComponent', () => { + let component: EditTestSpecCharacteristicComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditTestSpecCharacteristicComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditTestSpecCharacteristicComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..4ef00e708b1581838f48307b7e8245f15efed348 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/edit-test-spec-characteristic/edit-test-spec-characteristic.component.ts @@ -0,0 +1,68 @@ +import { trigger } from '@angular/animations'; +import { Component, Inject, OnInit } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { CharacteristicSpecificationRes, ServiceTestSpecification, ServiceTestSpecificationUpdate } from 'src/app/openApis/serviceTestManagement/models'; +import { ServiceTestSpecificationService } from 'src/app/openApis/serviceTestManagement/services'; +import { fadeIn } from 'src/app/shared/animations/animations'; + +@Component({ + selector: 'app-edit-test-spec-characteristic', + templateUrl: './edit-test-spec-characteristic.component.html', + styleUrls: ['./edit-test-spec-characteristic.component.scss'], + animations: [trigger('fadeIn', fadeIn())] +}) +export class EditTestSpecCharacteristicComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + serviceTestSpec: ServiceTestSpecification, + characteristicToBeUpdated: CharacteristicSpecificationRes, + }, + private dialogRef: MatDialogRef, + private testSpecService: ServiceTestSpecificationService, + private toast: ToastrService + ) { } + + editCharacteristicForm = new FormGroup({ + name: new FormControl("", Validators.required), + description: new FormControl(""), + valueType: new FormControl() + }) + + valueTypes = ['INTEGER', 'SMALLINT', 'LONGINT', 'FLOAT', 'BINARY', 'BOOLEAN', 'ARRAY', 'SET', 'TEXT', 'LONGTEXT', 'ENUM', 'TIMESTAMP'] + + newCharacteristic = false + + ngOnInit() { + if (this.data.characteristicToBeUpdated) { + this.editCharacteristicForm.patchValue(this.data.characteristicToBeUpdated) + } + else { this.newCharacteristic = true } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + if (this.newCharacteristic) { + this.data.serviceTestSpec.specCharacteristic.push(this.editCharacteristicForm.value) + } else { + const updateCharIndex = this.data.serviceTestSpec.specCharacteristic.findIndex(char => char.id === this.data.characteristicToBeUpdated.id) + this.data.serviceTestSpec.specCharacteristic[updateCharIndex] = this.editCharacteristicForm.value + } + + const updateCharacteristicObj: ServiceTestSpecificationUpdate = { + specCharacteristic: this.data.serviceTestSpec.specCharacteristic + } + + + this.testSpecService.patchServiceTestSpecification({id: this.data.serviceTestSpec.id, serviceSpecification: updateCharacteristicObj}).subscribe( + data => {}, + error => { console.error(error); this.toast.error("An error occurred upon updating Test Specification Characteristics") }, + () => {this.dialogRef.close('updated')} + ) + } + } diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.html b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.html new file mode 100644 index 0000000000000000000000000000000000000000..17026df66a3c1bd06c9946719836157537a0e750 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.html @@ -0,0 +1,17 @@ +

+ + Auto export user defined parameters from yaml file +

+
+ It appears that {{this.data.variablesArray.length}} user-defined parameter(s) were found in the provided file.
+ Do you want to export these parameters as specification's characteristics automatically?
+ Common user-defined parameters will be merged to a single specification characteristic.
+
+ You may override the past characteristics or append them to the newly found. +
+ +
+ + + +
diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.scss b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.spec.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8adafacad714d75ad789938c48b4b2dc85963341 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ImportCharacteristicsFromYamlComponent } from './import-characteristics-from-yaml.component'; + +describe('ImportCharacteristicsFromYamlComponent', () => { + let component: ImportCharacteristicsFromYamlComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ImportCharacteristicsFromYamlComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ImportCharacteristicsFromYamlComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.ts b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..38129498859aaa33e0e036d589c9c609d2f67595 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/edit-service-test-spec/import-characteristics-from-yaml/import-characteristics-from-yaml.component.ts @@ -0,0 +1,25 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog'; + +@Component({ + selector: 'app-import-characteristics-from-yaml', + templateUrl: './import-characteristics-from-yaml.component.html', + styleUrls: ['./import-characteristics-from-yaml.component.scss'] +}) +export class ImportCharacteristicsFromYamlComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + variablesArray: string[] + }, + private dialogRef: MatDialogRef, + ) { } + + ngOnInit() { + } + + closeDialog(dialogResult: 'no' | 'override' | 'append') { + this.dialogRef.close(dialogResult) + } + +} diff --git a/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.html b/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.html new file mode 100644 index 0000000000000000000000000000000000000000..88b7ff6853e4df4927b4bf536b16bc535bdc82c0 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.html @@ -0,0 +1,86 @@ +
+
+
+
+
+
+

Service Test Specifications

+

View and manage service test specifications

+
+
+ +
+
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.name}} Description + {{element.description}} + {{element.description | slice:0:49}}... + Last Update (Local Time) {{element.lastUpdate | date:'d MMM y, h:mm a'}} Version {{element.version}} Lifecycle Status {{element.lifecycleStatus}} Assigned Service Specification + {{element.relatedServiceSpecification[0].id}} + + Actions + + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.scss b/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.spec.ts b/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..8c420423f2d84d19c0f1be4fa89c1126a3729d65 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListServiceTestSpecsComponent } from './list-service-test-specs.component'; + +describe('ListServiceTestSpecsComponent', () => { + let component: ListServiceTestSpecsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListServiceTestSpecsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListServiceTestSpecsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.ts b/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..bbdcf3dca5e8f2c3db68aeb00e693da7564fdc95 --- /dev/null +++ b/src/app/p_testing/admin/testSpecificationManagement/list-service-test-specs/list-service-test-specs.component.ts @@ -0,0 +1,89 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; + +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +import { ToastrService } from 'ngx-toastr'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { ServiceTestSpecificationService } from 'src/app/openApis/serviceTestManagement/services'; +import { ServiceTestSpecification } from 'src/app/openApis/serviceTestManagement/models'; +import { AppService } from 'src/app/shared/services/app.service'; +import { DeleteServiceTestSpecComponent } from '../delete-service-test-spec/delete-service-test-spec.component'; +import { HttpErrorResponse } from '@angular/common/http'; + + +@Component({ + selector: 'app-list-service-test-specs', + templateUrl: './list-service-test-specs.component.html', + styleUrls: ['./list-service-test-specs.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListServiceTestSpecsComponent implements OnInit { + + constructor( + private testSpecificationService: ServiceTestSpecificationService, + private toast: ToastrService, + public dialog: MatDialog, + public appService: AppService + ) { } + + displayedColumns = ['name', 'description', 'version', 'lastUpdate', 'lifecycleStatus', 'assignedService', 'actions'] + dataSource = new MatTableDataSource() + + serviceSpecifications: ServiceTestSpecification[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + ngOnInit() { + this.retrieveTestSpecificationList() + } + + retrieveTestSpecificationList() { + this.testSpecificationService.listServiceTestSpecification({}).subscribe( + data => { this.serviceSpecifications = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.serviceSpecifications + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + this.dataSource.sortingDataAccessor = (item, property): string | number => { + switch (property) { + case 'lastUpdate': return new Date(item.lastUpdate).getTime(); + default: return item[property]; + } + } + + } + ) + } + + openSpecDeleteDialog(element: ServiceTestSpecification) { + const dialogRef = this.dialog.open(DeleteServiceTestSpecComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Service Test Specification") + } else { + this.toast.success("Service Test Specification list is successfully updated") + this.retrieveTestSpecificationList() + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + + +} diff --git a/src/app/p_testing/readme.md b/src/app/p_testing/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..5c8708f2b37cf9e4adb01277195650993de971da --- /dev/null +++ b/src/app/p_testing/readme.md @@ -0,0 +1 @@ +Placeholder for testing portal directory \ No newline at end of file diff --git a/src/app/shared.module.ts b/src/app/shared.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..45535914b3f53e2e70b4553397834c665ea93051 --- /dev/null +++ b/src/app/shared.module.ts @@ -0,0 +1,171 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { NgProgressModule } from 'ngx-progressbar'; +import { NgProgressHttpModule } from 'ngx-progressbar/http'; + +import { OwlDateTimeModule } from '@danielmoncada/angular-datetime-picker'; +import { OwlMomentDateTimeModule } from '@danielmoncada/angular-datetime-picker-moment-adapter'; + + +import { ToastrModule } from 'ngx-toastr'; + +import { OAuthModule } from 'angular-oauth2-oidc'; + +import { FileUploadModule } from '@iplab/ngx-file-upload' + +import { MarkdownModule } from 'ngx-markdown' + +import { BootstrapComponent } from './bootstrap/bootstrap.component'; + +import { ListOrganizationsComponent } from './shared/components/partyManagement/list-organizations/list-organizations.component'; +import { EditOrganizationsComponent } from './shared/components/partyManagement/edit-organizations/edit-organizations.component'; +import { EditPartyCharacteristicsComponent } from './shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component'; +import { DeletePartyCharacteristicComponent } from './shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component'; +import { DeleteOrganizationComponent } from './shared/components/partyManagement/delete-organization/delete-organization.component'; +import { ListIndividualsComponent } from './shared/components/partyManagement/list-individuals/list-individuals.component'; +import { EditIndividualsComponent } from './shared/components/partyManagement/edit-individuals/edit-individuals.component'; +import { DeleteIndividualComponent } from './shared/components/partyManagement/delete-individual/delete-individual.component'; +import { jsonParsePipe } from './shared/pipes/jsonParsePipe'; + + +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatButtonModule } from '@angular/material/button'; +import { MatButtonToggleModule } from '@angular/material/button-toggle'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatNativeDateModule } from '@angular/material/core'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatExpansionModule } from '@angular/material/expansion'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatListModule } from '@angular/material/list'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatSelectModule } from '@angular/material/select'; +import { MatSortModule } from '@angular/material/sort'; +import { MatTableModule } from '@angular/material/table'; +import { MatTabsModule } from '@angular/material/tabs'; +import { MatToolbarModule } from '@angular/material/toolbar'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatTreeModule } from '@angular/material/tree'; + +import {DragDropModule} from '@angular/cdk/drag-drop'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { NgJsonEditorModule } from 'ang-jsoneditor'; + + +@NgModule({ + declarations: [ + jsonParsePipe, + BootstrapComponent, + ListOrganizationsComponent, + EditOrganizationsComponent, + EditPartyCharacteristicsComponent, + DeletePartyCharacteristicComponent, + DeleteOrganizationComponent, + ListIndividualsComponent, + EditIndividualsComponent, + DeleteIndividualComponent + ], + imports: [ + RouterModule, + FormsModule, + ReactiveFormsModule, + CommonModule, + MatTableModule, + MatSortModule, + MatPaginatorModule, + MatInputModule, + MatSelectModule, + MatIconModule, + MatDialogModule, + MatTabsModule, + MatCheckboxModule, + MatTooltipModule, + MatButtonModule, + MatAutocompleteModule, + MatChipsModule, + MatExpansionModule, + MatToolbarModule, + MatTreeModule, + MatProgressBarModule, + MatButtonToggleModule, + MatRadioModule, + MatProgressSpinnerModule, + MatListModule, + DragDropModule, + MatNativeDateModule, + MatDatepickerModule, + // NgProgressModule, + // NgProgressHttpModule, + OwlDateTimeModule, + OwlMomentDateTimeModule, + // ToastrModule.forRoot({progressBar: true, preventDuplicates: true}), + // OAuthModule.forRoot(), + FileUploadModule, + MarkdownModule.forRoot(), + NgJsonEditorModule + + ], + entryComponents : [ + EditPartyCharacteristicsComponent, + DeletePartyCharacteristicComponent, + DeleteOrganizationComponent, + DeleteIndividualComponent + ], + + exports : [ + jsonParsePipe, + BootstrapComponent, + ListOrganizationsComponent, + EditOrganizationsComponent, + EditPartyCharacteristicsComponent, + DeletePartyCharacteristicComponent, + DeleteOrganizationComponent, + ListIndividualsComponent, + EditIndividualsComponent, + DeleteIndividualComponent, + FormsModule, + ReactiveFormsModule, + MatTableModule, + MatSortModule, + MatPaginatorModule, + MatInputModule, + MatSelectModule, + MatIconModule, + MatDialogModule, + MatTabsModule, + MatCheckboxModule, + MatTooltipModule, + MatButtonModule, + MatAutocompleteModule, + MatChipsModule, + MatExpansionModule, + MatToolbarModule, + MatTreeModule, + MatProgressBarModule, + MatButtonToggleModule, + MatRadioModule, + MatProgressSpinnerModule, + MatListModule, + DragDropModule, + MatNativeDateModule, + MatDatepickerModule, + NgProgressModule, + NgProgressHttpModule, + OwlDateTimeModule, + OwlMomentDateTimeModule, + ToastrModule, + OAuthModule, + FileUploadModule, + MarkdownModule, + NgJsonEditorModule + ], +}) +export class SharedModule { } diff --git a/src/app/shared/animations/animations.ts b/src/app/shared/animations/animations.ts new file mode 100644 index 0000000000000000000000000000000000000000..128c5db4eeb7843e94d2ceaea323d04da0e437da --- /dev/null +++ b/src/app/shared/animations/animations.ts @@ -0,0 +1,36 @@ +import { style, animate, transition } from '@angular/animations'; + +export function fadeIn(){ + return [ + transition(':enter', [ + style({opacity: 0}), + animate('400ms ease-in', style({opacity: 1})) + ]) + ]; +} + +export function fadeOut() { + return [ + transition(':leave', [ + style({opacity: 1}), + animate('400ms ease-in', style({opacity: 0})) + ]) + ]; +} + +export function simpleFade() { + return [ + // fade in when created. this could also be written as transition('void => *') + transition(':enter', [ + style({opacity: 0}), + animate('400ms ease-in', style({opacity: 1})) + ]), + + // fade out when destroyed. this could also be written as transition('void => *') + transition(':leave', [ + style({opacity: 1}), + animate('400ms ease-in', style({opacity: 0})) + ]), + ] + +} \ No newline at end of file diff --git a/src/app/shared/components/contact/contact.component.html b/src/app/shared/components/contact/contact.component.html new file mode 100644 index 0000000000000000000000000000000000000000..c496ccb15add347f8f4a66b0d005a655ba3fb5c2 --- /dev/null +++ b/src/app/shared/components/contact/contact.component.html @@ -0,0 +1,48 @@ +
+ +
+
+
+

Who we are

+
+
ETSI SDG OpenSlice | https://osl.etsi.org
The ETSI Software Development Group for OpenSlice (SDG OSL) is developing an open source service based Operations Support System (OSS) to deliver Network Slice as a Service (NSaaS).
+
{{config.TITLE}} | {{config.WEBURL}}
A portal that allows 5G + experimenters to design and deploy network services towards the infrastructure.
+
{{config.TITLE}} wiki | {{config.WIKI}}
A wiki containing OpenSlice software documentation. +
+
+
+
+
+ +
+
+
+

Connect with us

+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
\ No newline at end of file diff --git a/src/app/shared/components/contact/contact.component.scss b/src/app/shared/components/contact/contact.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..9e561539420e2ba7b10bbfbdb70003bdb3d1ca9a --- /dev/null +++ b/src/app/shared/components/contact/contact.component.scss @@ -0,0 +1,6 @@ +.section_contact { + padding:40px 0; + background-color: #6c6c6c; + color: #FFFFFF; + transition: all 0.3s; +} \ No newline at end of file diff --git a/src/app/shared/components/contact/contact.component.spec.ts b/src/app/shared/components/contact/contact.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..427633e0a0b85f9c18ff1004470f2545e83d72ba --- /dev/null +++ b/src/app/shared/components/contact/contact.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ContactComponent } from './contact.component'; + +describe('ContactComponent', () => { + let component: ContactComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ContactComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ContactComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/contact/contact.component.ts b/src/app/shared/components/contact/contact.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..9045c4dea65beaff2ecd3f95d46454801978ab35 --- /dev/null +++ b/src/app/shared/components/contact/contact.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; + +import { AppService } from 'src/app/shared/services/app.service'; +import { IAppConfig } from 'src/app/shared/models/app-config.model'; +import { ThemingService } from 'src/app/theming/theming.service'; + +@Component({ + selector: 'app-contact', + templateUrl: './contact.component.html', + styleUrls: ['./contact.component.scss'] +}) +export class ContactComponent implements OnInit { + + constructor( + private appService: AppService, + private themingService: ThemingService + ) { } + + config: IAppConfig + customContactHTML: string + customIntroductionHTML: string + + ngOnInit() { + this.config = this.appService.config + + const customContactHTML = this.themingService.getConfig().CONNECT_WITH_US_HTML + if (customContactHTML) {this.customContactHTML = customContactHTML} + + const customIntroductionHTML = this.themingService.getConfig().WHO_WE_ARE_HTML + if (customIntroductionHTML) { this.customIntroductionHTML = customIntroductionHTML } + } + +} diff --git a/src/app/shared/components/footer/footer.component.html b/src/app/shared/components/footer/footer.component.html new file mode 100644 index 0000000000000000000000000000000000000000..f44414a086d985942e13bd641767cd2bb45b6496 --- /dev/null +++ b/src/app/shared/components/footer/footer.component.html @@ -0,0 +1,24 @@ +
+ + +
+ \ No newline at end of file diff --git a/src/app/shared/components/footer/footer.component.scss b/src/app/shared/components/footer/footer.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..fc1e88af50464b9221b7e609c220aed88b0ee268 --- /dev/null +++ b/src/app/shared/components/footer/footer.component.scss @@ -0,0 +1,4 @@ +.section_footer { + padding: 20px 0; + transition: all 0.3s; +} \ No newline at end of file diff --git a/src/app/shared/components/footer/footer.component.spec.ts b/src/app/shared/components/footer/footer.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..2ca6c45431d529bbf993d17231e1c7604bb6a480 --- /dev/null +++ b/src/app/shared/components/footer/footer.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FooterComponent } from './footer.component'; + +describe('FooterComponent', () => { + let component: FooterComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FooterComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FooterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/footer/footer.component.ts b/src/app/shared/components/footer/footer.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..da8460ce477c45c8590f97b3bea53aa18665b181 --- /dev/null +++ b/src/app/shared/components/footer/footer.component.ts @@ -0,0 +1,31 @@ +import { Component, OnInit } from '@angular/core'; +import { AppService } from 'src/app/shared/services/app.service'; +import { IAppConfig } from 'src/app/shared/models/app-config.model'; +import { ThemingService } from 'src/app/theming/theming.service'; + +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'] +}) +export class FooterComponent implements OnInit { + + constructor( + private appService: AppService, + private themingService: ThemingService + ) { } + + config: IAppConfig + currentYear: number + customFooterHTML: string + + ngOnInit() { + this.config = this.appService.config + + this.currentYear = new Date().getFullYear() + + const customFooterHTML = this.themingService.getConfig().FOOTER_HTML + if (customFooterHTML) { this.customFooterHTML = customFooterHTML } + } + +} diff --git a/src/app/shared/components/page-not-found/page-not-found.component.html b/src/app/shared/components/page-not-found/page-not-found.component.html new file mode 100644 index 0000000000000000000000000000000000000000..51a486f12aa514a8535db5c8263ee411d99c0f98 --- /dev/null +++ b/src/app/shared/components/page-not-found/page-not-found.component.html @@ -0,0 +1,24 @@ +
+
+
+
+
+
+

404

+
+ +
+

+ Looks like you're lost +

+ +

The page you are looking for is not available!

+ + + +
+
+
+
+
+
\ No newline at end of file diff --git a/src/app/shared/components/page-not-found/page-not-found.component.scss b/src/app/shared/components/page-not-found/page-not-found.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..50000aa90d58bab4cf9a467d98c4eb59b710916f --- /dev/null +++ b/src/app/shared/components/page-not-found/page-not-found.component.scss @@ -0,0 +1,30 @@ +.page_404{ padding:40px 0; background:#fff; font-family: 'Arvo', serif; +} + +.page_404 img { width:100%;} + +.four_zero_four_bg { + background-image: url('/assets/images/404/dribbble_1.gif'); + height: 400px; + background-position: center; + } + +.four_zero_four_bg h1 { + font-size:80px; + } + +.four_zero_four_bg h3 { + font-size:80px; +} + +.link_404 { + color: #fff!important; + padding: 10px 20px; + background: #39ac31; + margin: 20px 0; + display: inline-block; +} + +.content_box_404 { + margin-top:-50px; +} \ No newline at end of file diff --git a/src/app/shared/components/page-not-found/page-not-found.component.spec.ts b/src/app/shared/components/page-not-found/page-not-found.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..697a9465727a15f683ee29bb6f88ecf5b65548e2 --- /dev/null +++ b/src/app/shared/components/page-not-found/page-not-found.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PageNotFoundComponent } from './page-not-found.component'; + +describe('PageNotFoundComponent', () => { + let component: PageNotFoundComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PageNotFoundComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PageNotFoundComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/page-not-found/page-not-found.component.ts b/src/app/shared/components/page-not-found/page-not-found.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..4d5f7ec232dac09f5e5e8dc1e7906fdf18f6e74e --- /dev/null +++ b/src/app/shared/components/page-not-found/page-not-found.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-page-not-found', + templateUrl: './page-not-found.component.html', + styleUrls: ['./page-not-found.component.scss'] +}) +export class PageNotFoundComponent implements OnInit { + + constructor() { } + + ngOnInit() { } + +} diff --git a/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.html b/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b741e9d205cea5d41edaf33c7a85ec65bb8d747c --- /dev/null +++ b/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.html @@ -0,0 +1,16 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete individual + + {{data?.familyName}} {{data?.givenName}} + ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.scss b/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.spec.ts b/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..89bd62c7aca1576fef2580a31460e4247330ef50 --- /dev/null +++ b/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteIndividualComponent } from './delete-individual.component'; + +describe('DeleteIndividualComponent', () => { + let component: DeleteIndividualComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteIndividualComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteIndividualComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.ts b/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f15c72f42db5f0bd83572813162b5e70d039f63 --- /dev/null +++ b/src/app/shared/components/partyManagement/delete-individual/delete-individual.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { Individual } from 'src/app/openApis/partyManagement/models'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { IndividualService } from 'src/app/openApis/partyManagement/services'; + +@Component({ + templateUrl: './delete-individual.component.html', + styleUrls: ['./delete-individual.component.scss'] +}) +export class DeleteIndividualComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Individual, + private dialogRef: MatDialogRef, + private individualService: IndividualService + + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.individualService.deleteIndividual(this.data.id).subscribe( + data => {}, + error => {this.dialogRef.close(error); console.error(error)}, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.html b/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.html new file mode 100644 index 0000000000000000000000000000000000000000..05a67b7927d2e8b50ed0776fb30aef7259a5de51 --- /dev/null +++ b/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.html @@ -0,0 +1,17 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete organization + + {{data?.name}} + {{data?.tradingName}} + ? +
+ +
+ + +
+ \ No newline at end of file diff --git a/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.scss b/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.spec.ts b/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..acc97b66fd7ee9166bc2d11414bbd6ad5baae1a9 --- /dev/null +++ b/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteOrganizationComponent } from './delete-organization.component'; + +describe('DeleteOrganizationComponent', () => { + let component: DeleteOrganizationComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeleteOrganizationComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeleteOrganizationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.ts b/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..1a6a80375c14e04f5440e49dffc24df68a73bcff --- /dev/null +++ b/src/app/shared/components/partyManagement/delete-organization/delete-organization.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Organization } from 'src/app/openApis/partyManagement/models'; +import { OrganizationService } from 'src/app/openApis/partyManagement/services'; + +@Component({ + selector: 'app-delete-organization', + templateUrl: './delete-organization.component.html', + styleUrls: ['./delete-organization.component.scss'] +}) +export class DeleteOrganizationComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: Organization, + private dialogRef: MatDialogRef, + private orgService: OrganizationService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + this.orgService.deleteOrganization(this.data.id).subscribe( + data => {}, + error => {this.dialogRef.close(error); console.error(error)}, + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + +} diff --git a/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.html b/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.html new file mode 100644 index 0000000000000000000000000000000000000000..73905be92dbb8ac97f65bacf7d6d69368c31a830 --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.html @@ -0,0 +1,114 @@ +
+
+
+ +
+
+ +
+
+
+
+

Individual Profile

+ +

Add a new individual

+ +

Edit individual + + {{individual?.familyName}} {{individual?.givenName}} + +

+
+ +
+
+
+ +
+ + + + + Main Individual properties + + + +
+ + Family Name + + + + + Given Name + + + + + Location + + + + + Organization + + + +
+ +
Contact Details
+
+ + + homeCity + + + + + + + emailEmail + + + + + + + phonePhone + + + + +
+ + + + +
+
+ +
+
+ +
+
+
+ + + + +
+
+
+
+
diff --git a/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.scss b/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..465e0788c47c6a512d0ca406c145d3d0624060ed --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.scss @@ -0,0 +1,7 @@ +.card-paper { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +mat-form-field { + width: 100%; +} \ No newline at end of file diff --git a/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.spec.ts b/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9883d5d719f1944abcd076372ffa43f107271d4b --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditIndividualsComponent } from './edit-individuals.component'; + +describe('EditIndividualsComponent', () => { + let component: EditIndividualsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditIndividualsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditIndividualsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.ts b/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..aedc7fbf8bc5628995e28a34e52a29006e553a9e --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-individuals/edit-individuals.component.ts @@ -0,0 +1,183 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; +import { IndividualService, OrganizationService } from 'src/app/openApis/partyManagement/services'; +import { MatDialog } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { Individual, Organization, IndividualCreate, IndividualUpdate } from 'src/app/openApis/partyManagement/models'; +import { FormGroup, FormControl } from '@angular/forms'; +import { Subscription } from 'rxjs'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; + +@Component({ + selector: 'app-edit-individuals', + templateUrl: './edit-individuals.component.html', + styleUrls: ['./edit-individuals.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditIndividualsComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private individualService: IndividualService, + private organizationService: OrganizationService, + private authService: AuthService, + private router: Router, + private dialog: MatDialog, + private toast: ToastrService, + ) { } + + individualID: string + individual: Individual + + organizations: Organization[] + + editForm = new FormGroup({ + givenName: new FormControl(), + familyName: new FormControl(), + location: new FormControl(), + contactInfo: new FormGroup({ + city: new FormControl(), + emailAddress: new FormControl(), + phoneNumber: new FormControl() + }) + }) + + predefinedOrganizationCtrl = new FormControl() + customOrganizationCtrl = new FormControl() + + contactMediums = [ + { mediumType: 'email', contactType: ['email']}, + { mediumType: 'telephone', contactType: ['mobile', 'fixed home', 'fixed office']}, + { mediumType: 'postal', contactType: ['shipping', 'installation']}, + ] + + newIndividual = false + + subscriptions = new Subscription() + + ngOnInit() { + // this.retrieveOrganizations() + this.routerEventsSubscription() + + if (this.activatedRoute.snapshot.params.id) + { + this.individualID = this.activatedRoute.snapshot.params.id + if (this.authService.portalUser && this.authService.portalUser.id === this.individualID) { + this.individualID = "myuser" + } + this.retrieveIndividual() + } else { + // this.initNewOrganizationFormArray() + this.newIndividual = true + } + + } + + routerEventsSubscription() { + this.subscriptions = this.router.events.subscribe( + event => { + if (event instanceof ActivationEnd) { + this.individualID = this.activatedRoute.snapshot.params.id + this.retrieveIndividual() + } + } + ) + } + + retrieveOrganizations() { + this.organizationService.listOrganization({}).subscribe( + data => { this.organizations = data }, + error => { console.error(error) } + ) + } + + retrieveIndividual() { + this.individualService.retrieveIndividual({id: this.individualID}).subscribe( + data => this.individual = data, + error => console.error(error), + () => { + this.editForm.patchValue({ + givenName: this.individual.givenName, + familyName: this.individual.familyName, + location: this.individual.location, + contactInfo: { + city: this.individual.contactMedium[0].characteristic.city, + emailAddress: this.individual.contactMedium[0].characteristic.emailAddress, + phoneNumber: this.individual.contactMedium[0].characteristic.phoneNumber + } + }) + + if (this.individual.partyCharacteristic.length) { + this.customOrganizationCtrl.setValue(this.individual.partyCharacteristic.find( char => char.name === 'organization').value.value) + } + + if (this.individualID ==="myuser") { + this.authService.portalUser = this.individual + } + + //prefefined Organization in Related Party + + // + } + + ) + } + + updateIndividual() { + let updateObj: IndividualCreate | IndividualUpdate = { + familyName: this.editForm.value.familyName, + givenName: this.editForm.value.givenName, + location: this.editForm.value.location, + contactMedium: [{ + mediumType: 'main', + characteristic: this.editForm.value.contactInfo + }], + partyCharacteristic: [] + } + + if (this.customOrganizationCtrl.value) + updateObj.partyCharacteristic.push({name: 'organization', valueType: 'TEXT', value: {value: this.customOrganizationCtrl.value}}) + // updateObj = this.editForm.value + + let updatedIndividual: Individual + + if (this.newIndividual) { + // const definedCharacteristics = this.editForm.get('partyCharacteristic').value.filter(el => el.value) + // if (definedCharacteristics.length) updateObj.partyCharacteristic = definedCharacteristics + + this.individualService.createIndividual(updateObj).subscribe( + data => { updatedIndividual = data }, + error => console.error(error), + () => { + this.newIndividual = false + this.toast.success("Individual was successfully created") + this.refreshIndividual(updatedIndividual) + } + ) + } + else { + this.individualService.patchIndividual({id: this.individual.id, individual: updateObj}).subscribe( + data => { updatedIndividual = data }, + error => console.error(error), + () => { + this.newIndividual = false + this.toast.success("Individual was successfully updated") + this.refreshIndividual(updatedIndividual) + } + ) + } + + } + + refreshIndividual(updatedIndividual: Individual) { + // this.individualID = updatedIndividual.id + this.retrieveIndividual() + } + + ngOnDestroy() { + this.subscriptions.unsubscribe() + } + +} diff --git a/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.html b/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.html new file mode 100644 index 0000000000000000000000000000000000000000..372eab0a19ccd3b0b7acaa93617ea0a24c6ee05e --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.html @@ -0,0 +1,12 @@ +

+ + Confirm deletion +

+
+ Are you sure you want to permanently delete characteristic {{data.characteristicToBeDeleted.name}} ? +
+ +
+ + +
diff --git a/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.scss b/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.spec.ts b/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..ea47643862cc8de6eae30ddf94149a0dccdde538 --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeletePartyCharacteristicComponent } from './delete-party-characteristic.component'; + +describe('DeletePartyCharacteristicComponent', () => { + let component: DeletePartyCharacteristicComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DeletePartyCharacteristicComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DeletePartyCharacteristicComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.ts b/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..d804313eb7d977795c11e73dae2b086d3c19ba4e --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/delete-party-characteristic/delete-party-characteristic.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Organization, Characteristic, OrganizationUpdate } from 'src/app/openApis/partyManagement/models'; +import { OrganizationService } from 'src/app/openApis/partyManagement/services'; + +@Component({ + selector: 'app-delete-party-characteristic', + templateUrl: './delete-party-characteristic.component.html', + styleUrls: ['./delete-party-characteristic.component.scss'] +}) +export class DeletePartyCharacteristicComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + organization: Organization + characteristicsArray: Characteristic[], + characteristicToBeDeleted: Characteristic + }, + private dialogRef: MatDialogRef, + private orgService: OrganizationService + ) { } + + ngOnInit() { + } + + confirmDelete() { + // this.dialogRef.close('deleted') + const updateOrganizationObj: OrganizationUpdate = { + partyCharacteristic: this.data.characteristicsArray + } + + + this.orgService.patchOrganization({ id: this.data.organization.id, organization: updateOrganizationObj }).subscribe( + data => {}, + error => console.error(error), + () => this.dialogRef.close('deleted') + ) + } + + closeDialog() { + this.dialogRef.close() + } + + +} diff --git a/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.html b/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.html new file mode 100644 index 0000000000000000000000000000000000000000..a860e54f60f47d83fde3fe5774353cc64e5400fa --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.html @@ -0,0 +1,161 @@ +
+
+
+ +
+
+ +
+
+
+
+

Organization Designer

+ +

Design a new organization

+ +

Edit Design of + + {{organization?.name}} + {{organization?.tradingName}} + +

+
+ +
+
+
+ +
+ + + + + Main Organization properties + + + +
+ + Organization Name + + + + + Trading Name + + + + + Status + + + {{status}} + + + + +
+ Legal Entity +
+ +
+ + + +
+
+ +
+
+ +
+ + + + + + Organization Characteristics + + + + + + +
+ + Apply Filter... + + + +
+ There are no party characteristics yet assigned +
+ + +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Name + {{element.name}} Value Type {{element.valueType}} Value {{element.value.value}} ({{element.value.alias}}) + Actions +
+ + +
+
+ +
+
+ +
+
+ + + + +
+
+
+
+
diff --git a/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.scss b/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..465e0788c47c6a512d0ca406c145d3d0624060ed --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.scss @@ -0,0 +1,7 @@ +.card-paper { + box-shadow: 0 2px 4px -1px rgba(0,0,0,.2), 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12); +} + +mat-form-field { + width: 100%; +} \ No newline at end of file diff --git a/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.spec.ts b/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..602aeda9ebe3056cad204ca3fe662e37bb43d92a --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditOrganizationsComponent } from './edit-organizations.component'; + +describe('EditOrganizationsComponent', () => { + let component: EditOrganizationsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditOrganizationsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditOrganizationsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.ts b/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..3898c1c8a4887b55fe975581f29a552d6d169bf0 --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/edit-organizations.component.ts @@ -0,0 +1,198 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ActivatedRoute, Router, ActivationEnd } from '@angular/router'; +import { OrganizationService } from 'src/app/openApis/partyManagement/services'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { Organization, Characteristic, Any, OrganizationUpdate, OrganizationCreate } from 'src/app/openApis/partyManagement/models'; +import { FormGroup, FormControl, FormArray } from '@angular/forms'; +import { Subscription } from 'rxjs'; +import { EditPartyCharacteristicsComponent } from './edit-party-characteristics/edit-party-characteristics.component'; +import { DeletePartyCharacteristicComponent } from './delete-party-characteristic/delete-party-characteristic.component'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; + +// const defaultPartyCharacteristics = ['EXTERNAL_TMFAPI_BASEURL', 'EXTERNAL_TMFAPI_CLIENTREGISTRATIONID', 'EXTERNAL_TMFAPI_OAUTH2CLIENTID', 'EXTERNAL_TMFAPI_OAUTH2CLIENTSECRET', 'EXTERNAL_TMFAPI_OAUTH2SCOPES', 'EXTERNAL_TMFAPI_OAUTH2TOKENURI', 'EXTERNAL_TMFAPI_USERNAME', 'EXTERNAL_TMFAPI_PASSWORD', 'EXTERNAL_TMFAPI_SERVICE_CATALOG_URLS', 'EXTERNAL_TMFAPI_SERVICE_ORDER_URLS', 'EXTERNAL_TMFAPI_SERVICE_SPEC'] + + +@Component({ + selector: 'app-edit-organizations', + templateUrl: './edit-organizations.component.html', + styleUrls: ['./edit-organizations.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class EditOrganizationsComponent implements OnInit { + + constructor( + private activatedRoute: ActivatedRoute, + private orgService: OrganizationService, + private dialog: MatDialog, + private toast: ToastrService, + private router: Router + ) { } + + organizationID: string + organization: Organization + + editForm = new FormGroup({ + name: new FormControl(), + tradingName: new FormControl(), + isLegalEntity: new FormControl(), + status: new FormControl() + }) + + newOrganizationPartyCharFA = new FormArray([]) + + + organizationStatuses = ['initialized', 'validated', 'closed'] + + displayColumnsCharacteristics = ['name', 'value', 'actions'] + dataSource = new MatTableDataSource() + + @ViewChild(MatSort, {static: true}) sort: MatSort; + + newOrganization = false + + subscriptions = new Subscription() + + ngOnInit() { + if (this.activatedRoute.snapshot.params.id) + { + this.organizationID = this.activatedRoute.snapshot.params.id + this.retrieveOrganization() + } else { + // this.initNewOrganizationFormArray() + this.newOrganization = true + this.editForm.patchValue({ + isLegalEntity: false, + status: 'initialized' + }) + } + } + + // initNewOrganizationFormArray() { + // const formArray = this.newOrganizationPartyCharFA as FormArray + // defaultPartyCharacteristics.forEach ( val => { + // formArray.push(this.updateInitFAItem(val)) + // }) + // this.editForm.addControl('partyCharacteristic', formArray) + // } + + // updateInitFAItem(CharacteristicName: string): FormGroup { + // return new FormGroup({ + // name: new FormControl(CharacteristicName), + // valueType: new FormControl('TEXT'), + // value: new FormControl() + // }) + // } + + retrieveOrganization() { + this.orgService.retrieveOrganization({id: this.organizationID}).subscribe( + data => this.organization = data, + error => console.error(error), + () => { + this.editForm.patchValue(this.organization) + + this.dataSource.data = this.organization.partyCharacteristic + this.dataSource.sort = this.sort + } + ) + } + + openCharacteristicDesignDialog(characteristic: Characteristic) { + const dialogRef = this.dialog.open(EditPartyCharacteristicsComponent, { + data: { + organization: this.organization, + characteristicToBeUpdated: characteristic + }, + disableClose: true + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + this.toast.success("Organization characteristics list was successfully updated") + this.retrieveOrganization() + } + } + ) + } + + openCharacteristicDeleteDialog(characteristic: Characteristic) { + const characteristicToBeDeletedIndex = this.organization.partyCharacteristic.findIndex(char => char.uuid === characteristic.uuid) + + const newCharacteristicsArray: Characteristic[] = this.organization.partyCharacteristic.slice() + + newCharacteristicsArray.splice(characteristicToBeDeletedIndex, 1) + + const dialogRef = this.dialog.open(DeletePartyCharacteristicComponent, { + data: { + organization: this.organization, + characteristicsArray: newCharacteristicsArray, + characteristicToBeDeleted: this.organization.partyCharacteristic[characteristicToBeDeletedIndex] + } + }) + + dialogRef.afterClosed().subscribe ( + result => { + if (result){ + this.toast.success("Organization characteristics list was successfully updated") + this.retrieveOrganization() + } + } + ) + } + + applyCharacteristicFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } + + updateOrganization() { + let updateObj: OrganizationUpdate | OrganizationCreate = { + name: this.editForm.value.name, + tradingName: this.editForm.value.tradingName, + status: this.editForm.value.status, + isLegalEntity: this.editForm.value.isLegalEntity + } + + let updatedOrganization: Organization + + if (this.newOrganization) { + // const definedCharacteristics = this.editForm.get('partyCharacteristic').value.filter(el => el.value) + // if (definedCharacteristics.length) updateObj.partyCharacteristic = definedCharacteristics + + this.orgService.createOrganization(updateObj).subscribe( + data => { updatedOrganization = data }, + error => console.error(error), + () => { + this.newOrganization = false + this.toast.success("Organization was successfully created") + this.refreshOrganization(updatedOrganization) + } + ) + } + else { + this.orgService.patchOrganization({id: this.organizationID, organization: updateObj}).subscribe( + data => { updatedOrganization = data }, + error => console.error(error), + () => { + this.newOrganization = false + this.toast.success("Organization was successfully updated") + this.refreshOrganization(updatedOrganization) + } + ) + } + + } + + refreshOrganization(updatedOrganization: Organization) { + this.organizationID = updatedOrganization.id + this.retrieveOrganization() + } + + + +} diff --git a/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.html b/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.html new file mode 100644 index 0000000000000000000000000000000000000000..c61e3b3073f2c5db7c34378901381044fe53925b --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.html @@ -0,0 +1,44 @@ +
+ +

+ + Create Organization Characteristic +

+ +

+ + Edit Organization Characteristic +

+ +
+ + +
+ + Name + + + +
+
+ + Alias + + + + Value + + +
+
+
+ +
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.scss b/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.spec.ts b/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..726963862926df5ee0541ecea7a77008043c38eb --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditPartyCharacteristicsComponent } from './edit-party-characteristics.component'; + +describe('EditPartyCharacteristicsComponent', () => { + let component: EditPartyCharacteristicsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EditPartyCharacteristicsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EditPartyCharacteristicsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.ts b/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..3efb9ddd7e562017d192366659204fbb9f284677 --- /dev/null +++ b/src/app/shared/components/partyManagement/edit-organizations/edit-party-characteristics/edit-party-characteristics.component.ts @@ -0,0 +1,68 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Organization, Characteristic, OrganizationUpdate } from 'src/app/openApis/partyManagement/models'; +import { OrganizationService } from 'src/app/openApis/partyManagement/services'; +import { FormGroup, FormControl } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-edit-party-characteristics', + templateUrl: './edit-party-characteristics.component.html', + styleUrls: ['./edit-party-characteristics.component.scss'] +}) +export class EditPartyCharacteristicsComponent implements OnInit { + + constructor( + @Inject(MAT_DIALOG_DATA) public data: { + organization: Organization, + characteristicToBeUpdated: Characteristic, + }, + private dialogRef: MatDialogRef, + private orgService: OrganizationService, + private toast: ToastrService + ) { } + + newSpec: boolean = false + + editCharacteristicForm = new FormGroup({ + name: new FormControl(), + valueType: new FormControl('TEXT'), + value: new FormGroup({ + value: new FormControl, + alias: new FormControl + }) + }) + + ngOnInit() { + if (this.data.characteristicToBeUpdated) { + this.editCharacteristicForm.patchValue(this.data.characteristicToBeUpdated) + } + + else { this.newSpec = true } + } + + closeDialog() { + this.dialogRef.close() + } + + submitDialog() { + + if (this.newSpec) { + this.data.organization.partyCharacteristic.push(this.editCharacteristicForm.value) + } else { + const updateCharacteristIndex = this.data.organization.partyCharacteristic.findIndex(char => char.uuid === this.data.characteristicToBeUpdated.uuid) + this.data.organization.partyCharacteristic[updateCharacteristIndex] = this.editCharacteristicForm.value + } + + const organizationUpdateObj: OrganizationUpdate = { + partyCharacteristic: this.data.organization.partyCharacteristic + } + + this.orgService.patchOrganization({id: this.data.organization.id, organization: organizationUpdateObj}).subscribe( + data => {}, + error => { console.error(error); this.toast.error("An error occurred upon updating Organization Characteristics") }, + () => {this.dialogRef.close('updated')} + ) + } + +} diff --git a/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.html b/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ad6b444bc0d0394a6fc5557abc38d120ed281caf --- /dev/null +++ b/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.html @@ -0,0 +1,62 @@ +
+
+
+
+
+
+

Individuals

+

View and manage individuals

+
+ +
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Full Name {{element.familyName}} {{element.givenName}} Organization {{element.partyCharacteristic[0].value.value}} Location {{element.location}} Actions + + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.scss b/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.spec.ts b/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..610e3e6a3c06aac0f3acfe5aaf800a036dd80b9b --- /dev/null +++ b/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListIndividualsComponent } from './list-individuals.component'; + +describe('ListIndividualsComponent', () => { + let component: ListIndividualsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListIndividualsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListIndividualsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.ts b/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..2ed38a5b9c59e0200a0b1e24f71c1ba9019e2b64 --- /dev/null +++ b/src/app/shared/components/partyManagement/list-individuals/list-individuals.component.ts @@ -0,0 +1,94 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { IndividualService } from 'src/app/openApis/partyManagement/services'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { ToastrService } from 'ngx-toastr'; +import { Individual } from 'src/app/openApis/partyManagement/models'; +import { DeleteIndividualComponent } from '../delete-individual/delete-individual.component'; +import { HttpErrorResponse } from '@angular/common/http'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; + + + +@Component({ + selector: 'app-list-individuals', + templateUrl: './list-individuals.component.html', + styleUrls: ['./list-individuals.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class ListIndividualsComponent implements OnInit { + + constructor( + private individualService: IndividualService, + private dialog: MatDialog, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['familyName', 'organization', 'location', 'actions'] + dataSource = new MatTableDataSource() + + individuals: Individual[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + + ngOnInit() { + this.retrieveIndividuals() + } + + retrieveIndividuals() { + this.individualService.listIndividual({}).subscribe( + data => { this.individuals = data}, + error => { console.error() }, + () => { + this.dataSource.data = this.individuals + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + this.dataSource.sortingDataAccessor = (item, property): string | number => { + if (property === 'organization' && item.partyCharacteristic[0]) { + return item.partyCharacteristic[0].value.value + } else + return item[property] + } + + // custom filter for custom table fields + this.dataSource.filterPredicate = (data, filter) => { + let filterValue = filter.trim() + filterValue = filterValue.toLowerCase() + return (data.familyName+data.givenName).toLowerCase().includes(filterValue) || (data.location && data.location.toLowerCase().includes(filterValue)) || (data.partyCharacteristic[0] && data.partyCharacteristic[0].value.value.toLowerCase().includes(filterValue)) + } + } + ) + } + + + openIndividualDeleteDialog(element: Individual) { + const dialogRef = this.dialog.open(DeleteIndividualComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Individual") + } else { + this.toast.success("Individuals list is successfully updated") + this.retrieveIndividuals() + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } +} diff --git a/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.html b/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.html new file mode 100644 index 0000000000000000000000000000000000000000..b016cd7ec996c02dbc69f662dcbb135d4ef2f73f --- /dev/null +++ b/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.html @@ -0,0 +1,70 @@ +
+
+
+
+
+
+

Organizations

+

View and manage organizations

+
+ +
+ +
+ + + Apply Filter... + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Organization Name {{element.name}} Trading Name {{element.tradingName}} Legal Entity + check + close + Status {{element.status}} Actions + + + + +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.scss b/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..d7ccd81882836406efc099918ea18bae97f9df14 --- /dev/null +++ b/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.scss @@ -0,0 +1,3 @@ +.primary { + color: #3f51b5; +} \ No newline at end of file diff --git a/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.spec.ts b/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..b6e014c4cee662fb0f6afcf84038e6b97532f9d9 --- /dev/null +++ b/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListOrganizationsComponent } from './list-organizations.component'; + +describe('ListOrganizationsComponent', () => { + let component: ListOrganizationsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ListOrganizationsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListOrganizationsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.ts b/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8726cad625e907b3fe3ecfe48d8d203db912f404 --- /dev/null +++ b/src/app/shared/components/partyManagement/list-organizations/list-organizations.component.ts @@ -0,0 +1,78 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { OrganizationService } from 'src/app/openApis/partyManagement/services'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Organization } from 'src/app/openApis/partyManagement/models'; +import { ToastrService } from 'ngx-toastr'; +import { HttpErrorResponse } from '@angular/common/http'; +import { DeleteOrganizationComponent } from '../delete-organization/delete-organization.component'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { AppService } from 'src/app/shared/services/app.service'; + +@Component({ + selector: 'app-list-organizations', + templateUrl: './list-organizations.component.html', + styleUrls: ['./list-organizations.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] + +}) +export class ListOrganizationsComponent implements OnInit { + + constructor( + private organizationService: OrganizationService, + private dialog: MatDialog, + private toast: ToastrService, + public appService: AppService + ) { } + + displayedColumns = ['name', 'tradingName', 'isLegalEntity', 'status', 'actions'] + dataSource = new MatTableDataSource() + + organizations: Organization[] + + @ViewChild(MatSort, {static: true}) sort: MatSort; + @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; + + + ngOnInit() { + this.retrieveOrganizations() + } + + retrieveOrganizations() { + this.organizationService.listOrganization({}).subscribe( + data => { this.organizations = data }, + error => { console.error(error) }, + () => { + this.dataSource.data = this.organizations + this.dataSource.sort = this.sort + this.dataSource.paginator = this.paginator + } + ) + } + + openOrganizationDeleteDialog(element: Organization) { + const dialogRef = this.dialog.open(DeleteOrganizationComponent, {data: element}) + + dialogRef.afterClosed().subscribe ( + result => { + if (result) { + if (result instanceof HttpErrorResponse) { + this.toast.error("An error occurred while attempting to delete Organization") + } else { + this.toast.success("Organizations list is successfully updated") + this.retrieveOrganizations() + } + } + } + ) + } + + applyFilter(filterValue: string) { + filterValue = filterValue.trim(); + filterValue = filterValue.toLowerCase(); + this.dataSource.filter = filterValue; + } +} diff --git a/src/app/shared/components/redirect/redirect.component.html b/src/app/shared/components/redirect/redirect.component.html new file mode 100644 index 0000000000000000000000000000000000000000..3598c7333e2f4bf4d811ddc9bfb86c3ec8e284ef --- /dev/null +++ b/src/app/shared/components/redirect/redirect.component.html @@ -0,0 +1 @@ + diff --git a/src/app/shared/components/redirect/redirect.component.scss b/src/app/shared/components/redirect/redirect.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/shared/components/redirect/redirect.component.spec.ts b/src/app/shared/components/redirect/redirect.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..cf2ecb812f19a17ace0e97ded3b011938d3e6628 --- /dev/null +++ b/src/app/shared/components/redirect/redirect.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RedirectComponent } from './redirect.component'; + +describe('RedirectComponent', () => { + let component: RedirectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ RedirectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RedirectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/redirect/redirect.component.ts b/src/app/shared/components/redirect/redirect.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..9dd049f6d347714ce422b0956ca154aaaf4bf8dc --- /dev/null +++ b/src/app/shared/components/redirect/redirect.component.ts @@ -0,0 +1,38 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { AppService } from '../../services/app.service'; + +@Component({ + selector: 'app-redirect', + templateUrl: './redirect.component.html', + styleUrls: ['./redirect.component.scss'] +}) +export class RedirectComponent implements OnInit { + + constructor( + private appService: AppService, + private router: Router + ) { } + + ngOnInit() { + const activePortal = localStorage.getItem('active_portal') + + if (activePortal === 'services') { + this.router.navigate(['services', 'services_marketplace']) + } + else if (activePortal === 'resources') { + this.router.navigate(['resources', 'resource_catalogs']) + } + else if (activePortal === 'testing') { + this.router.navigate(['testing', 'service_test_specs']) + } + + else if (activePortal === 'products') { + this.router.navigate(['products', 'marketplace']) + } + + else { + this.router.navigate(['/']) + } + } +} diff --git a/src/app/shared/functions/sorting.service.spec.ts b/src/app/shared/functions/sorting.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..634abafd8f15e5436203299df0dd9ab993ca7650 --- /dev/null +++ b/src/app/shared/functions/sorting.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { SortingService } from './sorting.service'; + +describe('SortingService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: SortingService = TestBed.get(SortingService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/shared/functions/sorting.service.ts b/src/app/shared/functions/sorting.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f8e0764c740784de909acd2a5e1f03ab190c53a --- /dev/null +++ b/src/app/shared/functions/sorting.service.ts @@ -0,0 +1,28 @@ +import { Injectable } from "@angular/core"; + +@Injectable({ + providedIn: 'root' +}) +export class SortingService { + + constructor() { } + + ascStringSortingFunctionByNameProperty() { + return (a,b) => { + const nameA = a.name.toUpperCase(); + const nameB = b.name.toUpperCase(); + if (nameA < nameB) { return -1; } + if (nameA > nameB) { return 1; } + return 0 + } + } + + ascDateSortingFuncByDateProperty() { + return (a,b) => new Date(a.date).getTime() - new Date(b.date).getTime() + } + + ascDateSortingFuncByTimeProperty() { + return (a,b) => new Date(a.time).getTime() - new Date(b.time).getTime() + } + +} diff --git a/src/app/shared/interceptors/token-interceptor.ts b/src/app/shared/interceptors/token-interceptor.ts new file mode 100644 index 0000000000000000000000000000000000000000..01aa5c5338282cfd733bd44773a1898d511b3228 --- /dev/null +++ b/src/app/shared/interceptors/token-interceptor.ts @@ -0,0 +1,46 @@ + + import { Injectable } from '@angular/core'; + import { + HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse + } from '@angular/common/http'; +import { AuthService } from '../services/auth.service'; +import { Observable, throwError } from 'rxjs'; +import { catchError } from 'rxjs/operators'; +import { relative } from 'path'; +import { BootstrapService } from 'src/app/bootstrap/bootstrap.service'; + + @Injectable() + export class TokenInterceptor implements HttpInterceptor { + + constructor( + private authService: AuthService, + private bootstrapService: BootstrapService + ) {} + + addToken(req: HttpRequest, token: string): HttpRequest { + return req.clone({setHeaders: {Authorization: `Bearer ${token}` + } + }) + } + + intercept(req: HttpRequest, next: HttpHandler): Observable> { + // this rule is added, to append "client_id" to token requests after Keycloak update + if (this.bootstrapService.getConfig() && req.url === this.bootstrapService.getConfig().OAUTH_CONFIG.tokenEndpoint) { + req = req.clone({ body: req.body.append('client_id', this.bootstrapService.getConfig().OAUTH_CONFIG.clientId) }) + } + + if (this.authService.hasValidToken()) { + req = this.addToken(req, this.authService.getAccessToken()) + } + return next.handle(req).pipe( + catchError((e: any) => this.errorHandler(e))) + } + + errorHandler(e: any) { + if (e instanceof HttpErrorResponse) { + if (e.status === 401) { this.authService.logout() } + } + return throwError(e) + } + } + diff --git a/src/app/shared/models/app-config-theming.model.ts b/src/app/shared/models/app-config-theming.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..abecabe2ea6a170be044f94d5bb98a6067150b50 --- /dev/null +++ b/src/app/shared/models/app-config-theming.model.ts @@ -0,0 +1,9 @@ +export interface IAppThemingConfig { + "THEME_ID"?: string + "DEPLOYMENT_LOGO_PATH"?: string, + "DEFAULT_SERVICE_LOGO_PATH"?: string, + "FAVICON_PATH"?: string, + "WHO_WE_ARE_HTML"?: string, + "CONNECT_WITH_US_HTML"?: string, + "FOOTER_HTML"?: string, +} \ No newline at end of file diff --git a/src/app/shared/models/app-config.model.ts b/src/app/shared/models/app-config.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..7d639d6cbe5a1a2c0cf824796f8d0725ac6b85e6 --- /dev/null +++ b/src/app/shared/models/app-config.model.ts @@ -0,0 +1,14 @@ +import { AuthConfig } from 'angular-oauth2-oidc'; + +export interface IAppConfig { + "TITLE": string, + "PORTALVERSION":string, + "WIKI": string, + "BUGZILLA": string, + "STATUS": string, + "WEBURL": string, + "PORTAL_REPO_APIURL": string, + "ASSURANCE_SERVICE_MGMT_APIURL": string, + "APITMFURL": string, + "OAUTH_CONFIG": AuthConfig +} \ No newline at end of file diff --git a/src/app/shared/models/augmentedOpenAPImodels/stricter-defined-alarm-management.model.ts b/src/app/shared/models/augmentedOpenAPImodels/stricter-defined-alarm-management.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..fd496f73898aeed18e06916f7a63370a6e2cad78 --- /dev/null +++ b/src/app/shared/models/augmentedOpenAPImodels/stricter-defined-alarm-management.model.ts @@ -0,0 +1,17 @@ +import { Alarm, AlarmCreate } from "src/app/openApis/alarmManagement/models"; + +export interface stricterDefinedAlarm extends Alarm { + perceivedSeverity?: "critical"|"major"|"minor"|"warning"|"indeterminate"|"cleared" + alarmType?: "communicationsAlarm"|"processingErrorAlarm"|"environmentalAlarm"|"qualityOfServiceAlarm"|"equipmentAlarm"|"integrityViolation"|"operationalViolation"|"physicalViolation"|"securityService"|"mechanismViolation"|"timeDomainViolation" + probableCause?: "antennaFailure"|"communicationsSubsystemFailure"|"connectionEstablishmentError"|"cpuCyclesLimitExceeded"|"denialOfService"|"diskFailure"|"excessiveResponseTime"|"outOfCpuCycles"|"outOfMemory"|"outOfService"|"performanceDegraded"|"other"|"resourceAtOrNearingCapacity"|"systemResourcesOverload"|"thresholdCrossed" + ackState?: "unacknowledged" | "acknowledged" + state?: "raised"|"updated"|"cleared" +} + +export interface stricterDefinedAlarmCreate extends AlarmCreate { + perceivedSeverity?: "critical"|"major"|"minor"|"warning"|"indeterminate"|"cleared" + alarmType?: "communicationsAlarm"|"processingErrorAlarm"|"environmentalAlarm"|"qualityOfServiceAlarm"|"equipmentAlarm"|"integrityViolation"|"operationalViolation"|"physicalViolation"|"securityService"|"mechanismViolation"|"timeDomainViolation" + probableCause?: "antennaFailure"|"communicationsSubsystemFailure"|"connectionEstablishmentError"|"cpuCyclesLimitExceeded"|"denialOfService"|"diskFailure"|"excessiveResponseTime"|"outOfCpuCycles"|"outOfMemory"|"outOfService"|"performanceDegraded"|"other"|"resourceAtOrNearingCapacity"|"systemResourcesOverload"|"thresholdCrossed" + ackState?: "unacknowledged" | "acknowledged" + state?: "raised"|"updated"|"cleared" +} \ No newline at end of file diff --git a/src/app/shared/models/resource-candidate-with-logo.model.ts b/src/app/shared/models/resource-candidate-with-logo.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..a5f9ffb8fe2b536ad7ec3fcacc6b10a65cfaceb2 --- /dev/null +++ b/src/app/shared/models/resource-candidate-with-logo.model.ts @@ -0,0 +1,7 @@ +import { ResourceCandidate } from "src/app/openApis/resourceCatalogManagement/models"; + + +export interface ResourceCandidateWithLogo extends ResourceCandidate { + logo?: string | ArrayBuffer + fetchingLogo?: boolean +} diff --git a/src/app/shared/models/service-candidate-with-logo.model.ts b/src/app/shared/models/service-candidate-with-logo.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..409c3fda2f840158b4f5566be37c942feea799d4 --- /dev/null +++ b/src/app/shared/models/service-candidate-with-logo.model.ts @@ -0,0 +1,7 @@ +import { ServiceCandidate } from "src/app/openApis/serviceCatalogManagement/models"; + + +export interface ServiceCandidateWithLogo extends ServiceCandidate { + logo?: string | ArrayBuffer + fetchingLogo?: boolean +} diff --git a/src/app/shared/models/user-from-jwt.model.ts b/src/app/shared/models/user-from-jwt.model.ts new file mode 100644 index 0000000000000000000000000000000000000000..7df9c2cd16131209221fed8d39ac8712ec90ebf8 --- /dev/null +++ b/src/app/shared/models/user-from-jwt.model.ts @@ -0,0 +1,10 @@ +export interface userFromJWT { + "realm_access": { + "roles": string[] + }, + "name": string, + "preferred_username": string, + "given_name": string, + "family_name": string, + "email": string +} \ No newline at end of file diff --git a/src/app/shared/navbar/navbar.component.html b/src/app/shared/navbar/navbar.component.html new file mode 100644 index 0000000000000000000000000000000000000000..39712bd8c049b1de407bf762f236763272cb85a6 --- /dev/null +++ b/src/app/shared/navbar/navbar.component.html @@ -0,0 +1,310 @@ + diff --git a/src/app/shared/navbar/navbar.component.scss b/src/app/shared/navbar/navbar.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..24df4a8997159773e1faaf8cf210f36d3c220c94 --- /dev/null +++ b/src/app/shared/navbar/navbar.component.scss @@ -0,0 +1,95 @@ +.nav-link { + font-weight: 500; + cursor: pointer; + /* font-style: normal; */ + /* text-decoration: none; */ + // text-transform: uppercase; + // text-shadow: 1px 1px 3px #d3d3d3; +} + +nav { + max-height: 100vh; + // z-index: 1030; +} + +@media screen and (max-width: 992px) { + nav { + overflow-y: auto; + } + } + + +.navbar-brand { + display: inline-flex; + padding: 0; +} + +.dropdown-submenu .dropdown-menu { + top: 0; + left: 100%; + margin-top: -1px; + } + +.dropdown-toggle { + cursor: pointer; +} + +.dropdown-submenu .dropdown-toggle { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-submenu .dropdown-toggle::after { + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; + vertical-align: 0; +} + +.dropdown-submenu .dropdown-toggle:hover { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} + +.dropdown-item.clone-item { + // font-weight: bold; + cursor: pointer; +} + +.optgroup-label { + // font: 500 14px/24px Roboto,"Helvetica Neue",sans-serif; + font-weight: bold; + color: rgba(0,0,0,.75); + padding: 0.25rem 1rem; +} + +.dropdown-link { + cursor: pointer; +} + +.user-info { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.user-info span { + font-weight: 400; +} \ No newline at end of file diff --git a/src/app/shared/navbar/navbar.component.spec.ts b/src/app/shared/navbar/navbar.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9032ad2ca805666294c02daa74544bd75bec5438 --- /dev/null +++ b/src/app/shared/navbar/navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NavbarComponent } from './navbar.component'; + +describe('NavbarComponent', () => { + let component: NavbarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NavbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/navbar/navbar.component.ts b/src/app/shared/navbar/navbar.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..0819dfdcea4ee5df8d0706a6090daddb5d4ebd50 --- /dev/null +++ b/src/app/shared/navbar/navbar.component.ts @@ -0,0 +1,79 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import { ServiceSpecification } from 'src/app/openApis/serviceCatalogManagement/models/service-specification'; +import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; +import { CloneGstTemplateComponent } from 'src/app/p_services/admin/catalogManagement/edit-service-specs/clone-gst-template/clone-gst-template.component'; +import { MatDialog } from '@angular/material/dialog'; +import { ToastrService } from 'ngx-toastr'; +import { AuthService } from 'src/app/shared/services/auth.service'; +import { RequesterService } from 'src/app/p_services/orderCheckout/services/requester.service'; +import { trigger } from '@angular/animations'; +import { fadeIn } from 'src/app/shared/animations/animations'; +import { ThemingService } from 'src/app/theming/theming.service'; +import { IAppThemingConfig } from 'src/app/shared/models/app-config-theming.model'; +import { AppService } from 'src/app/shared/services/app.service'; + +@Component({ + selector: 'app-navbar', + templateUrl: './navbar.component.html', + styleUrls: ['./navbar.component.scss'], + animations: [ trigger('fadeIn', fadeIn()) ] +}) +export class NavbarComponent implements OnInit { + + constructor( + private router: Router, + private dialog: MatDialog, + private toast: ToastrService, + public authService: AuthService, + public requesterService: RequesterService, + private themingService: ThemingService, + public appService: AppService + ) { } + + loggedIn: boolean + isNavbarCollapsed: boolean = true + themeConfig: IAppThemingConfig + navigationRoute:"services" | "testing" | "products" | "" + + ngOnInit() { + this.loggedIn = this.authService.hasValidToken() + + this.authService.canActivateProtectedRoutes$.subscribe( + _ => { + if (this.authService.hasValidToken()) { + this.authService.fetchUserInfo() + } + } + ) + + this.themeConfig = this.themingService.getConfig() + } + + onGSTtemplateClick() { + // this.specService. + const dialogRef = this.dialog.open(CloneGstTemplateComponent, {disableClose:true}) + + dialogRef.afterClosed().subscribe ( + (result: ServiceSpecification | undefined) => { + if (result) { + this.router.navigate([this.appService.portalDomain, 'service_spec_update', result.id]) + this.toast.success("GST External Template is successfully cloned") + } + } + ) + } + + logout() { + console.warn('logging out...') + + this.authService.logout() + + // this.router.navigate([this.router.routerState.snapshot.url]) + } + + login() { + this.loggedIn = false + this.authService.login() + } + +} diff --git a/src/app/shared/pipes/jsonParsePipe.ts b/src/app/shared/pipes/jsonParsePipe.ts new file mode 100644 index 0000000000000000000000000000000000000000..94d756aa6ff15414a05048ae3cf7a58f2d996331 --- /dev/null +++ b/src/app/shared/pipes/jsonParsePipe.ts @@ -0,0 +1,16 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({name: 'jsonParse'}) + export class jsonParsePipe implements PipeTransform { + transform(val) { + try + { + let parsed = JSON.parse(val) + return parsed + } + catch (e) { + return val + } + // return JSON.parse(val) + } + } \ No newline at end of file diff --git a/src/app/shared/services/app.service.spec.ts b/src/app/shared/services/app.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..9bdcf24cb9720f00ec7c013701aa685571d7c28a --- /dev/null +++ b/src/app/shared/services/app.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { AppService } from './app.service'; + +describe('AppService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: AppService = TestBed.get(AppService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/shared/services/app.service.ts b/src/app/shared/services/app.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2b6aa780e41d6dff1b562dd38d1560d9af8fc9ad --- /dev/null +++ b/src/app/shared/services/app.service.ts @@ -0,0 +1,81 @@ +import { Injectable } from '@angular/core'; +import { BootstrapService } from 'src/app/bootstrap/bootstrap.service'; +import { ApiConfiguration as PortalAPIconfig} from 'src/app/openApis/portalRepositoryAPI/api-configuration' +import { ApiConfiguration as ServiceCatalogAPIconfig} from 'src/app/openApis/serviceCatalogManagement/api-configuration' +import { ApiConfiguration as ServiceInventoryAPIconfig} from 'src/app/openApis/serviceInventoryManagement/api-configuration' +import { ApiConfiguration as ServiceOrderingAPIconfig} from 'src/app/openApis/serviceOrderingManagement/api-configuration' +import { ApiConfiguration as PartyManagementAPIconfig} from 'src/app/openApis/partyManagement/api-configuration' +import { ApiConfiguration as ServiceActivationAndConfigurationAPIconfig } from 'src/app/openApis/serviceActivationAndConfiguration/api-configuration' +import { ApiConfiguration as AlarmManagementAPIconfig} from 'src/app/openApis/alarmManagement/api-configuration' +import { ApiConfiguration as assuranceServicesManagementAPIconfig} from 'src/app/openApis/assuranceServicesManagementAPI/api-configuration' +import { ApiConfiguration as lcmRuleSpecificationAPIconfig } from 'src/app/openApis/lcmRuleSpecificationAPI/api-configuration' +import { ApiConfiguration as serviceTestManagementAPIconfig } from 'src/app/openApis/serviceTestManagement/api-configuration' +import { ApiConfiguration as ResourceCatalogAPIconfig} from 'src/app/openApis/resourceCatalogManagement/api-configuration' +import { ApiConfiguration as ResourceInventoryAPIconfig} from 'src/app/openApis/resourceInventoryManagement/api-configuration' +import { ApiConfiguration as resourcePoolManagementAPIconfig} from 'src/app/openApis/resourcePoolManagement/api-configuration' +import { ApiConfiguration as ProductCatalogAPIconfig} from 'src/app/openApis/productCatalogManagement/api-configuration' + +import { NavigationEnd, NavigationStart, Router } from '@angular/router'; +import { filter, first } from 'rxjs/operators'; + + +@Injectable({ + providedIn: 'root' +}) +export class AppService { + + constructor( + private router: Router, + private bootstrapService: BootstrapService, + private portalAPIConfig: PortalAPIconfig, + private tmfServiceCatalogConfig: ServiceCatalogAPIconfig, + private tmfServiceInventoryConfig: ServiceInventoryAPIconfig, + private tmfServiceOrderingConfig: ServiceOrderingAPIconfig, + private tmfPartyManagementConfig: PartyManagementAPIconfig, + private tmfServiceActivationAndConfigurationConfig: ServiceActivationAndConfigurationAPIconfig, + private tmfAlarmManagementConfig: AlarmManagementAPIconfig, + private assuranceServicesManagementAPIConfig: assuranceServicesManagementAPIconfig, + private lcmRuleSpecificationAPIConfig: lcmRuleSpecificationAPIconfig, + private serviceTestManagementAPIconfig: serviceTestManagementAPIconfig, + private tmfResourceCatalogConfig: ResourceCatalogAPIconfig, + private tmfResourceInventoryConfig: ResourceInventoryAPIconfig, + private resourcePoolManagementAPIconfig: resourcePoolManagementAPIconfig, + private tmfProductCatalogConfig: ProductCatalogAPIconfig + ) { + this.setAPIurls() + this.recognizePortalDomain() + } + + config = this.bootstrapService.getConfig() + portalDomain: "services" | "resources" |"testing" | "products" | "" = "" + + setAPIurls() { + this.portalAPIConfig.rootUrl = this.config.PORTAL_REPO_APIURL + this.tmfServiceCatalogConfig.rootUrl = this.config.APITMFURL + this.tmfServiceInventoryConfig.rootUrl = this.config.APITMFURL + this.tmfServiceOrderingConfig.rootUrl = this.config.APITMFURL + this.tmfPartyManagementConfig.rootUrl = this.config.APITMFURL + this.tmfServiceActivationAndConfigurationConfig.rootUrl = this.config.APITMFURL + this.tmfAlarmManagementConfig.rootUrl = this.config.APITMFURL + this.assuranceServicesManagementAPIConfig.rootUrl = this.config.ASSURANCE_SERVICE_MGMT_APIURL + this.lcmRuleSpecificationAPIConfig.rootUrl = this.config.APITMFURL + this.tmfResourceCatalogConfig.rootUrl = this.config.APITMFURL + this.tmfResourceInventoryConfig.rootUrl = this.config.APITMFURL + this.serviceTestManagementAPIconfig.rootUrl = this.config.APITMFURL + this.resourcePoolManagementAPIconfig.rootUrl = this.config.APITMFURL + this.tmfProductCatalogConfig.rootUrl = this.config.APITMFURL + } + + //recognition of which portal is used (services/testing/product) + recognizePortalDomain() { + this.router.events.pipe( + filter(e => e instanceof NavigationStart), + ).subscribe( (e: NavigationEnd) => { + const activatedRoute = e.url.split('/')[1].toLowerCase() + if (["","services","resources", "testing", "products"].includes(activatedRoute)) { + this.portalDomain = <"" | "services" | "resources" | "testing" | "products"> activatedRoute + localStorage.setItem("active_portal", this.portalDomain) + } + }) + } +} diff --git a/src/app/shared/services/auth-guard.service.spec.ts b/src/app/shared/services/auth-guard.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..c39cbbf804bc40e91a3c7b6514af9a1edf748b6b --- /dev/null +++ b/src/app/shared/services/auth-guard.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { AuthGuardService } from './auth-guard.service'; + +describe('AuthGuardService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: AuthGuardService = TestBed.get(AuthGuardService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/shared/services/auth-guard.service.ts b/src/app/shared/services/auth-guard.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..9c5f3db6d40dd7f8afcd980f908e906881d744a3 --- /dev/null +++ b/src/app/shared/services/auth-guard.service.ts @@ -0,0 +1,27 @@ +import { Injectable } from '@angular/core'; +import { AuthService } from './auth.service'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; +import { Observable } from 'rxjs'; +import { tap } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthGuardService implements CanActivate{ + + constructor( + private authService: AuthService, + private router: Router + ) { } + + canActivate( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot + ): Observable { + return this.authService.canActivateProtectedRoutes$ + .pipe(tap(canNavigate => { + if (!canNavigate) this.router.navigateByUrl('') + // console.log('You tried to navigate to protected route ' + state.url + ' and auth guard responded with ' + canNavigate) + })) + } +} diff --git a/src/app/shared/services/auth.service.spec.ts b/src/app/shared/services/auth.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3d964d2fab1c33f8124da7fa6653f62a2c44990 --- /dev/null +++ b/src/app/shared/services/auth.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { AuthService } from './auth.service'; + +describe('AuthService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: AuthService = TestBed.get(AuthService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/shared/services/auth.service.ts b/src/app/shared/services/auth.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..cf7cda01e290021b66fafbac951c364f75370c7b --- /dev/null +++ b/src/app/shared/services/auth.service.ts @@ -0,0 +1,160 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, ReplaySubject, combineLatest, Observable } from 'rxjs'; +import { OAuthService, OAuthErrorEvent, AuthConfig, JwksValidationHandler } from 'angular-oauth2-oidc'; +import { Router } from '@angular/router'; +// import { authConfig } from 'src/assets/config/config.oauth'; +import { map } from 'rxjs/operators'; +import { BootstrapService } from 'src/app/bootstrap/bootstrap.service'; +import { userFromJWT } from 'src/app/shared/models/user-from-jwt.model'; +import { Individual } from 'src/app/openApis/partyManagement/models'; +import decode from 'jwt-decode'; +import { IndividualService } from 'src/app/openApis/partyManagement/services'; + + + +@Injectable({ + providedIn: 'root' +}) +export class AuthService { + + + private isAuthenticatedSubject$ = new BehaviorSubject(false); + public isAuthenticated$ = this.isAuthenticatedSubject$.asObservable(); + + private isDoneLoadingSubject$ = new ReplaySubject(); + public isDoneLoading$ = this.isDoneLoadingSubject$.asObservable(); + + public canActivateProtectedRoutes$: Observable = combineLatest( + this.isAuthenticated$, + this.isDoneLoading$ + ).pipe(map(values => values.every(b => b))); + + private navigateToLoginPage() { + this.router.navigateByUrl('/'); + } + + private authConfigFile: AuthConfig + public portalUser: Individual + public portalUserJWT: userFromJWT + + constructor( + private oauthService: OAuthService, + private router: Router, + private bootstrapService: BootstrapService, + private individualService: IndividualService + ) + { + window.addEventListener('storage', (event) => { + // The `key` is `null` if the event was caused by `.clear()` + if (event.key !== 'access_token' && event.key !== null) { + return; + } + + console.warn('Noticed changes to access_token (most likely from another tab), updating isAuthenticated'); + this.isAuthenticatedSubject$.next(this.oauthService.hasValidAccessToken()); + + if (!this.oauthService.hasValidAccessToken()) { + this.navigateToLoginPage(); + } + }) + + this.oauthService.events.subscribe( (ev) => { + // this.isAuthenticatedSubject$.next(this.oauthService.hasValidAccessToken()) + if (ev instanceof OAuthErrorEvent) { + console.error(ev); + console.error('AccessTokenExpiration : ', new Date(this.oauthService.getAccessTokenExpiration()).toUTCString()); + this.logout() + } else { + // console.warn(ev); + // console.warn('AccessTokenExpiration : ', new Date(this.oauthService.getAccessTokenExpiration()).toUTCString()); + if (ev.type === 'token_received') { + this.isAuthenticatedSubject$.next(this.oauthService.hasValidAccessToken()) + } + } + }) + + } + + public runInitialLoginSequence() { + this.authConfigFile = this.bootstrapService.getConfig().OAUTH_CONFIG + + this.oauthService.configure(this.authConfigFile); + this.oauthService.setStorage(localStorage); + + // this.oauthService.tokenValidationHandler = new JwksValidationHandler(); + + this.oauthService.setupAutomaticSilentRefresh(); + + this.oauthService.tryLoginCodeFlow() + .catch(error => console.error(error)) + .then( + () => { + // console.warn('AccessTokenExpiration : ', new Date(this.oauthService.getAccessTokenExpiration()).toUTCString()); + + if (this.oauthService.hasValidAccessToken()) { + // console.warn('this.oauthService.hasValidAccessToken() === true') + this.isAuthenticatedSubject$.next(this.oauthService.hasValidAccessToken()); + return Promise.resolve(); + } + + //If Silent LOGIN isn't implemented + else { + // console.warn('this.oauthService.hasValidAccessToken() === false') + return Promise.reject(); + } + + }) + .then( _ => { + this.isDoneLoadingSubject$.next(true) + } + ) + .catch( error => { + this.isDoneLoadingSubject$.next(true) + }) + + } + + public fetchUserInfo() { + this.portalUserJWT = decode(this.getAccessToken()) + this.individualService.retrieveIndividual({id:'myuser'}).subscribe( + data => { this.portalUser = data }, + error => { + console.error(error) + // this.toast.error('An error occurred fetching user information') + this.logout() + } + ) + } + + public login() { + this.oauthService.initCodeFlow() + } + + public logout() { + // this.http.delete(authConfig.tokenEndpoint).subscribe( + // data => console.log(data) + // ) + this.oauthService.logOut() + localStorage.clear() + + // this.http.delete(this.authConfigFile.tokenEndpoint).subscribe( + // data => { + // console.warn(data) + // this.oauthService.logOut() + // this.router.navigate([this.router.routerState.snapshot.url]) + // }, + // error => { + // console.error(error) + // this.oauthService.logOut() + // this.router.navigate([this.router.routerState.snapshot.url]) + // } + // ) + } + + + // public logout() { this.oauthService.logOut(); } + public refresh() { this.oauthService.silentRefresh(); } + public hasValidToken() { return this.oauthService.hasValidAccessToken(); } + public getAccessToken() { return this.oauthService.getAccessToken(); } + public getRefreshToken() { return this.oauthService.getRefreshToken();} +} diff --git a/src/app/theming/theming.service.spec.ts b/src/app/theming/theming.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a2c77965832047e924ad6a65e6bfe5792dd3238a --- /dev/null +++ b/src/app/theming/theming.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { ThemingService } from './theming.service'; + +describe('ThemingService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: ThemingService = TestBed.get(ThemingService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/theming/theming.service.ts b/src/app/theming/theming.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2a7e5b704f9b8b684beb1a4e8636e36a62199e21 --- /dev/null +++ b/src/app/theming/theming.service.ts @@ -0,0 +1,48 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { IAppThemingConfig } from 'src/app/shared/models/app-config-theming.model'; + +@Injectable({ + providedIn: 'root' +}) +export class ThemingService { + + constructor(private http: HttpClient) { } + + private config: IAppThemingConfig = { + "DEPLOYMENT_LOGO_PATH": "assets/images/logo_clear.png", + "DEFAULT_SERVICE_LOGO_PATH": "assets/images/logo_icon_original.png", + "FAVICON_PATH":"favicon.ico", + "THEME_ID": "default" + } + + public getConfig(): IAppThemingConfig { + return this.config + } + + loadConfig() { + const jsonFile = `assets/config/config.theming.json`; + + return new Promise( (resolve, reject) => { + this.http.get(jsonFile).subscribe( + response => { + // this.config = response + + for (let key in response) { + if (response.hasOwnProperty(key)) { + if (response[key]) { + this.config[key] = response[key] + } + } + } + resolve(true) + }, + error => { + console.warn('Theming config file not found. Falling back to default theming.') + resolve(`Could not load file '${jsonFile}': ${JSON.stringify(error)}`) + } + ) + }) + } + +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/assets/blockly/custom_blocks.js b/src/assets/blockly/custom_blocks.js new file mode 100644 index 0000000000000000000000000000000000000000..a3a0cb5cf420a8059b3e4b352d4ded3a927aff94 --- /dev/null +++ b/src/assets/blockly/custom_blocks.js @@ -0,0 +1,1478 @@ + +coloursets = 185; +colouropenarions = 205; +colourtexts = 160; + +Blockly.defineBlocksWithJsonArray([ + { + type: 'begin', + message0: 'Begin', + nextStatement: 'any', + colour: 180, + tooltip: 'begin statement' + }, + { + type: 'move', + message0: 'Move by %1 steps', + args0: [ + { + type: 'field_number', + name: 'steps', + value: 0 + } + ], + previousStatement: 'any', + nextStatement: 'any', + colour: 240, + tooltip: 'steps to move' + }, + { + type: 'end', + message0: 'End %1', + args0: [ + { + type: 'field_dropdown', + name: 'end_types', + options: [['Now', 'now'], ['Later', 'later']] + } + ], + previousStatement: 'any', + colour: 60, + tooltip: 'end type' + } + ]); + + /*************************************************************************** + * + * Text RELATED + * + ****************************************************************************/ + + Blockly.Blocks['literal_text_multiline'] = { + /** + * Block for text value. + * @this Blockly.Block + */ + init: function() { + + var bff = new Blockly.FieldMultilineInput(''); + bff.maxLines_ = 15; + + this.appendDummyInput() + .appendField(this.newQuote_(true)) + .appendField( bff, 'TEXT') + .appendField(this.newQuote_(false)); + this.setOutput(true, 'String'); + this.setColour(180); + this.setTooltip("A multi-line text input"); + }, + /** + * Create an image of an open or closed quote. + * @param {boolean} open True if open quote, false if closed. + * @return {!Blockly.FieldImage} The field image of the quote. + * @private + */ + newQuote_: function(open) { + if (open == Blockly.RTL) { + var file = 'quote1.png'; + } else { + var file = 'quote0.png'; + } + return new Blockly.FieldImage(Blockly.pathToMedia + file, 12, 12, '"'); + } + }; + + + + Blockly.Blocks['text_format_multi'] = { + /** + * Block for text value. + * @this Blockly.Block + */ + init: function() { + + this.appendValueInput("TEXT") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Input(String)"); + this.appendValueInput("VARIABLES") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Variables(Array)"); + + this.setOutput(true, 'String'); + this.setColour(160); + this.setTooltip("A formatted text replacing variables from a list\n %s for Strings\n %n for Numbers, etc"); + }, + /** + * Create an image of an open or closed quote. + * @param {boolean} open True if open quote, false if closed. + * @return {!Blockly.FieldImage} The field image of the quote. + * @private + */ + newQuote_: function(open) { + if (open == Blockly.RTL) { + var file = 'quote1.png'; + } else { + var file = 'quote0.png'; + } + return new Blockly.FieldImage(Blockly.pathToMedia + file, 12, 12, '"'); + } + }; + + /*************************************************************************** + * + * Number RELATED + * + ****************************************************************************/ + + +Blockly.Blocks['string_to_integer'] = { + /** + * Block for numeric integer value. + * @this Blockly.Block + */ + + init: function() { + this.appendValueInput("paramtxt") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("str to int"); + this.setOutput(true, 'Number'); + this.setInputsInline(true); + this.setColour(230); + this.setTooltip("Constructs a new integer value from another text"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['string_to_float'] = { + /** + * Block for numeric integer value. + * @this Blockly.Block + */ + init: function() { + this.appendValueInput("paramtxt") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("str to float"); + this.setOutput(true, 'Number'); + this.setInputsInline(true); + this.setColour(230); + this.setTooltip("Constructs a new float value from another text"); + this.setHelpUrl(""); + } +}; + + /*************************************************************************** + * + * TEXT RELATED + * + ****************************************************************************/ + + + Blockly.Blocks['text_escape'] = { + init: function() { + this.appendValueInput("paramtxt") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Escape text"); + this.setOutput(true, 'String'); + this.setInputsInline(true); + this.setColour(160); + this.setTooltip("Constructs a new text with escaped characters from another text"); + this.setHelpUrl(""); + } + }; + + + + + + /*************************************************************************** + * + * SERVICE SPEC RELATED + * + ****************************************************************************/ + + + Blockly.Blocks['changecharacteristicvalue'] = { + init: function() { + this.appendValueInput("spec") + .setCheck("String") + .appendField("Characteristic name"); + this.appendValueInput("value") + .setCheck("String") + .appendField("Value"); + this.setPreviousStatement(true, "String"); + this.setNextStatement(true, "String"); + this.setColour(230); + this.setTooltip("change the value of a service spec characteristic"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['characteristiccontains'] = { + init: function() { + this.appendValueInput("characteristic") + .setCheck("SET") + .appendField("characteristic"); + this.appendValueInput("value") + .setCheck("String") + .appendField("value"); + this.setOutput(true, "Boolean"); + this.setColour(230); + this.setTooltip("Check if Characteristic contains a specific value"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['getcharacteristicvalueAsString'] = { + init: function() { + this.appendDummyInput() + .appendField("Get Value", "TXTLBL") + .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL") + .appendField(new Blockly.FieldLabelSerializable(""), "OPTIONEDVALUE") + //.appendField(new Blockly.FieldDropdown([["Area of Service","Area of Service"], ["Area of Service: Region specification","Area of Service: Region specification"], ["Delay tolerance","Delay tolerance"], ["NSD_5GCORE::CONFIG","NSD_5GCORE::CONFIG"], ["Slice quality of service parameters: 3GPP 5QI","Slice quality of service parameters: 3GPP 5QI"] ]), "OPTIONEDVALUE"); + //this.setOutput(true, ["Boolean", "SET", "String"]); + this.setOutput(true, 'String'); + this.setColour(230); + this.setTooltip("Get characteristic value as string"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['getcharval_string_type'] = { + init: function() { + this.appendDummyInput() + //.appendField("Get Value") + .appendField(new Blockly.FieldLabelSerializable(""), "AVALUE") + //this.setOutput(true, ["Boolean", "SET", "String"]); + this.setOutput(true, 'String'); + this.setColour(colourtexts); + this.setTooltip("Get characteristic value"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['setcharval_string_type'] = { + init: function() { + this.appendValueInput("AVALUE") + .setCheck("String") + //.appendField("Set") + .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(colourtexts); + this.setTooltip("Set characteristic value"); + this.setHelpUrl(""); + } + }; + + + + Blockly.Blocks['getcharval_number'] = { + init: function() { + this.appendDummyInput() + //.appendField("Get Value") + .appendField(new Blockly.FieldLabelSerializable(""), "AVALUE") + //this.setOutput(true, ["Boolean", "SET", "String"]); + this.setOutput(true, 'Number'); + this.setColour(230); + this.setTooltip("Get characteristic value"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['setcharval_number'] = { + init: function() { + this.appendValueInput("AVALUE") + .setCheck("Number") + //.appendField("Set") + .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(230); + this.setTooltip("Set characteristic value"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['getcharval_bool_type'] = { + init: function() { + this.appendDummyInput() + //.appendField("Get Value") + .appendField(new Blockly.FieldLabelSerializable(""), "AVALUE") + //this.setOutput(true, ["Boolean", "SET", "String"]); + this.setOutput(true, 'Boolean'); + this.setColour(90); + this.setTooltip("Get characteristic value"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['setcharval_bool_type'] = { + init: function() { + this.appendValueInput("AVALUE") + .setCheck("Boolean") + //.appendField("Set") + .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(90); + this.setTooltip("Set characteristic value"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['getcharval_set_type'] = { + init: function() { + this.appendDummyInput() + //.appendField("Get Value") + .appendField(new Blockly.FieldLabelSerializable(""), "AVALUE") + //this.setOutput(true, ["Boolean", "SET", "String"]); + this.setOutput(true, 'SET'); + this.setColour(coloursets); + this.setTooltip("Get characteristic value"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['setcharval_set_type'] = { + init: function() { + this.appendValueInput("AVALUE") + .setCheck("Array") + //.appendField("Set") + .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(coloursets); + this.setTooltip("Set characteristic value"); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['setcharval_sadd'] = { + init: function() { + this.appendValueInput("AVALUE") + .setCheck("Array") + .appendField("Add to") + .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(coloursets); + this.setTooltip(""); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['setcharval_sremove'] = { + init: function() { + this.appendValueInput("AVALUE") + .setCheck("Array") + .appendField("Remove from") + .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(coloursets); + this.setTooltip(""); + this.setHelpUrl(""); + } + }; + + + + + /*************************************************************************** + * + * GENERIC OPERATIONS BLOCK RELATED + * + ****************************************************************************/ + + Blockly.Blocks['so_log_string'] = { + init: function() { + this.appendValueInput("txtlog") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Log"); + this.setOutput(false, null); + + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(colouropenarions); + this.setTooltip("Will log the input text to orchestrator log file"); + this.setHelpUrl(""); + } + }; + + + + Blockly.Blocks['payloadToService'] = { + init: function() { + this.appendDummyInput() + //.setCheck(null) + .appendField("Service payload") + .appendField(new Blockly.FieldDropdown([["ID", "id"], + ["State", "state"], + ["Name","name"], + ["hasStarted","hasStarted"], + ["isServiceEnabled","isServiceEnabled"], + ["serviceType","serviceType"], + ["startMode","startMode"], + ["serviceCharacteristicValue","serviceCharacteristicValue"], + ["serviceOrderID","serviceOrderID"], + ["serviceSpecificationID","serviceSpecificationID"], + ["serviceObjectasJSON","serviceObjectasJSON"] + + + ], this.handleTypeSelection.bind(this) ), "VERBOPTION"); + + + this.appendValueInput("jsonpayload") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Payload(Text/json)"); + + + // Initialize the value of this.columnType (used in updateShape) + this.columnType = this.getFieldValue('VERBOPTION'); + // Avoid duplicating code by running updateShape to append your appropriate input + this.updateShape(); + //this.setPreviousStatement(true, null); + //this.setNextStatement(true, null); + this.setInputsInline(true); + this.setOutput(true, "String"); + this.setColour(colourtexts); + this.setTooltip("Get TMF Service Inventory entity details from a json payload."); + this.setHelpUrl(""); + + }, + /** + * This function runs each time you select a new value in your type selection dropdown field. + * @param {string} newType This is the new value that the field will be set to. + * + * Important note: this function will run BEFORE the field's value is updated. This means that if you call + * this.getFieldValue('typeSelector') within here, it will reflect the OLD value. + * + */ + handleTypeSelection: function (newType) { + // Avoid unnecessary updates if someone clicks the same field twice + if(this.columnType !== newType) { + // Update this.columnType to the new value + this.columnType = newType; + // Add or remove fields as appropriate + this.updateShape(); + } + }, + /** + * This will remove old inputs and add new inputs as you need, based on the columnType value selected + */ + updateShape: function () { + // Remove the old input (so that you don't have inputs stack repeatedly) + if (this.getInput('characteristicName')) { + this.removeInput('characteristicName'); + } + // Append the new input based on the value of this.columnType + if(this.columnType === 'serviceCharacteristicValue') { + this.appendValueInput("characteristicName") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristic Name"); + } + }, + /** + * This function runs when saving your block to XML. This is important if you need to save your block to XML at any point and then either + * generate code from that XML or repopulate your workspace from that XML + */ + mutationToDom: function () { + var container = document.createElement('mutation'); + // Do not use camelCase values for attribute names. + container.setAttribute('column_type', this.columnType); + // ALWAYS return container; this will be the input for domToMutation. + return container; + }, + /** + * This function runs when loading your block from XML, after running init. + * It's very important for updating your block in response to values selected in a field. + */ + domToMutation: function (xmlElement) { + // This attribute should match the one you used in mutationToDom + var columnType = xmlElement.getAttribute('column_type'); + // If, for whatever reason, you try to save an undefined value in column_type, it will actually be saved as the string 'undefined' + // If this is not an acceptable value, filter it out + if(columnType && columnType !== 'undefined') { + this.columnType = columnType; + } + // Run updateShape to append block values as needed + this.updateShape(); + } + }; + + /*************************************************************************** + * + * REST OPERATIONS BLOCK RELATED + * + ****************************************************************************/ + + + Blockly.Blocks['rest_config_client'] = { + init: function() { + this.appendDummyInput() + .appendField('Web config client'); + this.appendValueInput("baseurl") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Base URL"); + + this.appendValueInput("aOAUTH2CLIENTID") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("aOAUTH2CLIENTID"); + + this.appendValueInput("aOAUTHSECRET") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("aOAUTHSECRET"); + + this.appendValueInput("scopes") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("scopes"); + + this.appendValueInput("aTOKENURI") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("TOKENURI"); + + this.appendValueInput("aUSERNAME") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Username"); + + this.appendValueInput("aPASSWORD") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Password"); + + + this.setOutput(true, "WEB_CLIENT_CONFIG"); + + this.setColour(colouropenarions); + this.setTooltip("Configure a Web client"); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['rest_block'] = { + init: function() { + this.appendDummyInput() + //.setCheck(null) + .appendField("URL") + .appendField(new Blockly.FieldDropdown([["GET","GET"], + ["POST","POST"], + ["PUT","PUT"], + ["PATCH","PATCH"], + ["DELETE","DELETE"] + ]), "VERBOPTION"); + + this.appendValueInput("arest_config_client") + .setCheck("WEB_CLIENT_CONFIG") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Web config client"); + this.appendValueInput("headers") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Headers"); + this.appendValueInput("url") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Request URL"); + this.appendValueInput("payload") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Payload"); + this.setOutput(true, "String"); + + //this.setPreviousStatement(true, null); + //this.setNextStatement(true, null); + this.setColour(colouropenarions); + this.setTooltip("Make a Request (GET, POST, etc) towards a URL. Header a string with Header1=value1;Header2=value2 \n Payload in POST, PATCH, etc, may be escaped as Text (use the Escape Text block )"); + this.setHelpUrl(""); + } + }; + + + + /*************************************************************************** + * + * CONTEXT BLOCK RELATED + * + ****************************************************************************/ + + + Blockly.Blocks['currentServiceOrder'] = { + init: function() { + this.appendDummyInput() + //.setCheck(null) + .appendField("Current Service Order") + .appendField(new Blockly.FieldDropdown([["ID", "id"], + ["State", "state"], + ["externaId", "externaId"], + ["serviceOrderObjectasJSON","serviceOrderObjectasJSON"] + ]), "VERBOPTION"); + + this.setOutput(true, "String"); + + //this.setPreviousStatement(true, null); + //this.setNextStatement(true, null); + this.setColour(colourtexts); + this.setTooltip("Get Service Order detail from current context. If the Order is available from the state of the service."); + this.setHelpUrl(""); + } + }; + + + + Blockly.Blocks['currentServiceOrder'] = { + init: function() { + this.appendDummyInput() + //.setCheck(null) + .appendField("Current Service Order") + .appendField(new Blockly.FieldDropdown([["ID", "id"], + ["State", "state"], + ["externaId", "externaId"], + ["serviceOrderObjectasJSON","serviceOrderObjectasJSON"] + ]), "VERBOPTION"); + + this.setOutput(true, "String"); + + //this.setPreviousStatement(true, null); + //this.setNextStatement(true, null); + this.setColour(colourtexts); + this.setTooltip("Get Service Order detail from current context. If the Order is available from the state of the service."); + this.setHelpUrl(""); + } + }; + + + + + Blockly.Blocks['currentService'] = { + init: function() { + this.appendDummyInput() + //.setCheck(null) + .appendField("Current Service") + .appendField(new Blockly.FieldDropdown([["ID", "id"], + ["State", "state"], + ["Name","name"], + ["hasStarted","hasStarted"], + ["isServiceEnabled","isServiceEnabled"], + ["serviceType","serviceType"], + ["startMode","startMode"], + ["serviceCharacteristicValue","serviceCharacteristicValue"], + ["serviceOrderID","serviceOrderID"], + ["serviceSpecificationID","serviceSpecificationID"], + ["serviceObjectasJSON","serviceObjectasJSON"] + + + ], this.handleTypeSelection.bind(this) ), "VERBOPTION"); + + // Initialize the value of this.columnType (used in updateShape) + this.columnType = this.getFieldValue('VERBOPTION'); + // Avoid duplicating code by running updateShape to append your appropriate input + this.updateShape(); + //this.setPreviousStatement(true, null); + //this.setNextStatement(true, null); + this.setOutput(true, "String"); + this.setColour(colourtexts); + this.setTooltip("Get Service details from current context running service, after instantiation."); + this.setHelpUrl(""); + + }, + /** + * This function runs each time you select a new value in your type selection dropdown field. + * @param {string} newType This is the new value that the field will be set to. + * + * Important note: this function will run BEFORE the field's value is updated. This means that if you call + * this.getFieldValue('typeSelector') within here, it will reflect the OLD value. + * + */ + handleTypeSelection: function (newType) { + // Avoid unnecessary updates if someone clicks the same field twice + if(this.columnType !== newType) { + // Update this.columnType to the new value + this.columnType = newType; + // Add or remove fields as appropriate + this.updateShape(); + } + }, + /** + * This will remove old inputs and add new inputs as you need, based on the columnType value selected + */ + updateShape: function () { + // Remove the old input (so that you don't have inputs stack repeatedly) + if (this.getInput('characteristicName')) { + this.removeInput('characteristicName'); + } + // Append the new input based on the value of this.columnType + if(this.columnType === 'serviceCharacteristicValue') { + this.appendValueInput("characteristicName") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristic Name"); + this.setInputsInline(true); + } + }, + /** + * This function runs when saving your block to XML. This is important if you need to save your block to XML at any point and then either + * generate code from that XML or repopulate your workspace from that XML + */ + mutationToDom: function () { + var container = document.createElement('mutation'); + // Do not use camelCase values for attribute names. + container.setAttribute('column_type', this.columnType); + // ALWAYS return container; this will be the input for domToMutation. + return container; + }, + /** + * This function runs when loading your block from XML, after running init. + * It's very important for updating your block in response to values selected in a field. + */ + domToMutation: function (xmlElement) { + // This attribute should match the one you used in mutationToDom + var columnType = xmlElement.getAttribute('column_type'); + // If, for whatever reason, you try to save an undefined value in column_type, it will actually be saved as the string 'undefined' + // If this is not an acceptable value, filter it out + if(columnType && columnType !== 'undefined') { + this.columnType = columnType; + } + // Run updateShape to append block values as needed + this.updateShape(); + } + }; + + + + + + Blockly.Blocks['setCharacteristicOfCurrentService'] = { + init: function() { + this.appendDummyInput() + //.setCheck(null) + .appendField("Set Service"); + + + this.appendValueInput("characteristicName") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristic Name"); + + this.appendValueInput("avalue") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Value (String)"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(colourtexts); + this.setTooltip("Set a characteristic value of the Service in current context."); + this.setHelpUrl(""); + + } + + }; + + /*************************************************************************** + * + * OPENSLICE RELATED + * + ****************************************************************************/ + + + + + + Blockly.Blocks['createServiceOrderJson'] = { + init: function() { + + this.appendValueInput("jsonpayload") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Create Service Order (Text/json)"); + + this.setOutput(true, "String"); + + //this.setPreviousStatement(true, null); + //this.setNextStatement(true, null); + this.setColour(colourtexts); + this.setTooltip("Openslice SO will create a new Service Order based on the request described by the json. The json is a createServiceOrder payload. The response will be the new Service Order created."); + this.setHelpUrl(""); + } + }; + + + + Blockly.Blocks['createServiceOrder'] = { + init: function() { + this.appendDummyInput() + .appendField("Create Service Order"); + + + this.appendValueInput("serviceSpecificationid") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Service Specification id"); + + this.appendValueInput("serviceCharacteristics") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Service Characteristics"); + + + + + + this.setOutput(true, "String"); + + //this.setPreviousStatement(true, null); + //this.setNextStatement(true, null); + this.setColour(colourtexts); + this.setTooltip("Openslice SO will create a new Service Order based on the request described by the json. The json is a createServiceOrder payload. The response will be the new Service Order created."); + this.setHelpUrl(""); + } + }; + + + /*************************************************************************** + * + * OSM RELATED + * + ****************************************************************************/ + + + Blockly.Blocks['osm_nsd_config_detailed'] = { + init: function() { + this.appendValueInput("NSDID") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("OSMNSDID(Text)"); + this.appendValueInput("VIMID") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("VIMID(Text)"); + this.appendValueInput("VNF") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("VNF(Array)"); + + this.appendValueInput("k8s-namespace") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("k8s-namespace(Text)"); + + this.appendValueInput("VLD") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("VLD(Array)"); + this.appendValueInput("additionalParamsForVnf") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("additionalParamsForVnf(Array)"); + + this.appendValueInput("additionalParamsForNs") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("additionalParamsForNs(Array)"); + + this.appendValueInput("ssh_keys") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("ssh_keys(Array)"); + + this.setOutput(true, 'String'); + this.setColour(230); + this.setTooltip("Constructs a json string to be used for OSM configuration during initialization."); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['osm_nsd_config_vnf'] = { + init: function() { + this.appendValueInput("member-vnf-index") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("member-vnf-index(Text)"); + this.appendValueInput("vdu") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("vdu(Text/json)"); + this.appendValueInput("VIMID") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("VIMID(Text)"); + + this.setOutput(true, 'String'); + this.setColour(230); + this.setTooltip("Constructs a json string to be used for OSM configuration for member-vnf."); + this.setHelpUrl(""); + } + }; + + + + + Blockly.Blocks['osm_nsd_config_kdu'] = { + init: function() { + this.appendValueInput("kdu_name") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("kdu_name(Text)"); + this.appendValueInput("k8s-namespace") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("k8s-namespace(Text)"); + this.appendValueInput("additionalParams") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("additionalParams(Text/json)"); + + this.setOutput(true, 'String'); + this.setColour(230); + this.setTooltip("Constructs a json string to be used for OSM configuration for member-vnf."); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['osm_nsd_config_vld'] = { + init: function() { + this.appendValueInput("name") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("vld name(Text)"); + this.appendValueInput("vim-network-name") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("vim-network-name(Text)"); + + this.appendValueInput("config") + //.setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("config(Text/json)"); + + this.setOutput(true, 'String'); + this.setColour(230); + this.setTooltip("Constructs a json string to be used for OSM configuration for member-vld."); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['osm_nsd_config_paramvnf'] = { + init: function() { + this.appendValueInput("member-vnf-index") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("additionalParamsForVnf member-vnf-index(Text)"); + this.appendValueInput("additionalParams") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("additionalParams(array)"); + this.appendValueInput("additionalParamsForKdu") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("additionalParamsForKdu(array)"); + + this.appendValueInput("config") + //.setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("config(Text/json)"); + + this.setOutput(true, 'String'); + this.setColour(230); + this.setTooltip("Constructs a json string to be used for OSM configuration for member-additionalParamsForVnf."); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['param_value_tuple'] = { + init: function() { + this.appendValueInput("paramname") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Param name"); + this.appendValueInput("paramvalue") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("value(Text)"); + + + this.setOutput(true, 'String'); + this.setInputsInline(true); + this.setColour(230); + this.setTooltip("Constructs a json string to be used for OSM configuration for a parameter in additionalParamsForVnf."); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['computeVariable'] = { + init: function() { + this.appendValueInput("paramvariable") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Compute Variable"); + this.setOutput(true, 'String'); + this.setInputsInline(true); + this.setColour(230); + this.setTooltip("Constructs a text parameter from a variable parameter. Use to compute variables inside texts ot json for example "); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['valueFromJsonPath'] = { + init: function() { + this.appendValueInput("jsoninput") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("json (text)"); + + this.appendValueInput("jsonpath") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("JsonPath (Text)"); + + this.setOutput(true, 'String'); + this.setColour(230); + this.setTooltip("Extracts a value from a Json given a jsonpath query. \n More for json path library and the proper notation: https://github.com/json-path/JsonPath . You can also experiment with the Jayway JsonPath Evaluator here: http://jsonpath.herokuapp.com/"); + this.setHelpUrl(""); + } + }; + + + + + Blockly.Blocks['osm_nsd_config'] = { + init: function() { + this.appendValueInput("NSDID") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("OSMNSDID(Text)"); + this.appendValueInput("VIMID") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("VIMID(Text)"); + this.appendValueInput("config") + // .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("config(Text/json)"); + this.setOutput(true, null); + this.setColour(230); + this.setTooltip(""); + this.setHelpUrl(""); + } + }; + + + + + /*************************************************************************** + * + * LOGIC RELATED + * + ****************************************************************************/ + + + Blockly.Blocks['logic_set_contains_string'] = { + /** + * Block for comparison operator. + * @this Blockly.Block + */ + init: function() { + var OPERATORS = Blockly.RTL ? [ + ['set contains string', 'EQ'] + ] : [ + ['set contains string', 'EQ'] + ]; + this.setColour( coloursets ); + this.setOutput(true, 'Boolean'); + this.appendValueInput('A') + .setCheck('SET'); + this.appendValueInput('B') + .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP') + .setCheck('String'); + this.setInputsInline(true); + var thisBlock = this; + this.setTooltip(function() { + var op = thisBlock.getFieldValue('OP'); + var TOOLTIPS = { + 'EQ': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ + }; + return TOOLTIPS[op]; + }); + } + }; + + + +// Block for variable getter. +Blockly.Blocks['variables_get_panda'] = { + init: function() { + this.appendDummyInput() + .appendField(new Blockly.FieldVariable( + "VAR_NAME", ['panda'], 'panda'), "FIELD_NAME"); + this.setOutput(true, 'panda'); + this.setColour(200); + this.setTooltip(""); + this.setHelpUrl(""); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + + } +}; + +// Block for variable setter. +Blockly.Blocks['variables_set_panda'] = { + init: function() { + this.appendValueInput("NAME") + .setCheck('Panda') + .appendField("set") + .appendField(new Blockly.FieldVariable( + "VAR_NAME", null, ['panda'], 'panda'), "FIELD_NAME") + .appendField("to"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(200); + this.setTooltip(""); + this.setHelpUrl(""); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_set'; + + + } +}; + +Blockly.Blocks['example_variable_typed'] = { + init: function() { + this.appendDummyInput() + .appendField('variable:') + .appendField(new Blockly.FieldVariable( + 'X', + null, + ['Number', 'String'], + 'Number' + ), 'FIELDNAME'); + } +}; + + + + + + + /*************************************************************************** + * + * LOOPs RELATED + * + ****************************************************************************/ + + + Blockly.Blocks['controls_foreach_java'] = { + init: function() { + this.appendValueInput("ASET") + .setCheck("SET") + .appendField("for each string") + .appendField(new Blockly.FieldVariable("item"), "VAR") + .appendField("in set (ofStrings)"); + this.appendStatementInput("DO") + .setCheck(null) + .appendField("do"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(230); + this.setTooltip(""); + this.setHelpUrl(""); + } + }; + + + + /*************************************************************************** + * + * Dependency RELATED + * + ****************************************************************************/ + + + + + Blockly.Blocks['createServiceRefIf'] = { + init: function() { + this.appendValueInput("SERVICE_NAME") + .setCheck("String") + .appendField("Create Ref Service"); + this.appendValueInput("CONDITION") + .setCheck("Boolean") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("if"); + + this.appendValueInput("CHARVALUES") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristics"); + + + this.setInputsInline(false); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(230); + this.setTooltip("Create a service when a condition validates to true during the creation process."); + this.setHelpUrl(""); + } + }; + + Blockly.Blocks['createResourceRefIf'] = { + init: function() { + this.appendValueInput("RESOURCE_NAME") + .setCheck("String") + .appendField("Create Ref Resource"); + this.appendValueInput("CONDITION") + .setCheck("Boolean") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("if"); + this.appendValueInput("CHARVALUES") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristics"); + this.setInputsInline(false); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(230); + this.setTooltip("Create a resource when a condition validates to true during the creation process."); + this.setHelpUrl(""); + } + }; + + + + /*************************************************************************** + * + * Services RELATED + * + ****************************************************************************/ + + + Blockly.Blocks['getServiceRefName'] = { + init: function() { + this.appendDummyInput() + //.appendField("Get Value") + .appendField(new Blockly.FieldLabelSerializable(""), "AVALUE") + + this.setOutput(true, 'String'); + this.setColour(colourtexts); + this.setTooltip("Get Service name"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['getResourceRefName'] = { + init: function() { + this.appendDummyInput() + //.appendField("Get Value") + .appendField(new Blockly.FieldLabelSerializable(""), "AVALUE") + + this.setOutput(true, 'String'); + this.setColour(colourtexts); + this.setTooltip("Get Resource name"); + this.setHelpUrl(""); + } + }; + + + Blockly.Blocks['getServiceRefProps'] = { + init: function() { + this.appendDummyInput() + //.setCheck(null) + .appendField("Service") + .appendField(new Blockly.FieldLabelSerializable(""), "AVALUE") + .appendField(new Blockly.FieldDropdown([["ID", "id"], + ["State", "state"], + ["Name","name"], + ["hasStarted","hasStarted"], + ["isServiceEnabled","isServiceEnabled"], + ["serviceType","serviceType"], + ["startMode","startMode"], + ["serviceCharacteristicValue","serviceCharacteristicValue"], + ["serviceOrderID","serviceOrderID"], + ["serviceSpecificationID","serviceSpecificationID"], + ["serviceObjectasJSON","serviceObjectasJSON"] + + + ], this.handleTypeSelection.bind(this) ), "VERBOPTION"); + + // Initialize the value of this.columnType (used in updateShape) + this.columnType = this.getFieldValue('VERBOPTION'); + // Avoid duplicating code by running updateShape to append your appropriate input + this.updateShape(); + //this.setPreviousStatement(true, null); + //this.setNextStatement(true, null); + this.setOutput(true, "String"); + this.setColour(colourtexts); + this.setTooltip("Get Service details from current context running service, after instantiation."); + this.setHelpUrl(""); + + }, + /** + * This function runs each time you select a new value in your type selection dropdown field. + * @param {string} newType This is the new value that the field will be set to. + * + * Important note: this function will run BEFORE the field's value is updated. This means that if you call + * this.getFieldValue('typeSelector') within here, it will reflect the OLD value. + * + */ + handleTypeSelection: function (newType) { + // Avoid unnecessary updates if someone clicks the same field twice + if(this.columnType !== newType) { + // Update this.columnType to the new value + this.columnType = newType; + // Add or remove fields as appropriate + this.updateShape(); + } + }, + /** + * This will remove old inputs and add new inputs as you need, based on the columnType value selected + */ + updateShape: function () { + // Remove the old input (so that you don't have inputs stack repeatedly) + if (this.getInput('characteristicName')) { + this.removeInput('characteristicName'); + } + // Append the new input based on the value of this.columnType + if(this.columnType === 'serviceCharacteristicValue') { + this.appendValueInput("characteristicName") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristic Name"); + this.setInputsInline(true); + } + }, + /** + * This function runs when saving your block to XML. This is important if you need to save your block to XML at any point and then either + * generate code from that XML or repopulate your workspace from that XML + */ + mutationToDom: function () { + var container = document.createElement('mutation'); + // Do not use camelCase values for attribute names. + container.setAttribute('column_type', this.columnType); + // ALWAYS return container; this will be the input for domToMutation. + return container; + }, + /** + * This function runs when loading your block from XML, after running init. + * It's very important for updating your block in response to values selected in a field. + */ + domToMutation: function (xmlElement) { + // This attribute should match the one you used in mutationToDom + var columnType = xmlElement.getAttribute('column_type'); + // If, for whatever reason, you try to save an undefined value in column_type, it will actually be saved as the string 'undefined' + // If this is not an acceptable value, filter it out + if(columnType && columnType !== 'undefined') { + this.columnType = columnType; + } + // Run updateShape to append block values as needed + this.updateShape(); + } + }; + + + + + // Blockly.Blocks['setServiceRefProps'] = { + // init: function() { + // this.appendDummyInput() + // .appendField("Service") + // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFNAME"); + // this.appendDummyInput() + // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFUUID") + // .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL") + // .appendField(new Blockly.FieldLabelSerializable(""), "OPTIONEDVALUE"); + + + + // this.appendValueInput("AVALUE") + // .setCheck("String") + // .setAlign(Blockly.ALIGN_RIGHT) + // .appendField("value"); + + + // this.setInputsInline( true ); + // this.setPreviousStatement(true, null); + // this.setNextStatement(true, null); + // this.setColour(colourtexts); + // this.setTooltip("Set values to characteristics of a refernced service."); + // this.setHelpUrl(""); + + // }, + + // }; + + + + Blockly.Blocks['serviceRefCharacteristic'] = { + init: function() { + + this.appendValueInput("ACHARACTERISTICNAME") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Name"); + + + this.appendValueInput("AVALUE") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("value"); + + + this.setInputsInline( true ); + this.setOutput(true, 'String'); + this.setColour(colourtexts); + this.setTooltip("Set values to characteristics of a referenced service."); + this.setHelpUrl(""); + + }, + + }; + + + Blockly.Blocks['setServiceRefCharacteristicValues'] = { + init: function() { + this.appendDummyInput() + .appendField("Service") + .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFNAME"); + this.appendDummyInput() + .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFUUID"); + + + + this.appendValueInput("CHARVALUES") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristics"); + + + this.setInputsInline( false ); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(colourtexts); + this.setTooltip("Set values to characteristics of a refernced service."); + this.setHelpUrl(""); + + }, + + + + + }; + \ No newline at end of file diff --git a/src/assets/blockly/custom_java_blocks.js b/src/assets/blockly/custom_java_blocks.js new file mode 100644 index 0000000000000000000000000000000000000000..852603032024d9e206cc29aa95e50b84f8eeec8d --- /dev/null +++ b/src/assets/blockly/custom_java_blocks.js @@ -0,0 +1,1075 @@ + + Blockly.Blocks['logic_compare_strings'] = { + /** + * Block for comparison operator. + * @this Blockly.Block + */ + init: function() { + var OPERATORS = Blockly.RTL ? [ + ['is equal to(strings)', 'EQ'] + ] : [ + ['is equal to(strings)', 'EQ'] + ]; + this.setColour(160); + this.setOutput(true, 'Boolean'); + this.appendValueInput('A') + .setCheck('String'); + this.appendValueInput('B') + .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP') + .setCheck('String'); + this.setInputsInline(true); + var thisBlock = this; + this.setTooltip(function() { + var op = thisBlock.getFieldValue('OP'); + var TOOLTIPS = { + 'EQ': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ + }; + return TOOLTIPS[op]; + }); + } + }; + + Blockly.Blocks['procedures_nodefreturn2'] = { + /** + block name: procedures_nodefreturn2 + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method without return + included in final version: YES + */ + init: function() { + this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL); + this.setColour(290); + var name = Blockly.Procedures.findLegalName( + Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE, this); + this.appendDummyInput() + .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_TITLE) + .appendField(new Blockly.FieldTextInput(name, + Blockly.Procedures.rename), 'NAME') + .appendField('', 'PARAMS'); + this.setMutator(new Blockly.Mutator(['procedures_mutatorarg'])); + this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP); + this.arguments_ = []; + this.setStatements_(true); + this.statementConnection_ = null; + }, + setStatements_: Blockly.Blocks['procedures_defnoreturn'].setStatements_, + updateParams_: Blockly.Blocks['procedures_defnoreturn'].updateParams_, + mutationToDom: Blockly.Blocks['procedures_defnoreturn'].mutationToDom, + domToMutation: Blockly.Blocks['procedures_defnoreturn'].domToMutation, + decompose: Blockly.Blocks['procedures_defnoreturn'].decompose, + compose: Blockly.Blocks['procedures_defnoreturn'].compose, + dispose: Blockly.Blocks['procedures_defnoreturn'].dispose, + /** + * Return the signature of this procedure definition. + * @return {!Array} Tuple containing three elements: + * - the name of the defined procedure, + * - a list of all its arguments, + * - that it DOES have a return value. + * @this Blockly.Block + */ + getProcedureDef: function() { + return [this.getFieldValue('NAME'), this.arguments_, true]; + }, + getVars: Blockly.Blocks['procedures_defnoreturn'].getVars, + renameVar: Blockly.Blocks['procedures_defnoreturn'].renameVar, + customContextMenu: Blockly.Blocks['procedures_defnoreturn'].customContextMenu, + callType_: 'procedures_callreturn' + }; + Blockly.Blocks['procedures_defreturn_String'] = { + /** + block name: procedures_defreturn_String + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method with string return value + included in final version: YES + */ + init: function() { + this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL); + this.setColour(160); + var name = Blockly.Procedures.findLegalName( + Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE, this); + this.appendDummyInput() + .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_TITLE) + .appendField(new Blockly.FieldTextInput(name, + Blockly.Procedures.rename), 'NAME') + .appendField('', 'PARAMS'); + this.appendValueInput('RETURN') + .setAlign(Blockly.ALIGN_RIGHT) + .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN +" "+"String") + .setCheck('String'); + this.setMutator(new Blockly.Mutator(['procedures_mutatorarg'])); + this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP); + this.arguments_ = []; + this.setStatements_(true); + this.statementConnection_ = null; + }, + setStatements_: Blockly.Blocks['procedures_defnoreturn'].setStatements_, + updateParams_: Blockly.Blocks['procedures_defnoreturn'].updateParams_, + mutationToDom: Blockly.Blocks['procedures_defnoreturn'].mutationToDom, + domToMutation: Blockly.Blocks['procedures_defnoreturn'].domToMutation, + decompose: Blockly.Blocks['procedures_defnoreturn'].decompose, + compose: Blockly.Blocks['procedures_defnoreturn'].compose, + dispose: Blockly.Blocks['procedures_defnoreturn'].dispose, + /** + * Return the signature of this procedure definition. + * @return {!Array} Tuple containing three elements: + * - the name of the defined procedure, + * - a list of all its arguments, + * - that it DOES have a return value. + * @this Blockly.Block + */ + getProcedureDef: function() { + return [this.getFieldValue('NAME'), this.arguments_, true]; + }, + getVars: Blockly.Blocks['procedures_defnoreturn'].getVars, + renameVar: Blockly.Blocks['procedures_defnoreturn'].renameVar, + customContextMenu: Blockly.Blocks['procedures_defnoreturn'].customContextMenu, + callType_: 'procedures_callreturn' + }; + Blockly.Blocks['procedures_defreturn_Int'] = { + /** + block name: procedures_defreturn_Int + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method with integer return value + included in final version: YES + */ + init: function() { + this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL); + this.setColour(60); + var name = Blockly.Procedures.findLegalName( + Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE, this); + this.appendDummyInput() + .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_TITLE) + .appendField(new Blockly.FieldTextInput(name, + Blockly.Procedures.rename), 'NAME') + .appendField('', 'PARAMS'); + this.appendValueInput('RETURN') + .setAlign(Blockly.ALIGN_RIGHT) + .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN +" "+"int") + .setCheck('Number'); + this.setMutator(new Blockly.Mutator(['procedures_mutatorarg'])); + this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP); + this.arguments_ = []; + this.setStatements_(true); + this.statementConnection_ = null; + }, + setStatements_: Blockly.Blocks['procedures_defnoreturn'].setStatements_, + updateParams_: Blockly.Blocks['procedures_defnoreturn'].updateParams_, + mutationToDom: Blockly.Blocks['procedures_defnoreturn'].mutationToDom, + domToMutation: Blockly.Blocks['procedures_defnoreturn'].domToMutation, + decompose: Blockly.Blocks['procedures_defnoreturn'].decompose, + compose: Blockly.Blocks['procedures_defnoreturn'].compose, + dispose: Blockly.Blocks['procedures_defnoreturn'].dispose, + /** + * Return the signature of this procedure definition. + * @return {!Array} Tuple containing three elements: + * - the name of the defined procedure, + * - a list of all its arguments, + * - that it DOES have a return value. + * @this Blockly.Block + */ + getProcedureDef: function() { + return [this.getFieldValue('NAME'), this.arguments_, true]; + }, + getVars: Blockly.Blocks['procedures_defnoreturn'].getVars, + renameVar: Blockly.Blocks['procedures_defnoreturn'].renameVar, + customContextMenu: Blockly.Blocks['procedures_defnoreturn'].customContextMenu, + callType_: 'procedures_callreturn' + }; + Blockly.Blocks['procedures_defreturn_Boolean'] = { + /** + block name: procedures_defreturn_Boolean + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: method with boolean return value + included in final version: YES + */ + init: function() { + this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL); + this.setColour(90); + var name = Blockly.Procedures.findLegalName( + Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE, this); + this.appendDummyInput() + .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_TITLE) + .appendField(new Blockly.FieldTextInput(name, + Blockly.Procedures.rename), 'NAME') + .appendField('', 'PARAMS'); + this.appendValueInput('RETURN') + .setAlign(Blockly.ALIGN_RIGHT) + .appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN +" "+"boolean") + .setCheck('Boolean'); + this.setMutator(new Blockly.Mutator(['procedures_mutatorarg'])); + this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP); + this.arguments_ = []; + this.setStatements_(true); + this.statementConnection_ = null; + }, + setStatements_: Blockly.Blocks['procedures_defnoreturn'].setStatements_, + updateParams_: Blockly.Blocks['procedures_defnoreturn'].updateParams_, + mutationToDom: Blockly.Blocks['procedures_defnoreturn'].mutationToDom, + domToMutation: Blockly.Blocks['procedures_defnoreturn'].domToMutation, + decompose: Blockly.Blocks['procedures_defnoreturn'].decompose, + compose: Blockly.Blocks['procedures_defnoreturn'].compose, + dispose: Blockly.Blocks['procedures_defnoreturn'].dispose, + /** + * Return the signature of this procedure definition. + * @return {!Array} Tuple containing three elements: + * - the name of the defined procedure, + * - a list of all its arguments, + * - that it DOES have a return value. + * @this Blockly.Block + */ + getProcedureDef: function() { + return [this.getFieldValue('NAME'), this.arguments_, true]; + }, + getVars: Blockly.Blocks['procedures_defnoreturn'].getVars, + renameVar: Blockly.Blocks['procedures_defnoreturn'].renameVar, + customContextMenu: Blockly.Blocks['procedures_defnoreturn'].customContextMenu, + callType_: 'procedures_callreturn' + }; + + + Blockly.Blocks['variable_get'] = { + /** + block name: variable_get + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + short description: variable getter + included in final version: YES + */ + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL); + this.setColour(330); + this.appendDummyInput() + .appendField(Blockly.Msg.VARIABLES_GET_TITLE) + .appendField(new Blockly.FieldVariable( + Blockly.Msg.VARIABLES_GET_ITEM), 'VAR') + .appendField(Blockly.Msg.VARIABLES_GET_TAIL); + this.setOutput(true); + this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_GET_CREATE_SET; + this.contextMenuType_ = 'variables_set'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + /** + * Add menu option to create getter/setter block for this setter/getter. + * @param {!Array} options List of menu options to add to. + * @this Blockly.Block + */ + customContextMenu: function(options) { + var option = {enabled: true}; + var name = this.getFieldValue('VAR'); + option.text = this.contextMenuMsg_.replace('%1', name); + var xmlField = goog.dom.createDom('field', null, name); + xmlField.setAttribute('name', 'VAR'); + var xmlBlock = goog.dom.createDom('block', null, xmlField); + xmlBlock.setAttribute('type', this.contextMenuType_); + option.callback = Blockly.ContextMenu.callbackFactory(this, xmlBlock); + options.push(option); + } + }; + + + + /* + __________________________________________________________________________ + __________________________________________________________________________ + Others: Non included, tests. + __________________________________________________________________________ + __________________________________________________________________________ + */ + Blockly.Blocks['variable_input'] = { + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL); + this.setColour(30); + this.appendDummyInput() + .appendTitle("input") + .appendTitle(new Blockly.FieldDropdown([["String", "String"],["int", "int"],["boolean", "boolean"]]), "const_type"); + this.interpolateMsg( + 'called' + ' %1',// + + //Blockly.Msg.VARIABLES_SET_TAIL + ' %3', + ['VAR', new Blockly.FieldVariable(Blockly.Msg.VARIABLES_SET_ITEM)], + //['VALUE', null, Blockly.ALIGN_RIGHT], + Blockly.ALIGN_RIGHT); + this.setOutput(true); + this.setInputsInline(true); + this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + customContextMenu: Blockly.Blocks['variables_get'].customContextMenu + }; + Blockly.Blocks['create_constant_arith'] = { + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + init: function() { + this.setHelpUrl('http://www.example.com/'); + this.setColour(247); + this.appendValueInput("const_value") + .setCheck("Number") + .appendTitle("create number named") + .appendTitle(new Blockly.FieldTextInput("var_name"), "const__name") + .appendTitle("as") + .appendTitle(new Blockly.FieldDropdown([["integer", "int"], ["float", "float"]]), "const_type") + .appendTitle("with value"); + this.setTooltip(''); + } + }; + Blockly.Blocks['get_int'] = { + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + init: function() { + this.setHelpUrl('http://www.example.com/'); + this.setColour(20); + this.appendDummyInput() + .appendTitle("return number named") + .appendTitle(new Blockly.FieldVariable("item"), "NAME"); + this.setOutput(true, "Number"); + this.setTooltip(''); + }, + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('NAME'))) { + this.setFieldValue(newName, 'NAME'); + } + } + }; + Blockly.Blocks['create_constant_boolean'] = { + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + init: function() { + this.setHelpUrl('http://www.example.com/'); + this.setColour(181); + this.appendValueInput("NAME") + .setCheck("Boolean") + .appendTitle("create boolean variable named") + .appendTitle(new Blockly.FieldTextInput("boolean_var"), "name") + .appendTitle("with value"); + this.setTooltip(''); + } + }; + Blockly.Blocks['get_boolean'] = { + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + init: function() { + this.setHelpUrl('http://www.example.com/'); + this.setColour(181); + this.appendDummyInput() + .appendTitle("return boolean named") + .appendTitle(new Blockly.FieldVariable("item"), "NAME"); + this.setOutput(true, "Boolean"); + this.setTooltip(''); + }, + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('NAME'))) { + this.setFieldValue(newName, 'NAME'); + } + } + }; + Blockly.Blocks['get_string'] = { + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + init: function() { + this.setHelpUrl('http://www.example.com/'); + this.setColour(160); + this.appendDummyInput() + .appendTitle("return string named") + .appendTitle(new Blockly.FieldVariable("item"), "NAME"); + this.setOutput(true, "String"); + this.setTooltip(''); + }, + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('NAME'))) { + this.setFieldValue(newName, 'NAME'); + } + } + }; + Blockly.Blocks['create_string'] = { + /** + authors: Pablo Caballero, Eugenio Rubio, Sergio Tamurejo. + included in final version: NO + */ + init: function() { + this.setHelpUrl('http://www.example.com/'); + this.setColour(181); + this.appendValueInput("value") + .setCheck("String") + .appendTitle("create String named") + .appendTitle(new Blockly.FieldTextInput("default"), "NAME") + .appendTitle("with value"); + this.setTooltip(''); + } + }; + + Blockly.Themes.Halloween = Blockly.Theme.defineTheme('halloween', { + + 'base': Blockly.Themes.Classic, + 'fontStyle': { + 'family': 'consolas', + 'weight': 'normal', + 'size': 8 + + }, + + 'categoryStyles': { + }, + 'blockStyles': { + }, + 'componentStyles': { + + } +}); + + + + Blockly.Blocks['literal_text'] = { + /** + * Block for text value. + * @this Blockly.Block + */ + init: function() { + this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL); + this.setColour(160); + this.appendDummyInput() + .appendField(this.newQuote_(true)) + .appendField(new Blockly.FieldTextInput(''), 'TEXT') + .appendField(this.newQuote_(false)); + this.setOutput(true, 'String'); + this.setTooltip(Blockly.Msg.TEXT_TEXT_TOOLTIP); + }, + /** + * Create an image of an open or closed quote. + * @param {boolean} open True if open quote, false if closed. + * @return {!Blockly.FieldImage} The field image of the quote. + * @private + */ + newQuote_: function(open) { + if (open == Blockly.RTL) { + var file = 'quote1.png'; + } else { + var file = 'quote0.png'; + } + return new Blockly.FieldImage(Blockly.pathToMedia + file, 12, 12, '"'); + } +}; + +Blockly.Blocks['literal_integer'] = { + /** + * Block for numeric integer value. + * @this Blockly.Block + */ + init: function() { + this.setHelpUrl(Blockly.Msg.MATH_NUMBER_HELPURL); + this.setColour(230); + this.appendDummyInput() + .appendField(new Blockly.FieldTextInput('0', + Blockly.FieldTextInput.integerValidator), 'NUM'); + this.setOutput(true, 'Number'); + this.setTooltip(Blockly.Msg.MATH_NUMBER_TOOLTIP); + } +}; + + +Blockly.Blocks['literal_boolean'] = { + /** + * Block for boolean data type: true and false. + * @this Blockly.Block + */ + init: function() { + var BOOLEANS = + [[Blockly.Msg.LOGIC_BOOLEAN_TRUE, 'TRUE'], + [Blockly.Msg.LOGIC_BOOLEAN_FALSE, 'FALSE']]; + this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL); + this.setColour(90); + this.setOutput(true, 'Boolean'); + this.appendDummyInput() + .appendField(new Blockly.FieldDropdown(BOOLEANS), 'BOOL'); + this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP); + } +}; + + + + +/* + * --- STRINGS --- + * +*/ +Blockly.Blocks['variable_declare_string'] = { + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL); + this.setColour(160); + var name = 'strvar' + Blockly.Variables.generateUniqueName(Blockly.getMainWorkspace() ); + var newString = new Blockly.FieldVariable( name, null, null, 'string'); + // this.interpolateMsg( + // 'define String '+ + // 'called' + ' %1', + // ['VAR', newString], + // Blockly.ALIGN_RIGHT); + + + this.appendValueInput('VALUE') + .appendField("Create String variable") + .appendField(newString, "VAR") + .appendField("=") + .setCheck("String"); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + customContextMenu: Blockly.Blocks['variables_get'].customContextMenu + }; + + +Blockly.Blocks['variable_get_string'] = { + /** + * Block for variable getter. + * @this Blockly.Block + */ + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL); + this.setColour(160); + // var name = Blockly.VariablesString.randomVariablesString(); + + var name = 'strvar' + Blockly.Variables.generateUniqueName(Blockly.getMainWorkspace() ); + var newString = new Blockly.FieldVariable( name, null, null, 'string'); + + this.appendDummyInput() + .appendField(Blockly.Msg.VARIABLES_GET_TITLE) + .appendField( newString, 'VAR') + .appendField(Blockly.Msg.VARIABLES_GET_TAIL); + this.setOutput(true,'String'); + this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_GET_CREATE_SET; + this.contextMenuType_ = 'variables_set'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + /** + * Add menu option to create getter/setter block for this setter/getter. + * @param {!Array} options List of menu options to add to. + * @this Blockly.Block + */ + customContextMenu: function(options) { + var option = {enabled: true}; + var name = this.getFieldValue('VAR'); + option.text = this.contextMenuMsg_.replace('%1', name); + var xmlField = goog.dom.createDom('field', null, name); + xmlField.setAttribute('name', 'VAR'); + var xmlBlock = goog.dom.createDom('block', null, xmlField); + xmlBlock.setAttribute('type', this.contextMenuType_); + option.callback = Blockly.ContextMenu.callbackFactory(this, xmlBlock); + options.push(option); + } + }; + + +Blockly.Blocks['variable_set_string'] = { + /** + * Block for variable setter. + * @this Blockly.Block + */ + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL); + this.setColour(160); + //var name = Blockly.VariablesString.randomVariablesString(); + // this.interpolateMsg( + // // TODO: Combine these messages instead of using concatenation. + // 'set' + ' %1 ', + // ['VAR', new Blockly. FieldVariable(null,null,null,'String')], + // Blockly.ALIGN_RIGHT); + + var name = 'strvar' + Blockly.Variables.generateUniqueName(Blockly.getMainWorkspace() ); + var newString = new Blockly.FieldVariable( name, null, null, 'string'); + + this.appendValueInput('VALUE') + .appendField( newString, 'VAR') + .appendField("=") + .setCheck("String"); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + customContextMenu: Blockly.Blocks['variables_get'].customContextMenu +}; + + + + +/* + * --- NUMBER --- + * +*/ +Blockly.Blocks['variable_declare_int'] = { + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL); + this.setColour(230); + var name = Blockly.Variables.generateUniqueName(Blockly.getMainWorkspace() ); + var newString = new Blockly.FieldVariable( name, null, null, 'Number'); + // this.interpolateMsg( + // 'define int '+ + // 'called' + ' %1' ,//+ + // ['VAR', new Blockly.FieldVariableInteger(null)], + // Blockly.ALIGN_RIGHT); + this.appendValueInput('VALUE') + .appendField("Create Integer variable") + .appendField(newString, "VAR") + .appendField("=") + .setCheck("Number"); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + customContextMenu: Blockly.Blocks['variables_get'].customContextMenu + }; + + +Blockly.Blocks['variable_get_int'] = { + /** + * Block for variable getter. + * @this Blockly.Block + */ + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL); + this.setColour(230); + var name = Blockly.Variables.generateUniqueName(Blockly.getMainWorkspace() ); + var newString = new Blockly.FieldVariable( name, null, null, 'Number'); + + //var name = Blockly.VariablesInteger.randomVariablesInteger; + this.appendDummyInput() + .appendField(Blockly.Msg.VARIABLES_GET_TITLE) + .appendField(newString, 'VAR') + .appendField(Blockly.Msg.VARIABLES_GET_TAIL); + this.setOutput(true,'Number'); + this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_GET_CREATE_SET; + this.contextMenuType_ = 'variables_set'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + /** + * Add menu option to create getter/setter block for this setter/getter. + * @param {!Array} options List of menu options to add to. + * @this Blockly.Block + */ + customContextMenu: function(options) { + var option = {enabled: true}; + var name = this.getFieldValue('VAR'); + option.text = this.contextMenuMsg_.replace('%1', name); + var xmlField = goog.dom.createDom('field', null, name); + xmlField.setAttribute('name', 'VAR'); + var xmlBlock = goog.dom.createDom('block', null, xmlField); + xmlBlock.setAttribute('type', this.contextMenuType_); + option.callback = Blockly.ContextMenu.callbackFactory(this, xmlBlock); + options.push(option); + } + }; + +Blockly.Blocks['variable_set_int'] = { + /** + * Block for variable setter. + * @this Blockly.Block + */ + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL); + this.setColour(230); + var name = Blockly.Variables.generateUniqueName(Blockly.getMainWorkspace() ); + var newString = new Blockly.FieldVariable( name, null, null, 'Number'); + + //var name = Blockly.VariablesInteger.randomVariablesInteger(); + // this.interpolateMsg( + // // TODO: Combine these messages instead of using concatenation. + // 'set' + ' %1 ', + // ['VAR', new Blockly.FieldVariableInteger(name)], + // Blockly.ALIGN_RIGHT); + this.appendValueInput('VALUE') + .appendField( newString, 'VAR') + .appendField("=") + .setCheck("Number"); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + customContextMenu: Blockly.Blocks['variables_get'].customContextMenu +}; + + + + +Blockly.Blocks['variable_declare_float'] = { + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL); + this.setColour(230); + var name = Blockly.Variables.generateUniqueName(Blockly.getMainWorkspace() ); + var newString = new Blockly.FieldVariable( name, null, null, 'Number'); + // this.interpolateMsg( + // 'define int '+ + // 'called' + ' %1' ,//+ + // ['VAR', new Blockly.FieldVariableInteger(null)], + // Blockly.ALIGN_RIGHT); + this.appendValueInput('VALUE') + .appendField("Create Float variable") + .appendField(newString, "VAR") + .appendField("=") + .setCheck("Number"); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + customContextMenu: Blockly.Blocks['variables_get'].customContextMenu + }; + + + + + +/* +* --- BOOLEAN --- +* +*/ +Blockly.Blocks['variable_declare_boolean'] = { + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL); + this.setColour(90); + this.interpolateMsg( + 'define boolean '+ + 'called' + ' %1' , + ['VAR', new Blockly.FieldVariableBoolean(null)], + Blockly.ALIGN_RIGHT); + this.appendValueInput('VALUE') + .setCheck("Boolean"); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + customContextMenu: Blockly.Blocks['variables_get'].customContextMenu +}; + +Blockly.Blocks['variable_get_boolean'] = { + /** + * Block for variable getter. + * @this Blockly.Block + */ + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL); + this.setColour(90); + var name = Blockly.VariablesBoolean.randomVariablesBoolean(); + this.appendDummyInput() + .appendField(Blockly.Msg.VARIABLES_GET_TITLE) + .appendField(new Blockly.FieldVariableBoolean( + name), 'VAR') + .appendField(Blockly.Msg.VARIABLES_GET_TAIL); + this.setOutput(true,'Boolean'); + this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_GET_CREATE_SET; + this.contextMenuType_ = 'variables_set'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + /** + * Add menu option to create getter/setter block for this setter/getter. + * @param {!Array} options List of menu options to add to. + * @this Blockly.Block + */ + customContextMenu: function(options) { + var option = {enabled: true}; + var name = this.getFieldValue('VAR'); + option.text = this.contextMenuMsg_.replace('%1', name); + var xmlField = goog.dom.createDom('field', null, name); + xmlField.setAttribute('name', 'VAR'); + var xmlBlock = goog.dom.createDom('block', null, xmlField); + xmlBlock.setAttribute('type', this.contextMenuType_); + option.callback = Blockly.ContextMenu.callbackFactory(this, xmlBlock); + options.push(option); + } + }; + +Blockly.Blocks['variable_set_boolean'] = { + /** + * Block for variable setter. + * @this Blockly.Block + */ + init: function() { + this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL); + this.setColour(90); + var name = Blockly.VariablesBoolean.randomVariablesBoolean(); + this.interpolateMsg( + // TODO: Combine these messages instead of using concatenation. + 'set' + ' %1 ', + ['VAR', new Blockly.FieldVariableBoolean(name)], + Blockly.ALIGN_RIGHT); + this.appendValueInput('VALUE') + .setCheck("Boolean"); + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP); + this.contextMenuMsg_ = Blockly.Msg.VARIABLES_SET_CREATE_GET; + this.contextMenuType_ = 'variables_get'; + }, + /** + * Return all variables referenced by this block. + * @return {!Array.} List of variable names. + * @this Blockly.Block + */ + getVars: function() { + return [this.getFieldValue('VAR')]; + }, + /** + * Notification that a variable is renaming. + * If the name matches one of this block's variables, rename it. + * @param {string} oldName Previous name of variable. + * @param {string} newName Renamed variable. + * @this Blockly.Block + */ + renameVar: function(oldName, newName) { + if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { + this.setFieldValue(newName, 'VAR'); + } + }, + customContextMenu: Blockly.Blocks['variables_get'].customContextMenu +}; + + + diff --git a/src/assets/config/config.prod.default.json b/src/assets/config/config.prod.default.json new file mode 100644 index 0000000000000000000000000000000000000000..0465cdc3d5adb47e1f414ceac3095c1a551d8b85 --- /dev/null +++ b/src/assets/config/config.prod.default.json @@ -0,0 +1,31 @@ +{ + "TITLE": "OpenSlice by ETSI", + "PORTALVERSION":"2024Q2", + "WIKI": "https://osl.etsi.org/documentation", + "BUGZILLA": "{BASEURL}/bugzilla/", + "STATUS": "{BASEURL}/healthstatus/", + "WEBURL": "{BASEURL}", + "PORTAL_REPO_APIURL": "{BASEURL}/osapi", + "ASSURANCE_SERVICE_MGMT_APIURL": "{BASEURL}/oas-api", + "APITMFURL": "{BASEURL}/tmf-api", + "OAUTH_CONFIG" : { + "issuer": "{BASEURL}/auth/realms/openslice", + "loginUrl": "{BASEURL}/auth/realms/openslice/protocol/openid-connect/auth", + "tokenEndpoint": "{BASEURL}/auth/realms/openslice/protocol/openid-connect/token", + "userinfoEndpoint": "{BASEURL}/auth/realms/openslice/protocol/openid-connect/userinfo", + "redirectUri": "{BASEURL}/redirect", + "logoutUrl": "{BASEURL}/auth/realms/openslice/protocol/openid-connect/logout", + "postLogoutRedirectUri": "{BASEURL}", + + "responseType": "code", + "oidc": false, + "clientId": "osapiWebClientId", + "dummyClientSecret": "secret", + + "requireHttps": false, + "useHttpBasicAuth": true, + "clearHashAfterLogin": false, + + "showDebugInformation": true + } +} diff --git a/src/assets/config/config.theming.default.json b/src/assets/config/config.theming.default.json new file mode 100644 index 0000000000000000000000000000000000000000..bcb6a64f806d5533abc6249e4e5dc37276361100 --- /dev/null +++ b/src/assets/config/config.theming.default.json @@ -0,0 +1,9 @@ +{ + "THEME_ID":"default", + "DEPLOYMENT_LOGO_PATH":"assets/images/logo_clear.png", + "DEFAULT_SERVICE_LOGO_PATH":"assets/images/logo_icon_original.png", + "FAVICON_PATH":"favicon.ico", + "WHO_WE_ARE_HTML":"
ETSI SDG OpenSlice|https://osl.etsi.org
The ETSI Software Development Group for OpenSlice (SDG OSL) is developing an open source service based Operations Support System (OSS) to deliver Network Slice as a Service (NSaaS).
OpenSlice by ETSI|http://portal.openslice.io
A portal that allows 5G experimenters to design and deploy network services towards the infrastructure.
OpenSlice by ETSI wiki|https://osl.etsi.org/documentation
A wiki containing OpenSlice software documentation.
", + "CONNECT_WITH_US_HTML":"", + "FOOTER_HTML":"
OpenSlice has received funding from various projects under European Programmes for research, technological development and demonstration. You may refer to our extensive ecosystem for further details.
Openslice by ETSI running OSL version 2024Q2 | Terms and Conditions | © 2024 on behalf of osl.etsi.org
" +} \ No newline at end of file diff --git a/src/assets/config/theming.default.scss b/src/assets/config/theming.default.scss new file mode 100644 index 0000000000000000000000000000000000000000..96a78dc4e549c98d8107d8689f26e49e7f8823ce --- /dev/null +++ b/src/assets/config/theming.default.scss @@ -0,0 +1,22 @@ +/* Default theme */ + +$primary: #428bca; +$secondary: #6c6c6c; + +/* ------------------------------ */ +/* Predefined palette 1 theme */ + +/* $primary: rgba(0,45,126); */ +/* $secondary: #6c6c6c; */ + +/* ------------------------------ */ +/* Predefined palette 2 theme */ + +/* $primary: rgba(255, 124, 0); */ +/* $secondary: #6c6c6c; */ + +/* ------------------------------ */ +/* Predefined palette 3 theme */ + +/* $primary: rgba(247,1, 2); */ +/* $secondary: #6c6c6c; */ \ No newline at end of file diff --git a/src/assets/images/404/dribbble_1.gif b/src/assets/images/404/dribbble_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4eb84b888bbba4c860216e31adf7756368e18eb Binary files /dev/null and b/src/assets/images/404/dribbble_1.gif differ diff --git a/src/assets/images/eu-commission.png b/src/assets/images/eu-commission.png new file mode 100644 index 0000000000000000000000000000000000000000..374ae32260f75ac6776c7e5099289f738dab50a4 Binary files /dev/null and b/src/assets/images/eu-commission.png differ diff --git a/src/assets/images/landing/background.png b/src/assets/images/landing/background.png new file mode 100644 index 0000000000000000000000000000000000000000..8888c5d255a18d693313f83972c644357a56eb36 Binary files /dev/null and b/src/assets/images/landing/background.png differ diff --git a/src/assets/images/landing/nfvo.png b/src/assets/images/landing/nfvo.png new file mode 100644 index 0000000000000000000000000000000000000000..54e9e253186933964262340d260bd70badb1ef3a Binary files /dev/null and b/src/assets/images/landing/nfvo.png differ diff --git a/src/assets/images/landing/products.png b/src/assets/images/landing/products.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4c02dcb9205b213a64f2b112cb3483461faedf Binary files /dev/null and b/src/assets/images/landing/products.png differ diff --git a/src/assets/images/landing/resources.png b/src/assets/images/landing/resources.png new file mode 100644 index 0000000000000000000000000000000000000000..93cc0d1078878fb81191f0e5b443a0afce3cdd97 Binary files /dev/null and b/src/assets/images/landing/resources.png differ diff --git a/src/assets/images/landing/services.png b/src/assets/images/landing/services.png new file mode 100644 index 0000000000000000000000000000000000000000..96d206ada878e9b08d7ef17777a1571f4aa463a2 Binary files /dev/null and b/src/assets/images/landing/services.png differ diff --git a/src/assets/images/landing/testing.png b/src/assets/images/landing/testing.png new file mode 100644 index 0000000000000000000000000000000000000000..df00112e6fdd4c86f75336d12cf46dfa05bdd76f Binary files /dev/null and b/src/assets/images/landing/testing.png differ diff --git a/src/assets/images/left-arrow.png b/src/assets/images/left-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca5f66cfbeb12db31f78b9ecf55c25e52371fab Binary files /dev/null and b/src/assets/images/left-arrow.png differ diff --git a/src/assets/images/loginlayer_background.PNG b/src/assets/images/loginlayer_background.PNG new file mode 100644 index 0000000000000000000000000000000000000000..8dc09f6f8b94850dec58f0a08ef998f6aee8256c Binary files /dev/null and b/src/assets/images/loginlayer_background.PNG differ diff --git a/src/assets/images/logo_clear.png b/src/assets/images/logo_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa5efc135209ce66cee07ea7a76dc0a4cff9244 Binary files /dev/null and b/src/assets/images/logo_clear.png differ diff --git a/src/assets/images/logo_clear_old.png b/src/assets/images/logo_clear_old.png new file mode 100644 index 0000000000000000000000000000000000000000..9f2116089388c8f7573cfac63ac43697bd2827d4 Binary files /dev/null and b/src/assets/images/logo_clear_old.png differ diff --git a/src/assets/images/logo_icon_original.png b/src/assets/images/logo_icon_original.png new file mode 100644 index 0000000000000000000000000000000000000000..441c3c7b3548d37771b4da4262928c22c655f4d2 Binary files /dev/null and b/src/assets/images/logo_icon_original.png differ diff --git a/src/assets/images/right-arrow.png b/src/assets/images/right-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..96dcd6bd7c5958417864c1aca3268c913a639c03 Binary files /dev/null and b/src/assets/images/right-arrow.png differ diff --git a/src/assets/swagger_collections/TFM634 - Resource Catalog Management.json b/src/assets/swagger_collections/TFM634 - Resource Catalog Management.json new file mode 100644 index 0000000000000000000000000000000000000000..e2b5b47c5a4c904ed80d71ea882b1a7c2f60c664 --- /dev/null +++ b/src/assets/swagger_collections/TFM634 - Resource Catalog Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"This is Swagger UI environment generated for the TMF Resource Catalog Management specification","version":"4.0","title":"Resource Catalog Management","contact":{},"license":{"url":"http://www.apache.org/licenses/LICENSE-2.0.html"}},"host":"portal.openslice.io","tags":[{"name":"export-job-api-controller","description":"the exportJob API"},{"name":"hub-api-controller","description":"the hub API"},{"name":"import-job-api-controller","description":"the importJob API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"resource-candidate-api-controller","description":"the resourceCandidate API"},{"name":"resource-catalog-api-controller","description":"the resourceCatalog API"},{"name":"resource-category-api-controller","description":"the resourceCategory API"},{"name":"resource-specification-api-controller","description":"the resourceSpecification API"}],"paths":{"/exportJob":{"get":{"tags":["exportJob"],"summary":"List or find ExportJob objects","description":"This operation list or find ExportJob entities","operationId":"listExportJob_2","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ExportJob"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["exportJob"],"summary":"Creates a ExportJob","description":"This operation creates a ExportJob entity.","operationId":"createExportJob_2","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ExportJob to be created","required":true,"schema":{"$ref":"#/definitions/ExportJobCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ExportJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ExportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/exportJob/{id}":{"get":{"tags":["exportJob"],"summary":"Retrieves a ExportJob by ID","description":"This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveExportJob_2","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ExportJob","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ExportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["exportJob"],"summary":"Deletes a ExportJob","description":"This operation deletes a ExportJob entity.","operationId":"deleteExportJob_2","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ExportJob","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/importJob":{"get":{"tags":["importJob"],"summary":"List or find ImportJob objects","description":"This operation list or find ImportJob entities","operationId":"listImportJob_2","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ImportJob"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["importJob"],"summary":"Creates a ImportJob","description":"This operation creates a ImportJob entity.","operationId":"createImportJob_2","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ImportJob to be created","required":true,"schema":{"$ref":"#/definitions/ImportJobCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ImportJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ImportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/importJob/{id}":{"get":{"tags":["importJob"],"summary":"Retrieves a ImportJob by ID","description":"This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveImportJob_2","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ImportJob","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ImportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["importJob"],"summary":"Deletes a ImportJob","description":"This operation deletes a ImportJob entity.","operationId":"deleteImportJob_2","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ImportJob","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_4","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_4","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/exportJobCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ExportJobCreateEvent","description":"Example of a client listener for receiving the notification ExportJobCreateEvent","operationId":"listenToExportJobCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ExportJobCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/exportJobStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ExportJobStateChangeEvent","description":"Example of a client listener for receiving the notification ExportJobStateChangeEvent","operationId":"listenToExportJobStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ExportJobStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/importJobCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ImportJobCreateEvent","description":"Example of a client listener for receiving the notification ImportJobCreateEvent","operationId":"listenToImportJobCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ImportJobCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/importJobStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ImportJobStateChangeEvent","description":"Example of a client listener for receiving the notification ImportJobStateChangeEvent","operationId":"listenToImportJobStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ImportJobStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCandidateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCandidateChangeEvent","description":"Example of a client listener for receiving the notification ResourceCandidateChangeEvent","operationId":"listenToResourceCandidateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCandidateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCandidateCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCandidateCreateEvent","description":"Example of a client listener for receiving the notification ResourceCandidateCreateEvent","operationId":"listenToResourceCandidateCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCandidateCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCandidateDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCandidateDeleteEvent","description":"Example of a client listener for receiving the notification ResourceCandidateDeleteEvent","operationId":"listenToResourceCandidateDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCandidateDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCatalogChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCatalogChangeEvent","description":"Example of a client listener for receiving the notification ResourceCatalogChangeEvent","operationId":"listenToResourceCatalogChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCatalogChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCatalogCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCatalogCreateEvent","description":"Example of a client listener for receiving the notification ResourceCatalogCreateEvent","operationId":"listenToResourceCatalogCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCatalogCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCatalogDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCatalogDeleteEvent","description":"Example of a client listener for receiving the notification ResourceCatalogDeleteEvent","operationId":"listenToResourceCatalogDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCatalogDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCategoryChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCategoryChangeEvent","description":"Example of a client listener for receiving the notification ResourceCategoryChangeEvent","operationId":"listenToResourceCategoryChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCategoryChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCategoryCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCategoryCreateEvent","description":"Example of a client listener for receiving the notification ResourceCategoryCreateEvent","operationId":"listenToResourceCategoryCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCategoryCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceCategoryDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCategoryDeleteEvent","description":"Example of a client listener for receiving the notification ResourceCategoryDeleteEvent","operationId":"listenToResourceCategoryDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCategoryDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceSpecificationChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceSpecificationChangeEvent","description":"Example of a client listener for receiving the notification ResourceSpecificationChangeEvent","operationId":"listenToResourceSpecificationChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceSpecificationChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceSpecificationCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceSpecificationCreateEvent","description":"Example of a client listener for receiving the notification ResourceSpecificationCreateEvent","operationId":"listenToResourceSpecificationCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceSpecificationCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/listener/resourceSpecificationDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceSpecificationDeleteEvent","description":"Example of a client listener for receiving the notification ResourceSpecificationDeleteEvent","operationId":"listenToResourceSpecificationDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceSpecificationDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceCandidate":{"get":{"tags":["resourceCandidate"],"summary":"List or find ResourceCandidate objects","description":"This operation list or find ResourceCandidate entities","operationId":"listResourceCandidate","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ResourceCandidate"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["resourceCandidate"],"summary":"Creates a ResourceCandidate","description":"This operation creates a ResourceCandidate entity.","operationId":"createResourceCandidate","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ResourceCandidate to be created","required":true,"schema":{"$ref":"#/definitions/ResourceCandidateCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourceCandidate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourceCandidate"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceCandidate/{id}":{"get":{"tags":["resourceCandidate"],"summary":"Retrieves a ResourceCandidate by ID","description":"This operation retrieves a ResourceCandidate entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveResourceCandidate","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ResourceCandidate","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ResourceCandidate"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["resourceCandidate"],"summary":"Deletes a ResourceCandidate","description":"This operation deletes a ResourceCandidate entity.","operationId":"deleteResourceCandidate","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ResourceCandidate","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["resourceCandidate"],"summary":"Updates partially a ResourceCandidate","description":"This operation updates partially a ResourceCandidate entity.","operationId":"patchResourceCandidate","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ResourceCandidate to be updated","required":true,"schema":{"$ref":"#/definitions/ResourceCandidateUpdate"}},{"name":"id","in":"path","description":"Identifier of the ResourceCandidate","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ResourceCandidate"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceCatalog":{"get":{"tags":["resourceCatalog"],"summary":"List or find ResourceCatalog objects","description":"This operation list or find ResourceCatalog entities","operationId":"listResourceCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ResourceCatalog"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["resourceCatalog"],"summary":"Creates a ResourceCatalog","description":"This operation creates a ResourceCatalog entity.","operationId":"createResourceCatalog","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"resourceCatalog","description":"The Resource Catalog to be created","required":true,"schema":{"$ref":"#/definitions/ResourceCatalogCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourceCatalog"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourceCatalog"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceCatalog/{id}":{"get":{"tags":["resourceCatalog"],"summary":"Retrieves a ResourceCatalog by ID","description":"This operation retrieves a ResourceCatalog entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveResourceCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ResourceCatalog","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ResourceCatalog"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["resourceCatalog"],"summary":"Deletes a ResourceCatalog","description":"This operation deletes a ResourceCatalog entity.","operationId":"deleteResourceCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ResourceCatalog","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["resourceCatalog"],"summary":"Updates partially a ResourceCatalog","description":"This operation updates partially a ResourceCatalog entity.","operationId":"patchResourceCatalog","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ResourceCatalog to be updated","required":true,"schema":{"$ref":"#/definitions/ResourceCatalogUpdate"}},{"name":"id","in":"path","description":"Identifier of the ResourceCatalog","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ResourceCatalog"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceCategory":{"get":{"tags":["resourceCategory"],"summary":"List or find ResourceCategory objects","description":"This operation list or find ResourceCategory entities","operationId":"listResourceCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ResourceCategory"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["resourceCategory"],"summary":"Creates a ResourceCategory","description":"This operation creates a ResourceCategory entity.","operationId":"createResourceCategory","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"resCategory","description":"The ServiceCategory to be created","required":true,"schema":{"$ref":"#/definitions/ResourceCategoryCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourceCategory"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourceCategory"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceCategory/{id}":{"get":{"tags":["resourceCategory"],"summary":"Retrieves a ResourceCategory by ID","description":"This operation retrieves a ResourceCategory entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveResourceCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ResourceCategory","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ResourceCategory"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["resourceCategory"],"summary":"Deletes a ResourceCategory","description":"This operation deletes a ResourceCategory entity.","operationId":"deleteResourceCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Resource Category","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["resourceCategory"],"summary":"Updates partially a ResourceCategory","description":"This operation updates partially a ResourceCategory entity.","operationId":"patchResourceCategory","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ResourceCategory","required":true,"type":"string"},{"in":"body","name":"resourceCategory","description":"The ResourceCategory to be updated","required":true,"schema":{"$ref":"#/definitions/ResourceCategoryUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ResourceCategory"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceSpecification":{"get":{"tags":["resourceSpecification"],"summary":"List or find ResourceSpecification objects","description":"This operation list or find ResourceSpecification entities","operationId":"listResourceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ResourceSpecification"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["resourceSpecification"],"summary":"Creates a ResourceSpecification","description":"This operation creates a ResourceSpecification entity.","operationId":"createResourceSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"jsonNode","description":"The ResourceSpecification to be created","required":true,"schema":{"$ref":"#/definitions/JsonNode"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourceSpecification"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceSpecification/{id}":{"get":{"tags":["resourceSpecification"],"summary":"Retrieves a ResourceSpecification by ID","description":"This operation retrieves a ResourceSpecification entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveResourceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ResourceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ResourceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["resourceSpecification"],"summary":"Deletes a ResourceSpecification","description":"This operation deletes a ResourceSpecification entity.","operationId":"deleteResourceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ResourceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["resourceSpecification"],"summary":"Updates partially a ResourceSpecification","description":"This operation updates partially a ResourceSpecification entity.","operationId":"patchResourceSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ResourceSpecification","required":true,"type":"string"},{"in":"body","name":"serviceSpecification","description":"The ResourceSpecification to be updated","required":true,"schema":{"$ref":"#/definitions/ResourceSpecificationUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ResourceSpecification"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceSpecification/{id}/attachment":{"post":{"tags":["resourceSpecification"],"summary":"Adds an attachment to a 'ResourceSpecification'","description":"This operation adds an attachment to a ResourceSpecification","operationId":"addAttachmentToResourceSpec","consumes":["multipart/form-data"],"produces":["application/json"],"parameters":[{"in":"body","name":"afile","description":"The Attachment file to be added","required":false,"schema":{"type":"string","format":"binary"}},{"name":"id","in":"path","description":"Identifier of the ResourceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourceSpecification"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceSpecification/{id}/attachment/{attid}":{"get":{"tags":["resourceSpecification"],"summary":"Get an attachment from a 'ResourceSpecification'","description":"This operation gets an attachment","operationId":"getAttachment_1","produces":["*/*"],"parameters":[{"name":"attid","in":"path","description":"Identifier of the Attachment","required":true,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ResourceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ByteArrayResource"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceCatalogManagement/v4/resourceSpecification/{id}/attachment/{attid}/{afilename}":{"get":{"tags":["resourceSpecification"],"summary":"Get an attachment from a 'ResourceSpecification' with filename","description":"This operation gets an attachment","operationId":"getAttachmentWithFilename_1","produces":["*/*"],"parameters":[{"name":"afilename","in":"path","description":"Identifier of the Filename","required":true,"type":"string"},{"name":"attid","in":"path","description":"Identifier of the Attachment","required":true,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ResourceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ByteArrayResource"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"Attachment":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachmentType":{"type":"string","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"description":"The size of the attachment.","$ref":"#/definitions/Quantity"},"url":{"type":"string","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which the attachment is valid","$ref":"#/definitions/TimePeriod"}},"title":"Attachment","description":"Complements the description of an element (for instance a product) through video, pictures..."},"AttachmentRefOrValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"attachmentType":{"type":"string","example":"video","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","example":"Photograph of the Product","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","example":"4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"$ref":"#/definitions/Quantity"},"url":{"type":"string","example":"http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"AttachmentRefOrValue","description":"An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture."},"ByteArrayResource":{"type":"object","properties":{"byteArray":{"type":"string","format":"byte"},"description":{"type":"string"},"file":{"type":"file"},"filename":{"type":"string"},"inputStream":{"$ref":"#/definitions/InputStream"},"open":{"type":"boolean"},"readable":{"type":"boolean"},"uri":{"type":"string","format":"uri"},"url":{"type":"string","format":"url"}},"title":"ByteArrayResource"},"ConstraintRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The (class) type of the referred constraint"},"href":{"type":"string","description":"Hyperlink reference to the target constraint"},"id":{"type":"string","description":"reference id to the target constraint"},"name":{"type":"string","description":"Name given to the constraint"},"uuid":{"type":"string"},"version":{"type":"string","description":"constraint version"}},"title":"ConstraintRef","description":"Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"string","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"string","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"ExportJob":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Data at which the job was completed"},"contentType":{"type":"string","description":"The format of the exported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure"},"href":{"type":"string","description":"Reference of the export job"},"id":{"type":"string","description":"Identifier of the export job"},"path":{"type":"string","description":"URL of the root resource acting as the source for streaming content to the file specified by the export job"},"query":{"type":"string","description":"Used to scope the exported data"},"status":{"type":"string","enum":["Failed","Not Started","Running","Succeeded"]},"url":{"type":"string","description":"URL of the file containing the data to be exported"}},"title":"ExportJob","description":"Represents a task used to export resources to a file"},"ExportJobCreate":{"type":"object","required":["url"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Data at which the job was completed"},"contentType":{"type":"string","description":"The format of the exported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure"},"path":{"type":"string","description":"URL of the root resource acting as the source for streaming content to the file specified by the export job"},"query":{"type":"string","description":"Used to scope the exported data"},"status":{"type":"string","enum":["Failed","Not Started","Running","Succeeded"]},"url":{"type":"string","description":"URL of the file containing the data to be exported"}},"title":"ExportJobCreate","description":"Represents a task used to export resources to a file Skipped properties: id,href"},"ExportJobCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ExportJobCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ExportJobCreateEvent","description":"The notification data structure"},"ExportJobCreateEventPayload":{"type":"object","properties":{"exportJob":{"$ref":"#/definitions/ExportJob"}},"title":"ExportJobCreateEventPayload","description":"The event data structure"},"ExportJobStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ExportJobStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ExportJobStateChangeEvent","description":"The notification data structure"},"ExportJobStateChangeEventPayload":{"type":"object","properties":{"exportJob":{"$ref":"#/definitions/ExportJob"}},"title":"ExportJobStateChangeEventPayload","description":"The event data structure"},"FeatureSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"constraint":{"type":"array","description":"This is a list of feature constraints","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureSpecCharacteristic":{"type":"array","description":"This is a list of characteristics for a particular feature","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristic"}},"featureSpecRelationship":{"type":"array","description":"A dependency, exclusivity or aggratation relationship between/among feature specifications.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationRelationship"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Identifier of the feature specification. Must be locally unique within the containing resource specification, thus allowing direct access to the feature spec."},"isBundle":{"type":"boolean","description":"A flag indicating if this is a feature group (true) or not (false)"},"isEnabled":{"type":"boolean","description":"A flag indicating if the feature is enabled (true) or not (false)"},"name":{"type":"string","description":"Unique name given to the feature specification"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Version of the feature specification"}},"title":"FeatureSpecification","description":"Specification for applicable configuration features for a resource specification."},"FeatureSpecificationCharacteristic":{"type":"object","required":["name"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atValueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type."},"configurable":{"type":"boolean","description":"True is the feature is configurable."},"description":{"type":"string","description":"Description of this catalog"},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a feature."},"featureSpecCharRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among feature characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristicRelationship"}},"featureSpecCharacteristicValue":{"type":"array","description":"Used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a FeatureCharacteristic object.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristicValue"}},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on."},"name":{"type":"string","description":"This is the name for the feature charateristic."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on."},"version":{"type":"string","description":"Entity version"}},"title":"FeatureSpecificationCharacteristic","description":"Configuration feature characteristic specification."},"FeatureSpecificationCharacteristicRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicId":{"type":"string","description":"Unique identifier of the characteristic within the the target feature specification"},"featureId":{"type":"string","description":"Unique identifier of the target feature specification within the resource specification."},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the target characteristic"},"relationshipType":{"type":"string","description":"Type of relationship such as aggregation, migration, substitution, dependency, exclusivity"},"resourceSpecificationHref":{"type":"string","description":"Hyperlink reference to the resource specification containing the target feature and feature characteristic"},"resourceSpecificationId":{"type":"string","description":"Unique identifier of the resource specification containing the target feature and feature characteristic"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"FeatureSpecificationCharacteristicRelationship","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among FeatureSpecificationCharacteristics."},"FeatureSpecificationCharacteristicReq":{"type":"object","required":["name"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atValueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type."},"configurable":{"type":"boolean","description":"True is the feature is configurable."},"description":{"type":"string","description":"Description of this catalog"},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a feature."},"featureSpecCharRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among feature characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristicRelationship"}},"featureSpecCharacteristicValue":{"type":"array","description":"Used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a FeatureCharacteristic object.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristicValue"}},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on."},"name":{"type":"string","description":"This is the name for the feature charateristic."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on."},"version":{"type":"string","description":"Entity version"}},"title":"FeatureSpecificationCharacteristicReq","description":"Configuration feature characteristic specification."},"FeatureSpecificationCharacteristicRes":{"type":"object","required":["name"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atValueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type."},"configurable":{"type":"boolean","description":"True is the feature is configurable."},"description":{"type":"string","description":"Description of this catalog"},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a feature."},"featureSpecCharRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among feature characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristicRelationship"}},"featureSpecCharacteristicValue":{"type":"array","description":"Used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a FeatureCharacteristic object.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristicValue"}},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on."},"name":{"type":"string","description":"This is the name for the feature charateristic."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on."},"version":{"type":"string","description":"Entity version"}},"title":"FeatureSpecificationCharacteristicRes","description":"Configuration feature characteristic specification."},"FeatureSpecificationCharacteristicValue":{"type":"object","required":["valueType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"href":{"type":"string","description":"Unique reference of the entity"},"isDefault":{"type":"boolean","description":"True if the value is the default value for a characteristic."},"rangeInterval":{"type":"string","description":"Specifies the inclusion or exclusion of the valueFrom and valueTo attributes."},"regex":{"type":"string","description":"A regular expression constraint for given value."},"unitOfMeasure":{"type":"string","description":"A determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"value":{"$ref":"#/definitions/Any"},"valueFrom":{"type":"integer","format":"int32","description":"The low range value that a characteristic can take on."},"valueTo":{"type":"integer","format":"int32","description":"The upper range value that a characteristic can take on."},"valueType":{"type":"string","description":"A kind of value that the characteristic value can take on."}},"title":"FeatureSpecificationCharacteristicValue","description":"A number or text that can be assigned to a FeatureSpecificationCharacteristic."},"FeatureSpecificationRelationship":{"type":"object","required":["name","relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"featureId":{"type":"string","description":"Unique identifier of the target feature specification."},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"This is the name of the target feature specification."},"relationshipType":{"type":"string","description":"This is the type of the feature specification relationship."},"resourceSpecificationHref":{"type":"string","description":"Hyperlink reference to the resource specification containing the target feature"},"resourceSpecificationId":{"type":"string","description":"Unique identifier of the resource specification containing the target feature"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"FeatureSpecificationRelationship","description":"Configuration feature"},"FeatureSpecificationRelationshipReq":{"type":"object","required":["name","relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"featureId":{"type":"string","description":"Unique identifier of the target feature specification."},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"This is the name of the target feature specification."},"relationshipType":{"type":"string","description":"This is the type of the feature specification relationship."},"resourceSpecificationHref":{"type":"string","description":"Hyperlink reference to the resource specification containing the target feature"},"resourceSpecificationId":{"type":"string","description":"Unique identifier of the resource specification containing the target feature"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"FeatureSpecificationRelationshipReq","description":"Configuration feature"},"FeatureSpecificationRelationshipRes":{"type":"object","required":["name","relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"featureId":{"type":"string","description":"Unique identifier of the target feature specification."},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"This is the name of the target feature specification."},"relationshipType":{"type":"string","description":"This is the type of the feature specification relationship."},"resourceSpecificationHref":{"type":"string","description":"Hyperlink reference to the resource specification containing the target feature"},"resourceSpecificationId":{"type":"string","description":"Unique identifier of the resource specification containing the target feature"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"FeatureSpecificationRelationshipRes","description":"Configuration feature"},"FeatureSpecificationReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"constraint":{"type":"array","description":"This is a list of feature constraints","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureSpecCharacteristic":{"type":"array","description":"This is a list of characteristics for a particular feature","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristicReq"}},"featureSpecRelationship":{"type":"array","description":"A dependency, exclusivity or aggratation relationship between/among feature specifications.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationRelationshipReq"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Identifier of the feature specification. Must be locally unique within the containing resource specification, thus allowing direct access to the feature spec."},"isBundle":{"type":"boolean","description":"A flag indicating if this is a feature group (true) or not (false)"},"isEnabled":{"type":"boolean","description":"A flag indicating if the feature is enabled (true) or not (false)"},"name":{"type":"string","description":"Unique name given to the feature specification"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Version of the feature specification"}},"title":"FeatureSpecificationReq","description":"Specification for applicable configuration features for a resource specification."},"FeatureSpecificationRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"constraint":{"type":"array","description":"This is a list of feature constraints","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureSpecCharacteristic":{"type":"array","description":"This is a list of characteristics for a particular feature","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationCharacteristicRes"}},"featureSpecRelationship":{"type":"array","description":"A dependency, exclusivity or aggratation relationship between/among feature specifications.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationRelationshipRes"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Identifier of the feature specification. Must be locally unique within the containing resource specification, thus allowing direct access to the feature spec."},"isBundle":{"type":"boolean","description":"A flag indicating if this is a feature group (true) or not (false)"},"isEnabled":{"type":"boolean","description":"A flag indicating if the feature is enabled (true) or not (false)"},"name":{"type":"string","description":"Unique name given to the feature specification"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Version of the feature specification"}},"title":"FeatureSpecificationRes","description":"Specification for applicable configuration features for a resource specification."},"ImportJob":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Date at which the job was completed"},"contentType":{"type":"string","description":"Indicates the format of the imported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure if status is failed"},"href":{"type":"string","description":"Reference of the import job"},"id":{"type":"string","description":"Identifier of the import job"},"path":{"type":"string","description":"URL of the root resource where the content of the file specified by the import job must be applied"},"status":{"type":"string","enum":["Failed","Not Started","Running","Succeeded"]},"url":{"type":"string","description":"URL of the file containing the data to be imported"}},"title":"ImportJob","description":"Represents a task used to import resources from a file"},"ImportJobCreate":{"type":"object","required":["url"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Date at which the job was completed"},"contentType":{"type":"string","description":"Indicates the format of the imported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure if status is failed"},"path":{"type":"string","description":"URL of the root resource where the content of the file specified by the import job must be applied"},"status":{"type":"string","enum":["Failed","Not Started","Running","Succeeded"]},"url":{"type":"string","description":"URL of the file containing the data to be imported"}},"title":"ImportJobCreate","description":"Represents a task used to import resources from a file Skipped properties: id,href"},"ImportJobCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ImportJobCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ImportJobCreateEvent","description":"The notification data structure"},"ImportJobCreateEventPayload":{"type":"object","properties":{"importJob":{"$ref":"#/definitions/ImportJob"}},"title":"ImportJobCreateEventPayload","description":"The event data structure"},"ImportJobStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ImportJobStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ImportJobStateChangeEvent","description":"The notification data structure"},"ImportJobStateChangeEventPayload":{"type":"object","properties":{"importJob":{"$ref":"#/definitions/ImportJob"}},"title":"ImportJobStateChangeEventPayload","description":"The event data structure"},"InputStream":{"type":"object","title":"InputStream"},"JsonNode":{"type":"object","title":"JsonNode"},"Quantity":{"type":"object","properties":{"amount":{"type":"number","format":"float","description":"Numeric value in a given unit"},"units":{"type":"string","description":"Unit"}},"title":"Quantity","description":"An amount in a given unit"},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"ResourceCandidate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"array","description":"The category specification implied by this candidate","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of this REST resource"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"resourceSpecification":{"description":"The resource specification implied by this candidate","$ref":"#/definitions/ResourceSpecificationRef"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ResourceCandidate","description":"ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none."},"ResourceCandidateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCandidateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCandidateChangeEvent","description":"The notification data structure"},"ResourceCandidateChangeEventPayload":{"type":"object","properties":{"resourceCandidate":{"$ref":"#/definitions/ResourceCandidate"}},"title":"ResourceCandidateChangeEventPayload","description":"The event data structure"},"ResourceCandidateCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"The (immediate) base class type of this REST resource"},"@schemaLocation":{"type":"string","description":"This field provides a link to the schema describing this REST resource"},"@type":{"type":"string","description":"Class type of this REST resource"},"category":{"type":"array","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of this REST resource"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update of this REST resource"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of the resource candidate."},"name":{"type":"string","description":"Name given to this REST resource"},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"validFor":{"description":"The period for which this REST resource is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"the version of resource candidate"}},"title":"ResourceCandidateCreate","description":"ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none. Skipped properties: id,href"},"ResourceCandidateCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCandidateCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCandidateCreateEvent","description":"The notification data structure"},"ResourceCandidateCreateEventPayload":{"type":"object","properties":{"resourceCandidate":{"$ref":"#/definitions/ResourceCandidate"}},"title":"ResourceCandidateCreateEventPayload","description":"The event data structure"},"ResourceCandidateDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCandidateDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCandidateDeleteEvent","description":"The notification data structure"},"ResourceCandidateDeleteEventPayload":{"type":"object","properties":{"resourceCandidate":{"$ref":"#/definitions/ResourceCandidate"}},"title":"ResourceCandidateDeleteEventPayload","description":"The event data structure"},"ResourceCandidateRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Reference of the resource candidate"},"id":{"type":"string","description":"Unique identifier of the resource candidate"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"version":{"type":"string","description":"Version of the resource candidate"}},"title":"ResourceCandidateRef","description":"ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none."},"ResourceCandidateUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"The (immediate) base class type of this REST resource"},"@schemaLocation":{"type":"string","description":"This field provides a link to the schema describing this REST resource"},"@type":{"type":"string","description":"Class type of this REST resource"},"category":{"type":"array","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of this REST resource"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update of this REST resource"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of the resource candidate."},"name":{"type":"string","description":"Name given to this REST resource"},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"validFor":{"description":"The period for which this REST resource is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"the version of resource candidate"}},"title":"ResourceCandidateUpdate","description":"ResourceCandidate is an entity that makes a resource specification available to a catalog. A ResourceCandidate and its associated resource specification may be published - made visible - in any number of resource catalogs, or in none. Skipped properties: id,href"},"ResourceCatalog":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"array","description":"List of service categories associated with this catalog","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the Catalog"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ResourceCatalog","description":"The root entity for resource catalog management. A resource catalog is a group of resource specifications made available through resource candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers)."},"ResourceCatalogChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCatalogChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCatalogChangeEvent","description":"The notification data structure"},"ResourceCatalogChangeEventPayload":{"type":"object","properties":{"resourceCatalog":{"$ref":"#/definitions/ResourceCatalog"}},"title":"ResourceCatalogChangeEventPayload","description":"The event data structure"},"ResourceCatalogCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"Indicates the base (class) type of this REST resource"},"@schemaLocation":{"type":"string","description":"This field provides a link to the schema describing this REST resource"},"@type":{"type":"string","description":"Indicates the (class) type of catalog. For resource catalogs, this will be 'ResourceCatalog'."},"category":{"type":"array","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the catalog"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"validFor":{"description":"The period for which the catalog is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Catalog version"}},"title":"ResourceCatalogCreate","description":"The root entity for resource catalog management. A resource catalog is a group of resource specifications made available through resource candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). Skipped properties: id,href"},"ResourceCatalogCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCatalogCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCatalogCreateEvent","description":"The notification data structure"},"ResourceCatalogCreateEventPayload":{"type":"object","properties":{"resourceCatalog":{"$ref":"#/definitions/ResourceCatalog"}},"title":"ResourceCatalogCreateEventPayload","description":"The event data structure"},"ResourceCatalogDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCatalogDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCatalogDeleteEvent","description":"The notification data structure"},"ResourceCatalogDeleteEventPayload":{"type":"object","properties":{"resourceCatalog":{"$ref":"#/definitions/ResourceCatalog"}},"title":"ResourceCatalogDeleteEventPayload","description":"The event data structure"},"ResourceCatalogUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"Indicates the base (class) type of this REST resource"},"@schemaLocation":{"type":"string","description":"This field provides a link to the schema describing this REST resource"},"@type":{"type":"string","description":"Indicates the (class) type of catalog. For resource catalogs, this will be 'ResourceCatalog'."},"category":{"type":"array","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the catalog"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"validFor":{"description":"The period for which the catalog is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Catalog version"}},"title":"ResourceCatalogUpdate","description":"The root entity for resource catalog management. A resource catalog is a group of resource specifications made available through resource candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). Skipped properties: id,href"},"ResourceCategory":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"array","description":"List of child categories in the tree for in this category","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the category"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"resourceCandidate":{"type":"array","description":"List of resource candidates associated with this category","items":{"$ref":"#/definitions/ResourceCandidateRef"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ResourceCategory","description":"The (resource) category resource is used to group resource candidates in logical containers. Categories can contain other categories."},"ResourceCategoryChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCategoryChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCategoryChangeEvent","description":"The notification data structure"},"ResourceCategoryChangeEventPayload":{"type":"object","properties":{"resourceCategory":{"$ref":"#/definitions/ResourceCategory"}},"title":"ResourceCategoryChangeEventPayload","description":"The event data structure"},"ResourceCategoryCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"Immediate base class type of this category"},"@schemalLocation":{"type":"string","description":"This field provides a link to the schema describing this REST resource"},"@type":{"type":"string","description":"The (class) type of this category"},"category":{"type":"array","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of the category"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the category"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"resourceCandidate":{"type":"array","items":{"$ref":"#/definitions/ResourceCandidateRef"}},"validFor":{"description":"The period for which the category is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Category version"}},"title":"ResourceCategoryCreate","description":"The (resource) category resource is used to group resource candidates in logical containers. Categories can contain other categories. Skipped properties: id,href"},"ResourceCategoryCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCategoryCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCategoryCreateEvent","description":"The notification data structure"},"ResourceCategoryCreateEventPayload":{"type":"object","properties":{"resourceCategory":{"$ref":"#/definitions/ResourceCategory"}},"title":"ResourceCategoryCreateEventPayload","description":"The event data structure"},"ResourceCategoryDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCategoryDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCategoryDeleteEvent","description":"The notification data structure"},"ResourceCategoryDeleteEventPayload":{"type":"object","properties":{"resourceCategory":{"$ref":"#/definitions/ResourceCategory"}},"title":"ResourceCategoryDeleteEventPayload","description":"The event data structure"},"ResourceCategoryRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique reference of the category"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"version":{"type":"string","description":"Category version"}},"title":"ResourceCategoryRef","description":"Category reference. The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates."},"ResourceCategoryUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"Immediate base class type of this category"},"@schemalLocation":{"type":"string","description":"This field provides a link to the schema describing this REST resource"},"@type":{"type":"string","description":"The (class) type of this category"},"category":{"type":"array","items":{"$ref":"#/definitions/ResourceCategoryRef"}},"description":{"type":"string","description":"Description of the category"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the category"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"resourceCandidate":{"type":"array","items":{"$ref":"#/definitions/ResourceCandidateRef"}},"validFor":{"description":"The period for which the category is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Category version"}},"title":"ResourceCategoryUpdate","description":"The (resource) category resource is used to group resource candidates in logical containers. Categories can contain other categories. Skipped properties: id,href,id,href"},"ResourceSpecCharRelationship":{"type":"object","properties":{"@type":{"type":"string","description":"class type of target specification"},"href":{"type":"string","description":"Hyperlink reference to the target specification"},"id":{"type":"string","description":"Unique identifier of the target specification"},"name":{"type":"string","description":"Name of the target characteristic"},"relationshipType":{"type":"string"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the object is valid","$ref":"#/definitions/TimePeriod"}},"title":"ResourceSpecCharRelationship","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics."},"ResourceSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"attachment":{"type":"array","description":"Complements the description of an element (for instance a resource) through video, pictures ...","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the target resource like NetworkConnectivity, PhysicalLinks, Generic, L2Network and so on."},"description":{"type":"string","description":"Description of this REST resource"},"featureSpecification":{"type":"array","description":"A list of Features for this specification.","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureSpecificationRes"}},"href":{"type":"string","description":"Hyperlink reference to this REST resource"},"id":{"type":"string","description":"Unique identifier of this REST resource"},"isBundle":{"type":"boolean","description":"A flag indicates that if this resource specification is a bundled specification (true) or single (false)."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of the resource specification"},"name":{"type":"string","description":"Name given to this REST resource"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceSpecCharacteristic":{"type":"array","description":"A characteristic quality or distinctive feature of a ResourceSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process.","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationCharacteristicRes"}},"resourceSpecRelationship":{"type":"array","description":"A migration, substitution, dependency or exclusivity relationship between/among resource specifications.","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationRelationshipRes"}},"targetResourceSchema":{"$ref":"#/definitions/TargetResourceSchema"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Resource Specification version"}},"title":"ResourceSpecification","description":"Resources are physical or non-physical components (or some combination of these) within an enterprise's infrastructure or inventory. They are typically consumed or used by services (for example a physical port assigned to a service) or contribute to the realization of a Product (for example, a SIM card). They can be drawn from the Application, Computing and Network domains, and include, for example, Network Elements, software, IT systems, content and information, and technology components. A ResourceSpecification is an abstract base class for representing a generic means for implementing a particular type of Resource. In essence, a ResourceSpecification defines the common attributes and relationships of a set of related Resources, while Resource defines a specific instance that is based on a particular ResourceSpecification."},"ResourceSpecificationChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceSpecificationChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceSpecificationChangeEvent","description":"The notification data structure"},"ResourceSpecificationChangeEventPayload":{"type":"object","properties":{"resourceSpecification":{"$ref":"#/definitions/ResourceSpecification"}},"title":"ResourceSpecificationChangeEventPayload","description":"The event data structure"},"ResourceSpecificationCharacteristic":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A link to the schema describing this characteristic specification"},"@type":{"type":"string","description":"(Class) type of the ResourceSpecificationCharacteristic"},"@valueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type"},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the ResourceSpecificationCharacteristic is configurable"},"description":{"type":"string","description":"A narrative that explains the CharacteristicSpecification."},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource."},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"resourceSpecCharRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecCharRelationship"}},"resourceSpecificationCharacteristicValue":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationCharacteristicValue"}},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which a characteristic is applicable.","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"}},"title":"ResourceSpecificationCharacteristic","description":"This class defines the characteristic features of a resource specification. Every ResourceSpecification has a variety of important attributes, methods, constraints, and relationships, which distinguish a resource specification from other resource specifications."},"ResourceSpecificationCharacteristicReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A link to the schema describing this characteristic specification"},"@type":{"type":"string","description":"(Class) type of the ResourceSpecificationCharacteristic"},"@valueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type"},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the ResourceSpecificationCharacteristic is configurable"},"description":{"type":"string","description":"A narrative that explains the CharacteristicSpecification."},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource."},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"resourceSpecCharRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecCharRelationship"}},"resourceSpecificationCharacteristicValue":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationCharacteristicValue"}},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which a characteristic is applicable.","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"}},"title":"ResourceSpecificationCharacteristicReq","description":"This class defines the characteristic features of a resource specification. Every ResourceSpecification has a variety of important attributes, methods, constraints, and relationships, which distinguish a resource specification from other resource specifications."},"ResourceSpecificationCharacteristicRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A link to the schema describing this characteristic specification"},"@type":{"type":"string","description":"(Class) type of the ResourceSpecificationCharacteristic"},"@valueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type"},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the ResourceSpecificationCharacteristic is configurable"},"description":{"type":"string","description":"A narrative that explains the CharacteristicSpecification."},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource."},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"resourceSpecCharRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecCharRelationship"}},"resourceSpecCharacteristicValue":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationCharacteristicValue"}},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which a characteristic is applicable.","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"}},"title":"ResourceSpecificationCharacteristicRes","description":"This class defines the characteristic features of a resource specification. Every ResourceSpecification has a variety of important attributes, methods, constraints, and relationships, which distinguish a resource specification from other resource specifications."},"ResourceSpecificationCharacteristicValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type"},"@type":{"type":"string","description":"The class type of a complex value type"},"href":{"type":"string","description":"Unique reference of the entity"},"isDefault":{"type":"boolean","description":"If true, the Boolean Indicates if the value is the default value for a characteristic"},"rangeInterval":{"type":"string","description":"An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are \"open\", \"closed\", \"closedBottom\" and \"closedTop\"."},"regex":{"type":"string","description":"A regular expression constraint for given value"},"unitOfMeasure":{"type":"string","description":"A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot."},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which a value is applicable.","$ref":"#/definitions/TimePeriod"},"value":{"description":"The value that the characteristic can take on. If the value is a complex type, the definition of the type should be found by the link as defined in @schemaLocation","$ref":"#/definitions/Any"},"valueFrom":{"type":"integer","format":"int32","description":"The low range value that a characteristic can take on"},"valueTo":{"type":"integer","format":"int32","description":"The upper range value that a characteristic can take on"},"valueType":{"type":"string","description":"A kind of value that the characteristic value can take on, such as numeric, text and so forth"}},"title":"ResourceSpecificationCharacteristicValue","description":"A number or text that can be assigned to a ResourceSpecCharacteristic."},"ResourceSpecificationCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceSpecificationCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceSpecificationCreateEvent","description":"The notification data structure"},"ResourceSpecificationCreateEventPayload":{"type":"object","properties":{"resourceSpecification":{"$ref":"#/definitions/ResourceSpecification"}},"title":"ResourceSpecificationCreateEventPayload","description":"The event data structure"},"ResourceSpecificationDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceSpecificationDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceSpecificationDeleteEvent","description":"The notification data structure"},"ResourceSpecificationDeleteEventPayload":{"type":"object","properties":{"resourceSpecification":{"$ref":"#/definitions/ResourceSpecification"}},"title":"ResourceSpecificationDeleteEventPayload","description":"The event data structure"},"ResourceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"version":{"type":"string","description":"Resource specification version"}},"title":"ResourceSpecificationRef","description":"Resource Specification reference: The ResourceSpecification is required to realize a ProductSpecification."},"ResourceSpecificationRelationship":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"defaultQuantity":{"type":"integer","format":"int32","description":"The default number of the related resource that should be instantiated, for example a rack would typically have 4 cards, although it could support more."},"href":{"type":"string","description":"Reference of the target ResourceSpecification"},"id":{"type":"string","description":"Unique identifier of target ResourceSpecification"},"maximumQuantity":{"type":"integer","format":"int32","description":"The maximum number of the related resource that should be instantiated, for example a rack supports a maximum of 16 cards"},"minimumQuantity":{"type":"integer","format":"int32","description":"The minimum number of the related resource that should be instantiated, for example a rack must have at least 1 card"},"name":{"type":"string","description":"The name given to the target resource specification instance"},"relationshipType":{"type":"string","description":"Type of relationship such as migration, substitution, dependency, exclusivity"},"resourceSpecCharacteristic":{"type":"array","description":"A characteristic that refines the relationship. For example, consider the relationship between a slot and a card. For a half-height card it is important to know the position at which the card is inserted, so a characteristic Position might be defined on the relationship to allow capturing of this in the inventory","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationCharacteristic"}},"role":{"type":"string","description":"The association role for this resource specification"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"ResourceSpecificationRelationship","description":"A migration, substitution, dependency or exclusivity relationship between/among resource specifications."},"ResourceSpecificationRelationshipReq":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"defaultQuantity":{"type":"integer","format":"int32","description":"The default number of the related resource that should be instantiated, for example a rack would typically have 4 cards, although it could support more."},"href":{"type":"string","description":"Reference of the target ResourceSpecification"},"id":{"type":"string","description":"Unique identifier of target ResourceSpecification"},"maximumQuantity":{"type":"integer","format":"int32","description":"The maximum number of the related resource that should be instantiated, for example a rack supports a maximum of 16 cards"},"minimumQuantity":{"type":"integer","format":"int32","description":"The minimum number of the related resource that should be instantiated, for example a rack must have at least 1 card"},"name":{"type":"string","description":"The name given to the target resource specification instance"},"relationshipType":{"type":"string","description":"Type of relationship such as migration, substitution, dependency, exclusivity"},"resourceSpecCharacteristic":{"type":"array","description":"A characteristic that refines the relationship. For example, consider the relationship between a slot and a card. For a half-height card it is important to know the position at which the card is inserted, so a characteristic Position might be defined on the relationship to allow capturing of this in the inventory","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationCharacteristicReq"}},"role":{"type":"string","description":"The association role for this resource specification"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"ResourceSpecificationRelationshipReq","description":"A migration, substitution, dependency or exclusivity relationship between/among resource specifications."},"ResourceSpecificationRelationshipRes":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"defaultQuantity":{"type":"integer","format":"int32","description":"The default number of the related resource that should be instantiated, for example a rack would typically have 4 cards, although it could support more."},"href":{"type":"string","description":"Reference of the target ResourceSpecification"},"id":{"type":"string","description":"Unique identifier of target ResourceSpecification"},"maximumQuantity":{"type":"integer","format":"int32","description":"The maximum number of the related resource that should be instantiated, for example a rack supports a maximum of 16 cards"},"minimumQuantity":{"type":"integer","format":"int32","description":"The minimum number of the related resource that should be instantiated, for example a rack must have at least 1 card"},"name":{"type":"string","description":"The name given to the target resource specification instance"},"relationshipType":{"type":"string","description":"Type of relationship such as migration, substitution, dependency, exclusivity"},"resourceSpecCharacteristic":{"type":"array","description":"A characteristic that refines the relationship. For example, consider the relationship between a slot and a card. For a half-height card it is important to know the position at which the card is inserted, so a characteristic Position might be defined on the relationship to allow capturing of this in the inventory","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationCharacteristicRes"}},"role":{"type":"string","description":"The association role for this resource specification"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"ResourceSpecificationRelationshipRes","description":"A migration, substitution, dependency or exclusivity relationship between/among resource specifications."},"ResourceSpecificationUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"attachment":{"type":"array","description":"Complements the description of an element (for instance a resource) through video, pictures ...","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the target resource like NetworkConnectivity, PhysicalLinks, Generic, L2Network and so on."},"description":{"type":"string","description":"Description of this REST resource"},"featureSpecification":{"type":"array","description":"A list of Features for this specification.","items":{"$ref":"#/definitions/FeatureSpecificationReq"}},"isBundle":{"type":"boolean","description":"A flag indicates that if this resource specification is a bundled specification (true) or single (false)."},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of the resource specification"},"name":{"type":"string","description":"Name given to this REST resource"},"relatedParty":{"type":"array","description":"A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"resourceSpecCharacteristic":{"type":"array","description":"A characteristic quality or distinctive feature of a ResourceSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process.","items":{"$ref":"#/definitions/ResourceSpecificationCharacteristicReq"}},"resourceSpecRelationship":{"type":"array","description":"A migration, substitution, dependency or exclusivity relationship between/among resource specifications.","items":{"$ref":"#/definitions/ResourceSpecificationRelationshipReq"}},"targetResourceSchema":{"$ref":"#/definitions/TargetResourceSchema"},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Resource Specification version"}},"title":"ResourceSpecificationUpdate","description":"Resources are physical or non-physical components (or some combination of these) within an enterprise's infrastructure or inventory. They are typically consumed or used by services (for example a physical port assigned to a service) or contribute to the realization of a Product (for example, a SIM card). They can be drawn from the Application, Computing and Network domains, and include, for example, Network Elements, software, IT systems, content and information, and technology components. A ResourceSpecification is an abstract base class for representing a generic means for implementing a particular type of Resource. In essence, a ResourceSpecification defines the common attributes and relationships of a set of related Resources, while Resource defines a specific instance that is based on a particular ResourceSpecification. Skipped properties: id,href"},"TargetResourceSchema":{"type":"object","required":["atSchemaLocation","atType"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"This field provides a link to the schema describing the target resource"},"atType":{"type":"string","description":"Class type of the target resource"}},"title":"TargetResourceSchema","description":"The reference object to the schema and type of target resource which is described by resource specification"},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} diff --git a/src/assets/swagger_collections/TFM639 - Resource Inventory Management.json b/src/assets/swagger_collections/TFM639 - Resource Inventory Management.json new file mode 100644 index 0000000000000000000000000000000000000000..25b6186faa39b1c45e2b9b2dd248db0c11259653 --- /dev/null +++ b/src/assets/swagger_collections/TFM639 - Resource Inventory Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference: TMF639 - Resource Inventory ### Release : 19.5 - December 2019 Resource Inventory API goal is to provide the ability to manage Resources. ### Operations Resource Inventory API performs the following operations on the resources : - Retrieve an entity or a collection of entities depending on filter criteria - Partial update of an entity (including updating rules) - Create an entity (including default values and creation rules) - Delete an entity (for administration purposes) - Manage notification of events","version":"4.0.0","title":"API Resource Inventory Management","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","tags":[{"name":"hub-api-controller","description":"the hub API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"resource-api-controller","description":"the resource API"}],"paths":{"/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_6","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_6","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/listener/resourceAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification ResourceAttributeValueChangeEvent","operationId":"listenToResourceAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/listener/resourceCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceCreateEvent","description":"Example of a client listener for receiving the notification ResourceCreateEvent","operationId":"listenToResourceCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/listener/resourceDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceDeleteEvent","description":"Example of a client listener for receiving the notification ResourceDeleteEvent","operationId":"listenToResourceDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/listener/resourceStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceStateChangeEvent","description":"Example of a client listener for receiving the notification ResourceStateChangeEvent","operationId":"listenToResourceStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceInventoryManagement/v4/resource":{"get":{"tags":["resource"],"summary":"List or find Resource objects","description":"This operation list or find Resource entities","operationId":"listResource","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"name","in":"query","required":false,"type":"string"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Resource"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["resource"],"summary":"Creates a Resource","description":"This operation creates a Resource entity.","operationId":"createResource","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"name","in":"query","required":false,"type":"string"},{"in":"body","name":"resource","description":"The Resource to be created","required":true,"schema":{"$ref":"#/definitions/ResourceCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Resource"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Resource"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/resourceInventoryManagement/v4/resource/{id}":{"get":{"tags":["resource"],"summary":"Retrieves a Resource by ID","description":"This operation retrieves a Resource entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveResource","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the Resource","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Resource"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["resource"],"summary":"Deletes a Resource","description":"This operation deletes a Resource entity.","operationId":"deleteResource","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Resource","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["resource"],"summary":"Updates partially a Resource","description":"This operation updates partially a Resource entity.","operationId":"patchResource","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Resource","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"},{"in":"body","name":"resource","description":"The Resource to be updated","required":true,"schema":{"$ref":"#/definitions/ResourceUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Resource"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"AttachmentRefOrValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"attachmentType":{"type":"string","example":"video","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","example":"Photograph of the Product","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","example":"4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"$ref":"#/definitions/Quantity"},"url":{"type":"string","example":"http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"AttachmentRefOrValue","description":"An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture."},"Characteristic":{"type":"object","required":["name","value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRelationship"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the characteristic"},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"Characteristic","description":"Describes a given characteristic of an object or entity through a name/value pair."},"CharacteristicRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"The type of relationship"},"uuid":{"type":"string"}},"title":"CharacteristicRelationship","description":"Another Characteristic that is related to the current Characteristic;"},"CharacteristicRelationshipReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"The type of relationship"},"uuid":{"type":"string"}},"title":"CharacteristicRelationshipReq","description":"Another Characteristic that is related to the current Characteristic;"},"CharacteristicRelationshipRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the characteristic"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"The type of relationship"},"uuid":{"type":"string"}},"title":"CharacteristicRelationshipRes","description":"Another Characteristic that is related to the current Characteristic;"},"CharacteristicReq":{"type":"object","required":["name","value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRelationshipReq"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the characteristic"},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"CharacteristicReq","description":"Describes a given characteristic of an object or entity through a name/value pair."},"CharacteristicRes":{"type":"object","required":["name","value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRelationshipRes"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the characteristic"},"name":{"type":"string","description":"Name of the characteristic"},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"CharacteristicRes","description":"Describes a given characteristic of an object or entity through a name/value pair."},"ConstraintRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string","description":"unique identifier"},"name":{"type":"string","description":"Name of the related entity."},"uuid":{"type":"string"},"version":{"type":"string","description":"constraint version"}},"title":"ConstraintRef","description":"Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"string","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"string","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"Feature":{"type":"object","required":["featureCharacteristic","name"],"properties":{"constraint":{"type":"array","description":"This is a list of feature constraints.","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureCharacteristic":{"type":"array","description":"This is a list of Characteristics for a particular feature.","uniqueItems":true,"items":{"$ref":"#/definitions/Characteristic"}},"featureRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRelationship"}},"id":{"type":"string"},"isBundle":{"type":"boolean","description":"True if this is a feature group. Default is false."},"isEnabled":{"type":"boolean","description":"True if this feature is enabled. Default is true."},"name":{"type":"string","description":"This is the name for the feature."}},"title":"Feature","description":"Configuration feature."},"FeatureRelationship":{"type":"object","required":["relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the target feature."},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"This is the type of the feature relationship."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"FeatureRelationship","description":"Configuration feature"},"FeatureReq":{"type":"object","required":["featureCharacteristic","name"],"properties":{"constraint":{"type":"array","description":"This is a list of feature constraints.","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureCharacteristic":{"type":"array","description":"This is a list of Characteristics for a particular feature.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicReq"}},"featureRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRelationship"}},"id":{"type":"string"},"isBundle":{"type":"boolean","description":"True if this is a feature group. Default is false."},"isEnabled":{"type":"boolean","description":"True if this feature is enabled. Default is true."},"name":{"type":"string","description":"This is the name for the feature."}},"title":"FeatureReq","description":"Configuration feature."},"FeatureRes":{"type":"object","required":["featureCharacteristic","name"],"properties":{"constraint":{"type":"array","description":"This is a list of feature constraints.","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureCharacteristic":{"type":"array","description":"This is a list of Characteristics for a particular feature.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRes"}},"featureRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRelationship"}},"id":{"type":"string","description":"Unique identifier of the feature."},"isBundle":{"type":"boolean","description":"True if this is a feature group. Default is false."},"isEnabled":{"type":"boolean","description":"True if this feature is enabled. Default is true."},"name":{"type":"string","description":"This is the name for the feature."}},"title":"FeatureRes","description":"Configuration feature."},"Note":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"author":{"type":"string","description":"Author of the note"},"date":{"type":"string","description":"Date of the note"},"href":{"type":"string","description":"Unique reference of the entity"},"system":{"type":"string","description":"Describes the system from which the action related to this note was done"},"text":{"type":"string","description":"Text of the note"},"uuid":{"type":"string"}},"title":"Note","description":"Extra information about a given entity"},"Quantity":{"type":"object","properties":{"amount":{"type":"number","format":"float","description":"Numeric value in a given unit"},"units":{"type":"string","description":"Unit"}},"title":"Quantity","description":"An amount in a given unit"},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"RelatedPlaceRefOrValue":{"type":"object","required":["role"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the place"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string"},"uuid":{"type":"string"}},"title":"RelatedPlaceRefOrValue","description":"Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself"},"Resource":{"type":"object","required":["href","id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRes"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"attachment":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"href":{"type":"string","description":"The URI for the object itself."},"id":{"type":"string","description":"Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type."},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRes"}},"resourceRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRelationshipRes"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]},"uuid":{"type":"string"}},"title":"Resource","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources (e.g. TPE, EQUIPMENT) in the inventory."},"Resource0":{"type":"object","required":["href"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","uniqueItems":true,"items":{"$ref":"#/definitions/Feature"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"attachment":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"href":{"type":"string","description":"The URI for the object itself."},"id":{"type":"string"},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Characteristic"}},"resourceRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRelationship"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]},"uuid":{"type":"string"}},"title":"Resource0","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources (e.g. TPE, EQUIPMENT) in the inventory."},"ResourceAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceAttributeValueChangeEvent","description":"The notification data structure"},"ResourceAttributeValueChangeEventPayload":{"type":"object","properties":{"resource":{"$ref":"#/definitions/Resource"}},"title":"ResourceAttributeValueChangeEventPayload","description":"The event data structure"},"ResourceCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","items":{"$ref":"#/definitions/FeatureReq"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"attachment":{"type":"array","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","items":{"$ref":"#/definitions/CharacteristicReq"}},"resourceRelationship":{"type":"array","items":{"$ref":"#/definitions/ResourceRelationshipReq"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]}},"title":"ResourceCreate","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources (e.g. TPE, EQUIPMENT) in the inventory. Skipped properties: id,href"},"ResourceCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceCreateEvent","description":"The notification data structure"},"ResourceCreateEventPayload":{"type":"object","properties":{"resource":{"$ref":"#/definitions/Resource0"}},"title":"ResourceCreateEventPayload","description":"The event data structure"},"ResourceDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceDeleteEvent","description":"The notification data structure"},"ResourceDeleteEventPayload":{"type":"object","properties":{"resource":{"$ref":"#/definitions/Resource"}},"title":"ResourceDeleteEventPayload","description":"The event data structure"},"ResourceRefOrValue":{"type":"object","required":["href"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","uniqueItems":true,"items":{"$ref":"#/definitions/Feature"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"attachment":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"href":{"type":"string","description":"The URI for the object itself."},"id":{"type":"string"},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Characteristic"}},"resourceRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRelationship"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]},"uuid":{"type":"string"}},"title":"ResourceRefOrValue","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself"},"ResourceRefOrValueReq":{"type":"object","required":["href"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureReq"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"attachment":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"href":{"type":"string","description":"The URI for the object itself."},"id":{"type":"string"},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicReq"}},"resourceRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRelationshipReq"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]},"uuid":{"type":"string"}},"title":"ResourceRefOrValueReq","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself"},"ResourceRefOrValueRes":{"type":"object","required":["href","id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRes"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"attachment":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"href":{"type":"string","description":"The URI for the object itself."},"id":{"type":"string","description":"Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type."},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRes"}},"resourceRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRelationshipRes"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]},"uuid":{"type":"string"}},"title":"ResourceRefOrValueRes","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself"},"ResourceRelationship":{"type":"object","required":["relationshipType","resource"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"relationshipType":{"type":"string","example":"bundled","description":"Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"resource":{"$ref":"#/definitions/ResourceRefOrValue"},"uuid":{"type":"string"}},"title":"ResourceRelationship","description":"Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"ResourceRelationshipReq":{"type":"object","required":["relationshipType","resource"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"relationshipType":{"type":"string","example":"bundled","description":"Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"resource":{"$ref":"#/definitions/ResourceRefOrValueReq"},"uuid":{"type":"string"}},"title":"ResourceRelationshipReq","description":"Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"ResourceRelationshipRes":{"type":"object","required":["relationshipType","resource"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"unique identifier"},"relationshipType":{"type":"string","example":"bundled","description":"Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"resource":{"$ref":"#/definitions/ResourceRefOrValueRes"},"uuid":{"type":"string"}},"title":"ResourceRelationshipRes","description":"Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"ResourceSpecificationRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"unique identifier"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"version":{"type":"string","description":"Resource Specification version"}},"title":"ResourceSpecificationRef","description":"Resources are physical or non-physical components (or some combination of these) within an enterprise's infrastructure or inventory. They are typically consumed or used by services (for example a physical port assigned to a service) or contribute to the realization of a Product (for example, a SIM card). They can be drawn from the Application, Computing and Network domains, and include, for example, Network Elements, software, IT systems, content and information, and technology components. A ResourceSpecification is an abstract base class for representing a generic means for implementing a particular type of Resource. In essence, a ResourceSpecification defines the common attributes and relationships of a set of related Resources, while Resource defines a specific instance that is based on a particular ResourceSpecification."},"ResourceStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceStateChangeEvent","description":"The notification data structure"},"ResourceStateChangeEventPayload":{"type":"object","properties":{"resource":{"$ref":"#/definitions/Resource"}},"title":"ResourceStateChangeEventPayload","description":"The event data structure"},"ResourceUpdate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","items":{"$ref":"#/definitions/FeatureReq"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"attachment":{"type":"array","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","items":{"$ref":"#/definitions/CharacteristicReq"}},"resourceRelationship":{"type":"array","items":{"$ref":"#/definitions/ResourceRelationshipReq"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]}},"title":"ResourceUpdate","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources (e.g. TPE, EQUIPMENT) in the inventory. Skipped properties: id,href"},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} diff --git a/src/assets/swagger_collections/TFM652 - Resource Order Management.json b/src/assets/swagger_collections/TFM652 - Resource Order Management.json new file mode 100644 index 0000000000000000000000000000000000000000..026b58e65193f555a251ad8f6547fc01d1c67ce0 --- /dev/null +++ b/src/assets/swagger_collections/TFM652 - Resource Order Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"This is Swagger UI environment generated for the TMF Agreement Management specification","version":"4.0.0","title":"Agreement Management","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","tags":[{"name":"cancel-resource-order-api-controller","description":"the cancelResourceOrder API"},{"name":"hub-api-controller","description":"the hub API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"resource-order-api-controller","description":"the resourceOrder API"}],"paths":{"/tmf-api/cancelResourceOrder":{"get":{"tags":["cancelResourceOrder"],"summary":"List or find CancelResourceOrder objects","description":"This operation list or find CancelResourceOrder entities","operationId":"listCancelResourceOrder","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/CancelResourceOrder"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["cancelResourceOrder"],"summary":"Creates a CancelResourceOrder","description":"This operation creates a CancelResourceOrder entity.","operationId":"createCancelResourceOrder","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The CancelResourceOrder to be created","required":true,"schema":{"$ref":"#/definitions/CancelResourceOrderCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/CancelResourceOrder"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/CancelResourceOrder"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/cancelResourceOrder/{id}":{"get":{"tags":["cancelResourceOrder"],"summary":"Retrieves a CancelResourceOrder by ID","description":"This operation retrieves a CancelResourceOrder entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveCancelResourceOrder","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the CancelResourceOrder","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/CancelResourceOrder"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_10","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_10","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CancelResourceOrderCreateEvent","description":"Example of a client listener for receiving the notification CancelResourceOrderCreateEvent","operationId":"listenToCancelResourceOrderCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CancelResourceOrderCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderInformationRequiredEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CancelResourceOrderInformationRequiredEvent","description":"Example of a client listener for receiving the notification CancelResourceOrderInformationRequiredEvent","operationId":"listenToCancelResourceOrderInformationRequiredEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CancelResourceOrderInformationRequiredEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/listener/cancelResourceOrderStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CancelResourceOrderStateChangeEvent","description":"Example of a client listener for receiving the notification CancelResourceOrderStateChangeEvent","operationId":"listenToCancelResourceOrderStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CancelResourceOrderStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceOrderAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification ResourceOrderAttributeValueChangeEvent","operationId":"listenToResourceOrderAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceOrderAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceOrderCreateEvent","description":"Example of a client listener for receiving the notification ResourceOrderCreateEvent","operationId":"listenToResourceOrderCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceOrderCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceOrderDeleteEvent","description":"Example of a client listener for receiving the notification ResourceOrderDeleteEvent","operationId":"listenToResourceOrderDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceOrderDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderInformationRequiredEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceOrderInformationRequiredEvent","description":"Example of a client listener for receiving the notification ResourceOrderInformationRequiredEvent","operationId":"listenToResourceOrderInformationRequiredEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceOrderInformationRequiredEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/listener/resourceOrderStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ResourceOrderStateChangeEvent","description":"Example of a client listener for receiving the notification ResourceOrderStateChangeEvent","operationId":"listenToResourceOrderStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ResourceOrderStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/resourceOrder":{"get":{"tags":["resourceOrder"],"summary":"List or find ResourceOrder objects","description":"This operation list or find ResourceOrder entities","operationId":"listResourceOrder","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ResourceOrder"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["resourceOrder"],"summary":"Creates a ResourceOrder","description":"This operation creates a ResourceOrder entity.","operationId":"createResourceOrder","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"name","in":"query","required":false,"type":"string"},{"in":"body","name":"roCreate","description":"The ResourceOrder to be created","required":true,"schema":{"$ref":"#/definitions/ResourceOrderCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourceOrder"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourceOrder"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourceOrderingManagement/v4/resourceOrder/{id}":{"get":{"tags":["resourceOrder"],"summary":"Retrieves a ResourceOrder by ID","description":"This operation retrieves a ResourceOrder entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveResourceOrder","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ResourceOrder","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ResourceOrder"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["resourceOrder"],"summary":"Deletes a ResourceOrder","description":"This operation deletes a ResourceOrder entity.","operationId":"deleteResourceOrder","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ResourceOrder","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["resourceOrder"],"summary":"Updates partially a ResourceOrder","description":"This operation updates partially a ResourceOrder entity.","operationId":"patchResourceOrder","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ResourceOrder to be updated","required":true,"schema":{"$ref":"#/definitions/ResourceOrderUpdate"}},{"name":"id","in":"path","description":"Identifier of the ResourceOrder","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ResourceOrder"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"AppointmentRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"An explanatory text regarding the appointment made with a party"},"href":{"type":"string","description":"The reference of the appointment"},"id":{"type":"string","description":"The identifier of the referred appointment"}},"title":"AppointmentRef","description":"Refers an appointment, such as a Customer presentation or internal meeting or site visit"},"AttachmentRefOrValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"attachmentType":{"type":"string","example":"video","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","example":"Photograph of the Product","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","example":"4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"$ref":"#/definitions/Quantity"},"url":{"type":"string","example":"http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"AttachmentRefOrValue","description":"An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture."},"CancelResourceOrder":{"type":"object","required":["resourceOrder"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"cancellationReason":{"type":"string","description":"Reason why the order is cancelled."},"effectiveCancellationDate":{"type":"string","format":"date-time","description":"Date when the order is cancelled."},"href":{"type":"string","description":"Hyperlink to access the cancellation request"},"id":{"type":"string","description":"id of the cancellation request (this is not an order id)"},"requestedCancellationDate":{"type":"string","format":"date-time","description":"Date when the submitter wants the order to be cancelled"},"resourceOrder":{"$ref":"#/definitions/ResourceOrderRef"},"state":{"type":"string","enum":["acknowledged","done","inProgress","terminatedWithError"]}},"title":"CancelResourceOrder","description":"Request for cancellation an existing resource order"},"CancelResourceOrderCreate":{"type":"object","required":["resourceOrder"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"cancellationReason":{"type":"string","description":"Reason why the order is cancelled."},"requestedCancellationDate":{"type":"string","format":"date-time","description":"Date when the submitter wants the order to be cancelled"},"resourceOrder":{"$ref":"#/definitions/ResourceOrderRef"}},"title":"CancelResourceOrderCreate","description":"Request for cancellation an existing resource order Skipped properties: id,href,state,effectiveCancellationDate"},"CancelResourceOrderCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/CancelResourceOrderCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CancelResourceOrderCreateEvent","description":"The notification data structure"},"CancelResourceOrderCreateEventPayload":{"type":"object","properties":{"cancelResourceOrder":{"$ref":"#/definitions/CancelResourceOrder"}},"title":"CancelResourceOrderCreateEventPayload","description":"The event data structure"},"CancelResourceOrderInformationRequiredEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/CancelResourceOrderInformationRequiredEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CancelResourceOrderInformationRequiredEvent","description":"The notification data structure"},"CancelResourceOrderInformationRequiredEventPayload":{"type":"object","properties":{"cancelResourceOrder":{"$ref":"#/definitions/CancelResourceOrder"}},"title":"CancelResourceOrderInformationRequiredEventPayload","description":"The event data structure"},"CancelResourceOrderStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/CancelResourceOrderStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CancelResourceOrderStateChangeEvent","description":"The notification data structure"},"CancelResourceOrderStateChangeEventPayload":{"type":"object","properties":{"cancelResourceOrder":{"$ref":"#/definitions/CancelResourceOrder"}},"title":"CancelResourceOrderStateChangeEventPayload","description":"The event data structure"},"Characteristic":{"type":"object","required":["name","value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRelationship"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the characteristic"},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"Characteristic","description":"Describes a given characteristic of an object or entity through a name/value pair."},"CharacteristicRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"The type of relationship"},"uuid":{"type":"string"}},"title":"CharacteristicRelationship","description":"Another Characteristic that is related to the current Characteristic;"},"CharacteristicRelationshipReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"The type of relationship"},"uuid":{"type":"string"}},"title":"CharacteristicRelationshipReq","description":"Another Characteristic that is related to the current Characteristic;"},"CharacteristicRelationshipRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the characteristic"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"The type of relationship"},"uuid":{"type":"string"}},"title":"CharacteristicRelationshipRes","description":"Another Characteristic that is related to the current Characteristic;"},"CharacteristicReq":{"type":"object","required":["name","value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRelationshipReq"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the characteristic"},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"CharacteristicReq","description":"Describes a given characteristic of an object or entity through a name/value pair."},"CharacteristicRes":{"type":"object","required":["name","value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRelationshipRes"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the characteristic"},"name":{"type":"string","description":"Name of the characteristic"},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"CharacteristicRes","description":"Describes a given characteristic of an object or entity through a name/value pair."},"ConstraintRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string","description":"unique identifier"},"name":{"type":"string","description":"Name of the related entity."},"uuid":{"type":"string"},"version":{"type":"string","description":"constraint version"}},"title":"ConstraintRef","description":"Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec."},"Error":{"type":"object","properties":{"cause":{"$ref":"#/definitions/Throwable"},"localizedMessage":{"type":"string"},"message":{"type":"string"},"stackTrace":{"type":"array","items":{"$ref":"#/definitions/StackTraceElement"}},"suppressed":{"type":"array","items":{"$ref":"#/definitions/Throwable"}}},"title":"Error"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"ExternalId":{"type":"object","required":["entityType","id","owner"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"entityType":{"type":"string","description":"Type of the entity within the external system"},"id":{"type":"string","description":"ID of the entity within the external system."},"owner":{"type":"string","description":"Name of the external system that owns the entity."}},"title":"ExternalId","description":"An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list."},"Feature":{"type":"object","required":["featureCharacteristic","name"],"properties":{"constraint":{"type":"array","description":"This is a list of feature constraints.","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureCharacteristic":{"type":"array","description":"This is a list of Characteristics for a particular feature.","uniqueItems":true,"items":{"$ref":"#/definitions/Characteristic"}},"featureRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRelationship"}},"id":{"type":"string"},"isBundle":{"type":"boolean","description":"True if this is a feature group. Default is false."},"isEnabled":{"type":"boolean","description":"True if this feature is enabled. Default is true."},"name":{"type":"string","description":"This is the name for the feature."}},"title":"Feature","description":"Configuration feature."},"FeatureRelationship":{"type":"object","required":["relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the target feature."},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"This is the type of the feature relationship."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"FeatureRelationship","description":"Configuration feature"},"FeatureReq":{"type":"object","required":["featureCharacteristic","name"],"properties":{"constraint":{"type":"array","description":"This is a list of feature constraints.","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureCharacteristic":{"type":"array","description":"This is a list of Characteristics for a particular feature.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicReq"}},"featureRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRelationship"}},"id":{"type":"string"},"isBundle":{"type":"boolean","description":"True if this is a feature group. Default is false."},"isEnabled":{"type":"boolean","description":"True if this feature is enabled. Default is true."},"name":{"type":"string","description":"This is the name for the feature."}},"title":"FeatureReq","description":"Configuration feature."},"FeatureRes":{"type":"object","required":["featureCharacteristic","name"],"properties":{"constraint":{"type":"array","description":"This is a list of feature constraints.","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"featureCharacteristic":{"type":"array","description":"This is a list of Characteristics for a particular feature.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRes"}},"featureRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRelationship"}},"id":{"type":"string","description":"Unique identifier of the feature."},"isBundle":{"type":"boolean","description":"True if this is a feature group. Default is false."},"isEnabled":{"type":"boolean","description":"True if this feature is enabled. Default is true."},"name":{"type":"string","description":"This is the name for the feature."}},"title":"FeatureRes","description":"Configuration feature."},"Note":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"author":{"type":"string","description":"Author of the note"},"date":{"type":"string","description":"Date of the note"},"href":{"type":"string","description":"Unique reference of the entity"},"system":{"type":"string","description":"Describes the system from which the action related to this note was done"},"text":{"type":"string","description":"Text of the note"},"uuid":{"type":"string"}},"title":"Note","description":"Extra information about a given entity"},"Quantity":{"type":"object","properties":{"amount":{"type":"number","format":"float","description":"Numeric value in a given unit"},"units":{"type":"string","description":"Unit"}},"title":"Quantity","description":"An amount in a given unit"},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"RelatedPlaceRefOrValue":{"type":"object","required":["role"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the place"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string"},"uuid":{"type":"string"}},"title":"RelatedPlaceRefOrValue","description":"Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself"},"ResourceOrder":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Used to categorize the order from a business perspective that can be useful for the OM system."},"completionDate":{"type":"string","description":"Effective delivery date amended by the provider"},"description":{"type":"string","description":"free-text description of the Resource Order"},"expectedCompletionDate":{"type":"string","description":"Expected delivery date amended by the provider"},"externalId":{"type":"string","description":"DEPRECATED: Use externalReference Instead. ID given by the consumer (to facilitate searches afterwards)"},"externalReference":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ExternalId"}},"href":{"type":"string","description":"Hyperlink to access the order"},"id":{"type":"string","description":"Identifier of an instance of the Resource Order. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type."},"name":{"type":"string","description":"A string used to give a name to the Resource Order"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"orderDate":{"type":"string"},"orderItem":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceOrderItemRes"}},"orderType":{"type":"string","description":"Name of the Resource Order type"},"priority":{"type":"integer","format":"int32","description":"A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"requestedCompletionDate":{"type":"string","description":"Requested delivery date from the requestor perspective"},"requestedStartDate":{"type":"string","description":"Order start date wished by the requestor"},"startDate":{"type":"string","description":"Date when the order was started for processing"},"state":{"type":"string","description":"The life cycle state of the resource."}},"title":"ResourceOrder","description":"A Resource Order is a request to provision a set of Resources (logical and physical) triggered by the request to provision a Service through a Service Order"},"ResourceOrderAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceOrderAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceOrderAttributeValueChangeEvent","description":"The notification data structure"},"ResourceOrderAttributeValueChangeEventPayload":{"type":"object","properties":{"resourceOrder":{"$ref":"#/definitions/ResourceOrder"}},"title":"ResourceOrderAttributeValueChangeEventPayload","description":"The event data structure"},"ResourceOrderCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Used to categorize the order from a business perspective that can be useful for the OM system."},"completionDate":{"type":"string","format":"date-time","description":"Date when the order was completed"},"description":{"type":"string","description":"free-text description of the Resource Order"},"expectedCompletionDate":{"type":"string","format":"date-time","description":"Date when the order was completed"},"externalId":{"type":"string","description":"DEPRECATED: Use externalReference Instead. ID given by the consumer (to facilitate searches afterwards)"},"externalReference":{"type":"array","items":{"$ref":"#/definitions/ExternalId"}},"name":{"type":"string","description":"A string used to give a name to the Resource Order"},"note":{"type":"array","items":{"$ref":"#/definitions/Note"}},"orderDate":{"type":"string","format":"date-time","description":"Date when the order was created"},"orderItem":{"type":"array","items":{"$ref":"#/definitions/ResourceOrderItemReq"}},"orderType":{"type":"string","description":"Name of the Resource Order type"},"priority":{"type":"integer","format":"int32","description":"A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"requestedCompletionDate":{"type":"string","description":"Requested delivery date from the requestor perspective"},"requestedStartDate":{"type":"string","description":"Order start date wished by the requestor"},"startDate":{"type":"string","format":"date-time","description":"Date when the order was actually started"},"state":{"type":"string","description":"The life cycle state of the resource."}},"title":"ResourceOrderCreate","description":"A Resource Order is a request to provision a set of Resources (logical and physical) triggered by the request to provision a Service through a Service Order Skipped properties: id,href"},"ResourceOrderCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceOrderCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceOrderCreateEvent","description":"The notification data structure"},"ResourceOrderCreateEventPayload":{"type":"object","properties":{"resourceOrder":{"$ref":"#/definitions/ResourceOrder"}},"title":"ResourceOrderCreateEventPayload","description":"The event data structure"},"ResourceOrderDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceOrderDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceOrderDeleteEvent","description":"The notification data structure"},"ResourceOrderDeleteEventPayload":{"type":"object","properties":{"resourceOrder":{"$ref":"#/definitions/ResourceOrder"}},"title":"ResourceOrderDeleteEventPayload","description":"The event data structure"},"ResourceOrderInformationRequiredEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceOrderInformationRequiredEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceOrderInformationRequiredEvent","description":"The notification data structure"},"ResourceOrderInformationRequiredEventPayload":{"type":"object","properties":{"resourceOrder":{"$ref":"#/definitions/ResourceOrder"}},"title":"ResourceOrderInformationRequiredEventPayload","description":"The event data structure"},"ResourceOrderItem":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"action":{"type":"string","description":"Can be \"add\" / \"modify\" / \"no_change\"/ \"delete\""},"appointment":{"$ref":"#/definitions/AppointmentRef"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"id":{"type":"string","description":"Identifier of the line item (generally it is a sequence number 01, 02, 03, ...)"},"orderItemRelationship":{"type":"array","items":{"$ref":"#/definitions/ResourceOrderItemRelationship"}},"quantity":{"type":"integer","format":"int32","description":"Quantity ordered"},"resource":{"$ref":"#/definitions/ResourceRefOrValue"},"resourceRefOrValue":{"$ref":"#/definitions/ResourceRefOrValue"},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"state":{"type":"string","description":"State of the order item : described in the state machine diagram","enum":["ACKNOWLEDGED","CANCELLED","COMPLETED","FAILED","HELD","INITIAL","INPROGRESS","PARTIAL","PENDING","REJECTED"]}},"title":"ResourceOrderItem","description":"An identified part of the order. A resource order is decomposed into one or more order items."},"ResourceOrderItemRef":{"type":"object","properties":{"@baseType":{"type":"string"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"itemId":{"type":"string","description":"Identifier of the line item"},"resourceOrderHref":{"type":"string","description":"Link to the order to which this item belongs to"},"resourceOrderId":{"type":"string","description":"Identifier of the order that this item belongs to"}},"title":"ResourceOrderItemRef"},"ResourceOrderItemRelationship":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"orderItem":{"$ref":"#/definitions/ResourceOrderItemRef"},"relationshipType":{"type":"string","description":"Type of the order item relationship"}},"title":"ResourceOrderItemRelationship"},"ResourceOrderItemReq":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"action":{"type":"string","description":"Can be \"add\" / \"modify\" / \"no_change\"/ \"delete\""},"appointment":{"$ref":"#/definitions/AppointmentRef"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"id":{"type":"string","description":"Identifier of the line item (generally it is a sequence number 01, 02, 03, ...)"},"orderItemRelationship":{"type":"array","items":{"$ref":"#/definitions/ResourceOrderItemRelationship"}},"quantity":{"type":"integer","format":"int32","description":"Quantity ordered"},"resource":{"$ref":"#/definitions/ResourceRefOrValueReq"},"resourceRefOrValue":{"$ref":"#/definitions/ResourceRefOrValueReq"},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"state":{"type":"string","description":"State of the order item : described in the state machine diagram","enum":["ACKNOWLEDGED","CANCELLED","COMPLETED","FAILED","HELD","INITIAL","INPROGRESS","PARTIAL","PENDING","REJECTED"]}},"title":"ResourceOrderItemReq","description":"An identified part of the order. A resource order is decomposed into one or more order items."},"ResourceOrderItemRes":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"action":{"type":"string","description":"Can be \"add\" / \"modify\" / \"no_change\"/ \"delete\""},"appointment":{"$ref":"#/definitions/AppointmentRef"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"id":{"type":"string","description":"Identifier of the line item (generally it is a sequence number 01, 02, 03, ...)"},"orderItemRelationship":{"type":"array","items":{"$ref":"#/definitions/ResourceOrderItemRelationship"}},"quantity":{"type":"integer","format":"int32","description":"Quantity ordered"},"resource":{"$ref":"#/definitions/ResourceRefOrValueRes"},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"state":{"type":"string","description":"State of the order item : described in the state machine diagram","enum":["ACKNOWLEDGED","CANCELLED","COMPLETED","FAILED","HELD","INITIAL","INPROGRESS","PARTIAL","PENDING","REJECTED"]}},"title":"ResourceOrderItemRes","description":"An identified part of the order. A resource order is decomposed into one or more order items."},"ResourceOrderRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"href":{"type":"string","description":"Hyperlink to access the related Resource Order"},"id":{"type":"string","description":"The unique identifier of the related resource order"}},"title":"ResourceOrderRef"},"ResourceOrderStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ResourceOrderStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ResourceOrderStateChangeEvent","description":"The notification data structure"},"ResourceOrderStateChangeEventPayload":{"type":"object","properties":{"resourceOrder":{"$ref":"#/definitions/ResourceOrder"}},"title":"ResourceOrderStateChangeEventPayload","description":"The event data structure"},"ResourceOrderUpdate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Used to categorize the order from a business perspective that can be useful for the OM system."},"description":{"type":"string","description":"free-text description of the Resource Order"},"expectedCompletionDate":{"type":"string","format":"date-time","description":"Date when the order was completed"},"externalId":{"type":"string","description":"DEPRECATED: Use externalReference Instead. ID given by the consumer (to facilitate searches afterwards)"},"externalReference":{"type":"array","items":{"$ref":"#/definitions/ExternalId"}},"name":{"type":"string","description":"A string used to give a name to the Resource Order"},"note":{"type":"array","items":{"$ref":"#/definitions/Note"}},"orderItem":{"type":"array","items":{"$ref":"#/definitions/ResourceOrderItemReq"}},"orderType":{"type":"string","description":"Name of the Resource Order type"},"priority":{"type":"integer","format":"int32","description":"A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"requestedCompletionDate":{"type":"string","format":"date-time","description":"Requested delivery date from the requestor perspective"},"requestedStartDate":{"type":"string","format":"date-time","description":"Order start date wished by the requestor"},"startDate":{"type":"string","format":"date-time","description":"Date when the order was actually started"},"state":{"type":"string","description":"The life cycle state of the resource."}},"title":"ResourceOrderUpdate","description":"A Resource Order is a request to provision a set of Resources (logical and physical) triggered by the request to provision a Service through a Service Order Skipped properties: id,href,completionDate,orderDate"},"ResourceRefOrValue":{"type":"object","required":["href","id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","uniqueItems":true,"items":{"$ref":"#/definitions/Feature"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"attachment":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"href":{"type":"string","description":"The URI for the object itself."},"id":{"type":"string","description":"Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type."},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Characteristic"}},"resourceRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRelationship"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]}},"title":"ResourceRefOrValue","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself"},"ResourceRefOrValueReq":{"type":"object","required":["href","id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureReq"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"attachment":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"href":{"type":"string","description":"The URI for the object itself."},"id":{"type":"string","description":"Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type."},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicReq"}},"resourceRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRelationshipReq"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]}},"title":"ResourceRefOrValueReq","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself"},"ResourceRefOrValueRes":{"type":"object","required":["href","id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"activationFeature":{"type":"array","description":"Configuration features","uniqueItems":true,"items":{"$ref":"#/definitions/FeatureRes"}},"administrativeState":{"type":"string","enum":["locked","shutdown","unlocked"]},"attachment":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"category":{"type":"string","description":"Category of the concrete resource. e.g Gold, Silver for MSISDN concrete resource"},"description":{"type":"string","description":"free-text description of the resource"},"endOperatingDate":{"type":"string","description":"A date time( DateTime). The date till the resource is operating"},"href":{"type":"string","description":"The URI for the object itself."},"id":{"type":"string","description":"Identifier of an instance of the resource. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type."},"name":{"type":"string","description":"A string used to give a name to the resource"},"note":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/Note"}},"operationalState":{"type":"string","enum":["disable","enable"]},"place":{"$ref":"#/definitions/RelatedPlaceRefOrValue"},"relatedParty":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceCharacteristic":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRes"}},"resourceRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRelationshipRes"}},"resourceSpecification":{"$ref":"#/definitions/ResourceSpecificationRef"},"resourceStatus":{"type":"string","enum":["alarm","available","reserved","standby","suspended","unknown"]},"resourceVersion":{"type":"string","description":"A field that identifies the specific version of an instance of a resource."},"startOperatingDate":{"type":"string","description":"A date time( DateTime). The date from which the resource is operating"},"usageState":{"type":"string","enum":["active","busy","idle"]}},"title":"ResourceRefOrValueRes","description":"Resource is an abstract entity that describes the common set of attributes shared by all concrete resources. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the related ResourceRefOrValue class itself"},"ResourceRelationship":{"type":"object","required":["relationshipType","resource"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"relationshipType":{"type":"string","example":"bundled","description":"Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"resource":{"$ref":"#/definitions/ResourceRefOrValue"},"uuid":{"type":"string"}},"title":"ResourceRelationship","description":"Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"ResourceRelationshipReq":{"type":"object","required":["relationshipType","resource"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"relationshipType":{"type":"string","example":"bundled","description":"Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"resource":{"$ref":"#/definitions/ResourceRefOrValueReq"},"uuid":{"type":"string"}},"title":"ResourceRelationshipReq","description":"Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"ResourceRelationshipRes":{"type":"object","required":["relationshipType","resource"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"unique identifier"},"relationshipType":{"type":"string","example":"bundled","description":"Type of the resource relationship, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (eg: an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"resource":{"$ref":"#/definitions/ResourceRefOrValueRes"},"uuid":{"type":"string"}},"title":"ResourceRelationshipRes","description":"Linked resources to the one instantiate, such as [bundled] if the resource is a bundle and you want to describe the bundled resources inside this bundle; [reliesOn] if the resource needs another already owned resource to rely on (e.g. an option on an already owned mobile access resource) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"},"ResourceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"version":{"type":"string","description":"Resource specification version"}},"title":"ResourceSpecificationRef","description":"Resource Specification reference: The ResourceSpecification is required to realize a ProductSpecification."},"StackTraceElement":{"type":"object","properties":{"classLoaderName":{"type":"string"},"className":{"type":"string"},"fileName":{"type":"string"},"lineNumber":{"type":"integer","format":"int32"},"methodName":{"type":"string"},"moduleName":{"type":"string"},"moduleVersion":{"type":"string"},"nativeMethod":{"type":"boolean"}},"title":"StackTraceElement"},"Throwable":{"type":"object","properties":{"cause":{"$ref":"#/definitions/Throwable"},"localizedMessage":{"type":"string"},"message":{"type":"string"},"stackTrace":{"type":"array","items":{"$ref":"#/definitions/StackTraceElement"}},"suppressed":{"type":"array","items":{"$ref":"#/definitions/Throwable"}}},"title":"Throwable"},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} diff --git a/src/assets/swagger_collections/TMF620 - Product Catalog Management.json b/src/assets/swagger_collections/TMF620 - Product Catalog Management.json new file mode 100644 index 0000000000000000000000000000000000000000..e722f149e9df4610e3a8de22f772c2f0685a0484 --- /dev/null +++ b/src/assets/swagger_collections/TMF620 - Product Catalog Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference: TMF620 - Product Catalog Management ### Release : 19.0 - June 2019 Product Catalog API is one of Catalog Management API Family. Product Catalog API goal is to provide a catalog of products. ### Operations Product Catalog API performs the following operations on the resources : - Retrieve an entity or a collection of entities depending on filter criteria - Partial update of an entity (including updating rules) - Create an entity (including default values and creation rules) - Delete an entity - Manage notification of events","version":"4.0.0","title":"Product Catalog Management","contact":{},"license":{"url":"http://www.apache.org/licenses/LICENSE-2.0.html"}},"host":"portal.5gasp.eu","tags":[{"name":"catalog-api-controller","description":"the catalog API"},{"name":"category-api-controller","description":"the category API"},{"name":"export-job-api-controller","description":"the exportJob API"},{"name":"hub-api-controller","description":"the hub API"},{"name":"import-job-api-controller","description":"the importJob API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"product-offering-api-controller","description":"the productOffering API"},{"name":"product-offering-price-api-controller","description":"the productOfferingPrice API"},{"name":"product-specification-api-controller","description":"the productSpecification API"}],"paths":{"/productCatalogManagement/v4/catalog":{"get":{"tags":["catalog"],"summary":"List or find Catalog objects","description":"This operation list or find Catalog entities","operationId":"listCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Catalog"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["catalog"],"summary":"Creates a Catalog","description":"This operation creates a Catalog entity.","operationId":"createCatalog","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"catalog","description":"The Catalog to be created","required":true,"schema":{"$ref":"#/definitions/CatalogCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Catalog"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Catalog"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/catalog/{id}":{"get":{"tags":["catalog"],"summary":"Retrieves a Catalog by ID","description":"This operation retrieves a Catalog entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the Catalog","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Catalog"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["catalog"],"summary":"Deletes a Catalog","description":"This operation deletes a Catalog entity.","operationId":"deleteCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Catalog","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["catalog"],"summary":"Updates partially a Catalog","description":"This operation updates partially a Catalog entity.","operationId":"patchCatalog","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"catalog","description":"The Catalog to be updated","required":true,"schema":{"$ref":"#/definitions/CatalogUpdate"}},{"name":"id","in":"path","description":"Identifier of the Catalog","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Catalog"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/category":{"get":{"tags":["category"],"summary":"List or find Category objects","description":"This operation list or find Category entities","operationId":"listCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Category"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["category"],"summary":"Creates a Category","description":"This operation creates a Category entity.","operationId":"createCategory","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"category","description":"The Category to be created","required":true,"schema":{"$ref":"#/definitions/CategoryCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Category"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Category"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/category/{id}":{"get":{"tags":["category"],"summary":"Retrieves a Category by ID","description":"This operation retrieves a Category entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the Category","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Category"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["category"],"summary":"Deletes a Category","description":"This operation deletes a Category entity.","operationId":"deleteCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Category","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["category"],"summary":"Updates partially a Category","description":"This operation updates partially a Category entity.","operationId":"patchCategory","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"category","description":"The Category to be updated","required":true,"schema":{"$ref":"#/definitions/CategoryUpdate"}},{"name":"id","in":"path","description":"Identifier of the Category","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Category"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/exportJob":{"get":{"tags":["exportJob"],"summary":"List or find ExportJob objects","description":"This operation list or find ExportJob entities","operationId":"listExportJob","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ExportJob"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["exportJob"],"summary":"Creates a ExportJob","description":"This operation creates a ExportJob entity.","operationId":"createExportJob","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"exportJob","description":"The ExportJob to be created","required":true,"schema":{"$ref":"#/definitions/ExportJobCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ExportJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ExportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/exportJob/{id}":{"get":{"tags":["exportJob"],"summary":"Retrieves a ExportJob by ID","description":"This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveExportJob","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ExportJob","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ExportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["exportJob"],"summary":"Deletes a ExportJob","description":"This operation deletes a ExportJob entity.","operationId":"deleteExportJob","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ExportJob","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Error"}},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Error"}},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/importJob":{"get":{"tags":["importJob"],"summary":"List or find ImportJob objects","description":"This operation list or find ImportJob entities","operationId":"listImportJob","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ImportJob"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["importJob"],"summary":"Creates a ImportJob","description":"This operation creates a ImportJob entity.","operationId":"createImportJob","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"importJob","description":"The ImportJob to be created","required":true,"schema":{"$ref":"#/definitions/ImportJobCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ImportJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ImportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/importJob/{id}":{"get":{"tags":["importJob"],"summary":"Retrieves a ImportJob by ID","description":"This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveImportJob","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ImportJob","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ImportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["importJob"],"summary":"Deletes a ImportJob","description":"This operation deletes a ImportJob entity.","operationId":"deleteImportJob","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ImportJob","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Error"}},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/catalogBatchEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CatalogBatchEvent","description":"Example of a client listener for receiving the notification CatalogBatchEvent","operationId":"listenToCatalogBatchEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CatalogBatchEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/catalogCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CatalogCreateEvent","description":"Example of a client listener for receiving the notification CatalogCreateEvent","operationId":"listenToCatalogCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CatalogCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/catalogDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CatalogDeleteEvent","description":"Example of a client listener for receiving the notification CatalogDeleteEvent","operationId":"listenToCatalogDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CatalogDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/categoryCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CategoryCreateEvent","description":"Example of a client listener for receiving the notification CategoryCreateEvent","operationId":"listenToCategoryCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CategoryCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/categoryDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CategoryDeleteEvent","description":"Example of a client listener for receiving the notification CategoryDeleteEvent","operationId":"listenToCategoryDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CategoryDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productOfferingAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductOfferingAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification ProductOfferingAttributeValueChangeEvent","operationId":"listenToProductOfferingAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductOfferingAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productOfferingCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductOfferingCreateEvent","description":"Example of a client listener for receiving the notification ProductOfferingCreateEvent","operationId":"listenToProductOfferingCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductOfferingCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productOfferingDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductOfferingDeleteEvent","description":"Example of a client listener for receiving the notification ProductOfferingDeleteEvent","operationId":"listenToProductOfferingDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductOfferingDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productOfferingPriceAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductOfferingPriceAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification ProductOfferingPriceAttributeValueChangeEvent","operationId":"listenToProductOfferingPriceAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductOfferingPriceAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productOfferingPriceCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductOfferingPriceCreateEvent","description":"Example of a client listener for receiving the notification ProductOfferingPriceCreateEvent","operationId":"listenToProductOfferingPriceCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductOfferingPriceCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productOfferingPriceDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductOfferingPriceDeleteEvent","description":"Example of a client listener for receiving the notification ProductOfferingPriceDeleteEvent","operationId":"listenToProductOfferingPriceDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductOfferingPriceDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productOfferingPriceStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductOfferingPriceStateChangeEvent","description":"Example of a client listener for receiving the notification ProductOfferingPriceStateChangeEvent","operationId":"listenToProductOfferingPriceStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductOfferingPriceStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productOfferingStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductOfferingStateChangeEvent","description":"Example of a client listener for receiving the notification ProductOfferingStateChangeEvent","operationId":"listenToProductOfferingStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductOfferingStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productSpecificationCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductSpecificationCreateEvent","description":"Example of a client listener for receiving the notification ProductSpecificationCreateEvent","operationId":"listenToProductSpecificationCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductSpecificationCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/listener/productSpecificationDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ProductSpecificationDeleteEvent","description":"Example of a client listener for receiving the notification ProductSpecificationDeleteEvent","operationId":"listenToProductSpecificationDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ProductSpecificationDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/productOffering":{"get":{"tags":["productOffering"],"summary":"List or find ProductOffering objects","description":"This operation list or find ProductOffering entities","operationId":"listProductOffering","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ProductOffering"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["productOffering"],"summary":"Creates a ProductOffering","description":"This operation creates a ProductOffering entity.","operationId":"createProductOffering","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"productOffering","description":"The ProductOffering to be created","required":true,"schema":{"$ref":"#/definitions/ProductOfferingCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ProductOffering"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ProductOffering"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/productOffering/{id}":{"get":{"tags":["productOffering"],"summary":"Retrieves a ProductOffering by ID","description":"This operation retrieves a ProductOffering entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveProductOffering","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ProductOffering","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ProductOffering"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["productOffering"],"summary":"Deletes a ProductOffering","description":"This operation deletes a ProductOffering entity.","operationId":"deleteProductOffering","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ProductOffering","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["productOffering"],"summary":"Updates partially a ProductOffering","description":"This operation updates partially a ProductOffering entity.","operationId":"patchProductOffering","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ProductOffering","required":true,"type":"string"},{"in":"body","name":"productOffering","description":"The ProductOffering to be updated","required":true,"schema":{"$ref":"#/definitions/ProductOfferingUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ProductOffering"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/productOfferingPrice":{"get":{"tags":["productOfferingPrice"],"summary":"List or find ProductOfferingPrice objects","description":"This operation list or find ProductOfferingPrice entities","operationId":"listProductOfferingPrice","produces":["application/json;charset=utf-8"],"parameters":[{"name":"allParams","in":"query","description":"allParams","required":false,"type":"string"},{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ProductOfferingPrice"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["productOfferingPrice"],"summary":"Creates a ProductOfferingPrice","description":"This operation creates a ProductOfferingPrice entity.","operationId":"createProductOfferingPrice","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"productOfferingPrice","description":"The ProductOfferingPrice to be created","required":true,"schema":{"$ref":"#/definitions/ProductOfferingPriceCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ProductOfferingPrice"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ProductOfferingPrice"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/productOfferingPrice/{id}":{"get":{"tags":["productOfferingPrice"],"summary":"Retrieves a ProductOfferingPrice by ID","description":"This operation retrieves a ProductOfferingPrice entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveProductOfferingPrice","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ProductOfferingPrice","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ProductOfferingPrice"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["productOfferingPrice"],"summary":"Deletes a ProductOfferingPrice","description":"This operation deletes a ProductOfferingPrice entity.","operationId":"deleteProductOfferingPrice","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ProductOfferingPrice","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["productOfferingPrice"],"summary":"Updates partially a ProductOfferingPrice","description":"This operation updates partially a ProductOfferingPrice entity.","operationId":"patchProductOfferingPrice","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ProductOfferingPrice","required":true,"type":"string"},{"in":"body","name":"productOfferingPrice","description":"The ProductOfferingPrice to be updated","required":true,"schema":{"$ref":"#/definitions/ProductOfferingPriceUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ProductOfferingPrice"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/productSpecification":{"get":{"tags":["productSpecification"],"summary":"List or find ProductSpecification objects","description":"This operation list or find ProductSpecification entities","operationId":"listProductSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ProductSpecification"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["productSpecification"],"summary":"Creates a ProductSpecification","description":"This operation creates a ProductSpecification entity.","operationId":"createProductSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"productSpecification","description":"The ProductSpecification to be created","required":true,"schema":{"$ref":"#/definitions/ProductSpecificationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ProductSpecification"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ProductSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/productCatalogManagement/v4/productSpecification/{id}":{"get":{"tags":["productSpecification"],"summary":"Retrieves a ProductSpecification by ID","description":"This operation retrieves a ProductSpecification entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveProductSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ProductSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ProductSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["productSpecification"],"summary":"Deletes a ProductSpecification","description":"This operation deletes a ProductSpecification entity.","operationId":"deleteProductSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ProductSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["productSpecification"],"summary":"Updates partially a ProductSpecification","description":"This operation updates partially a ProductSpecification entity.","operationId":"patchProductSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ProductSpecification","required":true,"type":"string"},{"in":"body","name":"productSpecification","description":"The ProductSpecification to be updated","required":true,"schema":{"$ref":"#/definitions/ProductSpecificationUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ProductSpecification"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"https://portal.5gasp.eu/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"https://portal.5gasp.eu/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"AgreementRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Identifier of the agreement"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"AgreementRef","description":"Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications."},"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"AttachmentRefOrValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"attachmentType":{"type":"string","example":"video","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","example":"Photograph of the Product","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","example":"4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"$ref":"#/definitions/Quantity"},"url":{"type":"string","example":"http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"AttachmentRefOrValue","description":"An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture."},"BundledProductOffering":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"bundledProductOfferingOption":{"description":"A set of numbers that specifies the lower and upper limits for a ProductOffering that can be procured as part of the related BundledProductOffering. Values can range from 0 to unbounded.","$ref":"#/definitions/BundledProductOfferingOption"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the BundledProductOffering"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the BundledProductOffering"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductOffering","description":"A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering."},"BundledProductOfferingOption":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"numberRelOfferDefault":{"type":"integer","format":"int32","description":"Default number of produc offereings that should be procured as part of the related BundledProductOffering"},"numberRelOfferLowerLimit":{"type":"integer","format":"int32","description":"lower limit for a product offering that can be procured as part of the related BundledProductOffering"},"numberRelOfferUpperLimit":{"type":"integer","format":"int32","description":"upper limit for a product offering that can be procured as part of the related BundledProductOffering"},"uuid":{"type":"string"}},"title":"BundledProductOfferingOption","description":"A set of numbers that specifies the lower and upper limits for a ProductOffering that can be procured as part of the related BundledProductOffering. Values can range from 0 to unbounded"},"BundledProductOfferingPriceRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the bundled product offering price"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductOfferingPriceRelationship","description":"This represents a bundling pricing relationship, allowing a price to be composed of multiple other prices (e.g. a recurring charge and a onetime charge)."},"BundledProductOfferingPriceRelationshipReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the bundled product offering price"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductOfferingPriceRelationshipReq","description":"This represents a bundling pricing relationship, allowing a price to be composed of multiple other prices (e.g. a recurring charge and a onetime charge)."},"BundledProductOfferingPriceRelationshipRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the bundled product offering price"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductOfferingPriceRelationshipRes","description":"This represents a bundling pricing relationship, allowing a price to be composed of multiple other prices (e.g. a recurring charge and a onetime charge)."},"BundledProductOfferingReq":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"bundledProductOfferingOption":{"description":"A set of numbers that specifies the lower and upper limits for a ProductOffering that can be procured as part of the related BundledProductOffering. Values can range from 0 to unbounded.","$ref":"#/definitions/BundledProductOfferingOption"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the BundledProductOffering"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the BundledProductOffering"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductOfferingReq","description":"A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering."},"BundledProductOfferingRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"bundledProductOfferingOption":{"description":"A set of numbers that specifies the lower and upper limits for a ProductOffering that can be procured as part of the related BundledProductOffering. Values can range from 0 to unbounded.","$ref":"#/definitions/BundledProductOfferingOption"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the BundledProductOffering"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the BundledProductOffering"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductOfferingRes","description":"A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering."},"BundledProductSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Reference of the product specification"},"id":{"type":"string","description":"Unique identifier of the product specification"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the product specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductSpecification","description":"A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification."},"BundledProductSpecificationReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Reference of the product specification"},"id":{"type":"string","description":"Unique identifier of the product specification"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the product specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductSpecificationReq","description":"A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification."},"BundledProductSpecificationRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Reference of the product specification"},"id":{"type":"string","description":"Unique identifier of the product specification"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the product specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"BundledProductSpecificationRes","description":"A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification."},"Catalog":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"catalogType":{"type":"string","description":"Indicates if the catalog is a product, service or resource catalog"},"category":{"type":"array","description":"List of categories associated with this catalog","items":{"$ref":"#/definitions/CategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"relatedParty":{"type":"array","description":"List of parties involved in this catalog","items":{"$ref":"#/definitions/RelatedParty"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"Catalog","description":"A collection of Product Offerings, intended for a specific DistributionChannel, enhanced with additional information such as SLA parameters, invoicing and shipping details"},"CatalogBatchEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/CatalogBatchEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CatalogBatchEvent","description":"The notification data structure"},"CatalogBatchEventPayload":{"type":"object","properties":{"catalog":{"description":"The involved resource data for the event","$ref":"#/definitions/Catalog"}},"title":"CatalogBatchEventPayload","description":"The event data structure"},"CatalogCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"catalogType":{"type":"string","description":"Indicates if the catalog is a product, service or resource catalog"},"category":{"type":"array","description":"List of root categories contained in this catalog","items":{"$ref":"#/definitions/CategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the catalog"},"relatedParty":{"type":"array","description":"List of parties involved in this catalog","items":{"$ref":"#/definitions/RelatedParty"}},"validFor":{"description":"The period for which the catalog is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Catalog version"}},"title":"CatalogCreate","description":"A collection of Product Offerings, intended for a specific DistributionChannel, enhanced with additional information such as SLA parameters, invoicing and shipping details Skipped properties: id,href"},"CatalogCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/CatalogCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CatalogCreateEvent","description":"The notification data structure"},"CatalogCreateEventPayload":{"type":"object","properties":{"catalog":{"description":"The involved resource data for the event","$ref":"#/definitions/Catalog"}},"title":"CatalogCreateEventPayload","description":"The event data structure"},"CatalogDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/CatalogDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CatalogDeleteEvent","description":"The notification data structure"},"CatalogDeleteEventPayload":{"type":"object","properties":{"catalog":{"description":"The involved resource data for the event","$ref":"#/definitions/Catalog"}},"title":"CatalogDeleteEventPayload","description":"The event data structure"},"CatalogUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"catalogType":{"type":"string","description":"Indicates if the catalog is a product, service or resource catalog"},"category":{"type":"array","description":"List of root categories contained in this catalog","items":{"$ref":"#/definitions/CategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the catalog"},"relatedParty":{"type":"array","description":"List of parties involved in this catalog","items":{"$ref":"#/definitions/RelatedParty"}},"validFor":{"description":"The period for which the catalog is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Catalog version"}},"title":"CatalogUpdate","description":"A collection of Product Offerings, intended for a specific DistributionChannel, enhanced with additional information such as SLA parameters, invoicing and shipping details Skipped properties: id,href,lastUpdate"},"Category":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"subCategory":{"type":"array","description":"List of child categories in the tree for in this category","items":{"$ref":"#/definitions/CategoryRef"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"Category","description":"The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates."},"CategoryCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of the category"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the category"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"productOffering":{"type":"array","description":"A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information.","items":{"$ref":"#/definitions/ProductOfferingRef"}},"subCategory":{"type":"array","description":"The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other (sub-)categories and/or product offerings.","items":{"$ref":"#/definitions/CategoryRef"}},"validFor":{"description":"The period for which the category is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Category version"}},"title":"CategoryCreate","description":"The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. Skipped properties: id,href"},"CategoryCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/CategoryCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CategoryCreateEvent","description":"The notification data structure"},"CategoryCreateEventPayload":{"type":"object","properties":{"category":{"description":"The involved resource data for the event","$ref":"#/definitions/Category"}},"title":"CategoryCreateEventPayload","description":"The event data structure"},"CategoryDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/CategoryDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CategoryDeleteEvent","description":"The notification data structure"},"CategoryDeleteEventPayload":{"type":"object","properties":{"category":{"description":"The involved resource data for the event","$ref":"#/definitions/Category"}},"title":"CategoryDeleteEventPayload","description":"The event data structure"},"CategoryRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"name":{"type":"string","description":"Name of the entity"},"version":{"type":"string"}},"title":"CategoryRef","description":"The category for grouping recommendations"},"CategoryUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of the category"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the category"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"productOffering":{"type":"array","description":"A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information.","items":{"$ref":"#/definitions/ProductOfferingRef"}},"subCategory":{"type":"array","description":"The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other (sub-)categories and/or product offerings.","items":{"$ref":"#/definitions/CategoryRef"}},"validFor":{"description":"The period for which the category is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Category version"}},"title":"CategoryUpdate","description":"The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates. Skipped properties: id,href,lastUpdate"},"ChannelRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ChannelRef","description":"The channel to which the resource reference to. e.g. channel for selling product offerings, channel for opening a trouble ticket etc.."},"ChannelRefReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ChannelRefReq","description":"The channel to which the resource reference to. e.g. channel for selling product offerings, channel for opening a trouble ticket etc.."},"ChannelRefRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ChannelRefRes","description":"The channel to which the resource reference to. e.g. channel for selling product offerings, channel for opening a trouble ticket etc.."},"ConstraintRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The (class) type of the referred constraint"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"reference id to the target constraint"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ConstraintRef","description":"Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec."},"ConstraintRefReq":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The (class) type of the referred constraint"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"reference id to the target constraint"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ConstraintRefReq","description":"Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec."},"ConstraintRefRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The (class) type of the referred constraint"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"reference id to the target constraint"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ConstraintRefRes","description":"Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"string","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"string","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"ExportJob":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Data at which the job was completed"},"contentType":{"type":"string","description":"The format of the exported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure"},"href":{"type":"string","description":"Reference of the export job"},"id":{"type":"string","description":"Identifier of the export job"},"path":{"type":"string","description":"URL of the root resource acting as the source for streaming content to the file specified by the export job"},"query":{"type":"string","description":"Used to scope the exported data"},"status":{"type":"string","description":"Status of the export job (not started, running, succeeded, failed)","enum":["Failed","Not Started","Running","Succeeded"]},"url":{"type":"string","description":"URL of the file containing the data to be exported"}},"title":"ExportJob","description":"Represents a task used to export resources to a file"},"ExportJobCreate":{"type":"object","required":["url"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Data at which the job was completed"},"contentType":{"type":"string","description":"The format of the exported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure"},"path":{"type":"string","description":"URL of the root resource acting as the source for streaming content to the file specified by the export job"},"query":{"type":"string","description":"Used to scope the exported data"},"status":{"type":"string","description":"Status of the export job (not started, running, succeeded, failed)","enum":["Failed","Not Started","Running","Succeeded"]},"url":{"type":"string","description":"URL of the file containing the data to be exported"}},"title":"ExportJobCreate","description":"Represents a task used to export resources to a file Skipped properties: id,href"},"ImportJob":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Date at which the job was completed"},"contentType":{"type":"string","description":"Indicates the format of the imported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure if status is failed"},"href":{"type":"string","description":"Reference of the import job"},"id":{"type":"string","description":"Identifier of the import job"},"path":{"type":"string","description":"URL of the root resource where the content of the file specified by the import job must be applied"},"status":{"type":"string","description":"Status of the import job (not started, running, succeeded, failed)","enum":["Failed","Not Started","Running","Succeeded"]},"url":{"type":"string","description":"URL of the file containing the data to be imported"}},"title":"ImportJob","description":"Represents a task used to import resources from a file"},"ImportJobCreate":{"type":"object","required":["url"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Date at which the job was completed"},"contentType":{"type":"string","description":"Indicates the format of the imported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure if status is failed"},"path":{"type":"string","description":"URL of the root resource where the content of the file specified by the import job must be applied"},"status":{"type":"string","description":"Status of the import job (not started, running, succeeded, failed)","enum":["Failed","Not Started","Running","Succeeded"]},"url":{"type":"string","description":"URL of the file containing the data to be imported"}},"title":"ImportJobCreate","description":"Represents a task used to import resources from a file Skipped properties: id,href"},"MarketSegmentRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"(Class) type of the referred market segment"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"MarketSegmentRef","description":"provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth."},"MarketSegmentRefReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"(Class) type of the referred market segment"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"MarketSegmentRefReq","description":"provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth."},"MarketSegmentRefRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"(Class) type of the referred market segment"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the market segment"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"MarketSegmentRefRes","description":"provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth."},"Money":{"type":"object","properties":{"unit":{"type":"string","description":"Currency (ISO4217 norm uses 3 letters to define the currency)"},"value":{"type":"number","format":"float","description":"A positive floating point number"}},"title":"Money","description":"A base / value business entity used to represent money"},"PlaceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"PlaceRef","description":"Place reference. PlaceRef defines the placeRefs where the products are sold or delivered."},"PricingLogicAlgorithm":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"plaSpecId":{"type":"string","description":"id of corresponding PricingLogicAlgorithm specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"PricingLogicAlgorithm","description":"The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled bahavior in SID). Some of the parameters of the interface definiition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth)"},"PricingLogicAlgorithmReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"plaSpecId":{"type":"string","description":"id of corresponding PricingLogicAlgorithm specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"PricingLogicAlgorithmReq","description":"The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled bahavior in SID). Some of the parameters of the interface definiition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth)"},"PricingLogicAlgorithmRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"unique id of the PricingLogicAlgorithm"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"plaSpecId":{"type":"string","description":"id of corresponding PricingLogicAlgorithm specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"PricingLogicAlgorithmRes","description":"The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled bahavior in SID). Some of the parameters of the interface definiition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth)"},"ProductOffering":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"agreement":{"type":"array","description":"An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications.","uniqueItems":true,"items":{"$ref":"#/definitions/AgreementRef"}},"attachment":{"type":"array","description":"Complements the description of an element (for instance a product) through video, pictures...","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"bundledProductOffering":{"type":"array","description":"A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering.","uniqueItems":true,"items":{"$ref":"#/definitions/BundledProductOfferingRes"}},"category":{"type":"array","description":"The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.","uniqueItems":true,"items":{"$ref":"#/definitions/CategoryRef"}},"channel":{"type":"array","description":"The channel defines the channel for selling product offerings.","uniqueItems":true,"items":{"$ref":"#/definitions/ChannelRefRes"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the productOffering"},"isBundle":{"type":"boolean","description":"isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true)."},"isSellable":{"type":"boolean","description":"A flag indicating if this product offer can be sold stand-alone for sale or not. If this flag is false it indicates that the offer can only be sold within a bundle."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"marketSegment":{"type":"array","description":"provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth.","uniqueItems":true,"items":{"$ref":"#/definitions/MarketSegmentRefRes"}},"name":{"type":"string","description":"Name of the entity"},"place":{"type":"array","description":"Place defines the places where the products are sold or delivered.","uniqueItems":true,"items":{"$ref":"#/definitions/PlaceRef"}},"prodSpecCharValueUse":{"type":"array","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValueUseRes"}},"productOfferingPrice":{"type":"array","description":"An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time and may not represent the actual price paid by a customer.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductOfferingPriceRefRes"}},"productOfferingTerm":{"type":"array","description":"A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductOfferingTermRes"}},"productSpecification":{"description":"A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.","$ref":"#/definitions/ProductSpecificationRefRes"},"resourceCandidate":{"description":"A resource candidate is an entity that makes a ResourceSpecification available to a catalog.","$ref":"#/definitions/ResourceCandidateRefRes"},"serviceCandidate":{"description":"ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog.","$ref":"#/definitions/ServiceCandidateRefRes"},"serviceLevelAgreement":{"description":"A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service.","$ref":"#/definitions/SLARefRes"},"statusReason":{"type":"string","description":"A string providing a complementary information on the value of the lifecycle status attribute."},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOffering","description":"Represents entities that are orderable from the provider of the catalog, this resource includes pricing information."},"ProductOfferingAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductOfferingAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductOfferingAttributeValueChangeEvent","description":"The notification data structure"},"ProductOfferingAttributeValueChangeEventPayload":{"type":"object","properties":{"productOffering":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductOffering"}},"title":"ProductOfferingAttributeValueChangeEventPayload","description":"The event data structure"},"ProductOfferingCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"agreement":{"type":"array","description":"An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications.","items":{"$ref":"#/definitions/AgreementRef"}},"attachment":{"type":"array","description":"Complements the description of an element (for instance a product) through video, pictures...","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"bundledProductOffering":{"type":"array","description":"A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering.","items":{"$ref":"#/definitions/BundledProductOfferingReq"}},"category":{"type":"array","description":"The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.","items":{"$ref":"#/definitions/CategoryRef"}},"channel":{"type":"array","description":"The channel defines the channel for selling product offerings.","items":{"$ref":"#/definitions/ChannelRefReq"}},"description":{"type":"string","description":"Description of the productOffering"},"isBundle":{"type":"boolean","description":"isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true)."},"isSellable":{"type":"boolean","description":"A flag indicating if this product offer can be sold stand-alone for sale or not. If this flag is false it indicates that the offer can only be sold within a bundle."},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"marketSegment":{"type":"array","description":"provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth.","items":{"$ref":"#/definitions/MarketSegmentRefReq"}},"name":{"type":"string","description":"Name of the productOffering"},"place":{"type":"array","description":"Place defines the places where the products are sold or delivered.","items":{"$ref":"#/definitions/PlaceRef"}},"prodSpecCharValueUse":{"type":"array","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics.","items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValueUseReq"}},"productOfferingPrice":{"type":"array","description":"An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time and may not represent the actual price paid by a customer.","items":{"$ref":"#/definitions/ProductOfferingPriceRefReq"}},"productOfferingTerm":{"type":"array","description":"A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods.","items":{"$ref":"#/definitions/ProductOfferingTermReq"}},"productSpecification":{"description":"A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.","$ref":"#/definitions/ProductSpecificationRefReq"},"resourceCandidate":{"description":"A resource candidate is an entity that makes a ResourceSpecification available to a catalog.","$ref":"#/definitions/ResourceCandidateRefReq"},"serviceCandidate":{"description":"ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog.","$ref":"#/definitions/ServiceCandidateRefReq"},"serviceLevelAgreement":{"description":"A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service.","$ref":"#/definitions/SLARefReq"},"statusReason":{"type":"string","description":"A string providing a complementary information on the value of the lifecycle status attribute."},"validFor":{"description":"The period for which the productOffering is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"ProductOffering version"}},"title":"ProductOfferingCreate","description":"Represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Skipped properties: id,href"},"ProductOfferingCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductOfferingCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductOfferingCreateEvent","description":"The notification data structure"},"ProductOfferingCreateEventPayload":{"type":"object","properties":{"productOffering":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductOffering"}},"title":"ProductOfferingCreateEventPayload","description":"The event data structure"},"ProductOfferingDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductOfferingDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductOfferingDeleteEvent","description":"The notification data structure"},"ProductOfferingDeleteEventPayload":{"type":"object","properties":{"productOffering":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductOffering"}},"title":"ProductOfferingDeleteEventPayload","description":"The event data structure"},"ProductOfferingPrice":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"bundledPopRelationship":{"type":"array","description":"this object represents a bundle relationship from a bundle product offering price (parent) to a simple product offering price (child). A simple product offering price may participate in more than one bundle relationship.","uniqueItems":true,"items":{"$ref":"#/definitions/BundledProductOfferingPriceRelationshipRes"}},"constraint":{"type":"array","description":"The Constraint resource represents a policy/rule applied to ProductOfferingPrice.","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRefRes"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"unique id of this resource"},"isBundle":{"type":"boolean","description":"A flag indicating if this ProductOfferingPrice is composite (bundle) or not"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"percentage":{"type":"number","format":"float","description":"Percentage to apply for ProductOfferPriceAlteration (Discount)"},"place":{"type":"array","description":"Place defines the places where the products are sold or delivered.","uniqueItems":true,"items":{"$ref":"#/definitions/PlaceRef"}},"popRelationship":{"type":"array","description":"Product Offering Prices related to this Product Offering Price, for example a price alteration such as allowance or discount","uniqueItems":true,"items":{"$ref":"#/definitions/ProductOfferingPriceRelationshipRes"}},"price":{"description":"The amount of money that characterizes the price.","$ref":"#/definitions/Money"},"priceType":{"type":"string","description":"A category that describes the price, such as recurring, discount, allowance, penalty, and so forth."},"pricingLogicAlgorithm":{"type":"array","description":"The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled behavior in SID). Some of the parameters of the interface definition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth).","uniqueItems":true,"items":{"$ref":"#/definitions/PricingLogicAlgorithmRes"}},"prodSpecCharValueUse":{"type":"array","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOfferingPrice to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering and ProcuctOfferingPrice level. The list of values in ProductSpecificationCharacteristicValueUse is a strict subset of the list of values as defined in the corresponding product specification characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValueUseRes"}},"productOfferingTerm":{"type":"array","description":"A list of conditions under which a ProductOfferingPrice is made available to Customers. For instance, a Product Offering Price can be offered with multiple commitment periods.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductOfferingTermRes"}},"recurringChargePeriodLength":{"type":"integer","format":"int32","description":"the period of the recurring charge: 1, 2, ... .It sets to zero if it is not applicable"},"recurringChargePeriodType":{"type":"string","description":"The period to repeat the application of the price Could be month, week..."},"tax":{"type":"array","description":"An amount of money levied on the price of a Product by a legislative body.","uniqueItems":true,"items":{"$ref":"#/definitions/TaxItem"}},"unitOfMeasure":{"description":"A number and unit representing how many (for instance 1 dozen) of an ProductOffering is available at the offered price. Its meaning depends on the priceType. It could be a price, a rate, or a discount.","$ref":"#/definitions/Quantity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingPrice","description":"Is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price may be further revised through discounting (productOfferPriceAlteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected, eg: a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment."},"ProductOfferingPriceAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductOfferingPriceAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductOfferingPriceAttributeValueChangeEvent","description":"The notification data structure"},"ProductOfferingPriceAttributeValueChangeEventPayload":{"type":"object","properties":{"productOfferingPrice":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductOfferingPrice"}},"title":"ProductOfferingPriceAttributeValueChangeEventPayload","description":"The event data structure"},"ProductOfferingPriceCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"the immediate base class type of this product offering"},"@schemaLocation":{"type":"string","description":"hyperlink reference to the schema describing this resource"},"@type":{"type":"string","description":"The class type of this Product offering"},"bundledPopRelationship":{"type":"array","description":"this object represents a bundle relationship from a bundle product offering price (parent) to a simple product offering price (child). A simple product offering price may participate in more than one bundle relationship.","items":{"$ref":"#/definitions/BundledProductOfferingPriceRelationshipReq"}},"constraint":{"type":"array","description":"The Constraint resource represents a policy/rule applied to ProductOfferingPrice.","items":{"$ref":"#/definitions/ConstraintRefReq"}},"description":{"type":"string","description":"Description of the productOfferingPrice"},"isBundle":{"type":"boolean","description":"A flag indicating if this ProductOfferingPrice is composite (bundle) or not"},"lastUpdate":{"type":"string","format":"date-time","description":"the last update time of this ProductOfferingPrice"},"lifecycleStatus":{"type":"string","description":"the lifecycle status of this ProductOfferingPrice"},"name":{"type":"string","description":"Name of the productOfferingPrice"},"percentage":{"type":"number","format":"float","description":"Percentage to apply for ProductOfferPriceAlteration (Discount)"},"place":{"type":"array","description":"Place defines the places where the products are sold or delivered.","items":{"$ref":"#/definitions/PlaceRef"}},"popRelationship":{"type":"array","description":"Product Offering Prices related to this Product Offering Price, for example a price alteration such as allowance or discount","items":{"$ref":"#/definitions/ProductOfferingPriceRelationshipReq"}},"price":{"description":"The amount of money that characterizes the price.","$ref":"#/definitions/Money"},"priceType":{"type":"string","description":"A category that describes the price, such as recurring, discount, allowance, penalty, and so forth."},"pricingLogicAlgorithm":{"type":"array","description":"The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled behavior in SID). Some of the parameters of the interface definition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth).","items":{"$ref":"#/definitions/PricingLogicAlgorithmReq"}},"prodSpecCharValueUse":{"type":"array","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOfferingPrice to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering and ProcuctOfferingPrice level. The list of values in ProductSpecificationCharacteristicValueUse is a strict subset of the list of values as defined in the corresponding product specification characteristics.","items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValueUseReq"}},"productOfferingTerm":{"type":"array","description":"A list of conditions under which a ProductOfferingPrice is made available to Customers. For instance, a Product Offering Price can be offered with multiple commitment periods.","items":{"$ref":"#/definitions/ProductOfferingTermReq"}},"recurringChargePeriodLength":{"type":"integer","format":"int32","description":"the period of the recurring charge: 1, 2, ... .It sets to zero if it is not applicable"},"recurringChargePeriodType":{"type":"string","description":"The period to repeat the application of the price Could be month, week..."},"tax":{"type":"array","description":"An amount of money levied on the price of a Product by a legislative body.","items":{"$ref":"#/definitions/TaxItem"}},"unitOfMeasure":{"description":"A number and unit representing how many (for instance 1 dozen) of an ProductOffering is available at the offered price. Its meaning depends on the priceType. It could be a price, a rate, or a discount.","$ref":"#/definitions/Quantity"},"validFor":{"description":"The period for which the productOfferingPrice is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"ProductOffering version"}},"title":"ProductOfferingPriceCreate","description":"Is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price may be further revised through discounting (productOfferPriceAlteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected, eg: a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment. Skipped properties: id,href"},"ProductOfferingPriceCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductOfferingPriceCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductOfferingPriceCreateEvent","description":"The notification data structure"},"ProductOfferingPriceCreateEventPayload":{"type":"object","properties":{"productOfferingPrice":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductOfferingPrice"}},"title":"ProductOfferingPriceCreateEventPayload","description":"The event data structure"},"ProductOfferingPriceDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductOfferingPriceDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductOfferingPriceDeleteEvent","description":"The notification data structure"},"ProductOfferingPriceDeleteEventPayload":{"type":"object","properties":{"productOfferingPrice":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductOfferingPrice"}},"title":"ProductOfferingPriceDeleteEventPayload","description":"The event data structure"},"ProductOfferingPriceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingPriceRef","description":"ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased"},"ProductOfferingPriceRefReq":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingPriceRefReq","description":"ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased"},"ProductOfferingPriceRefRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingPriceRefRes","description":"ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased"},"ProductOfferingPriceRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the associated product offering price"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"type of the relationship, for example override, discount, etc."},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingPriceRelationship","description":"Describes a non-composite relationship between product offering prices. For example one price might be an discount alteration for another price."},"ProductOfferingPriceRelationshipReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the associated product offering price"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"type of the relationship, for example override, discount, etc."},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingPriceRelationshipReq","description":"Describes a non-composite relationship between product offering prices. For example one price might be an discount alteration for another price."},"ProductOfferingPriceRelationshipRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the associated product offering price"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"type of the relationship, for example override, discount, etc."},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingPriceRelationshipRes","description":"Describes a non-composite relationship between product offering prices. For example one price might be an discount alteration for another price."},"ProductOfferingPriceStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductOfferingPriceStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductOfferingPriceStateChangeEvent","description":"The notification data structure"},"ProductOfferingPriceStateChangeEventPayload":{"type":"object","properties":{"productOfferingPrice":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductOfferingPrice"}},"title":"ProductOfferingPriceStateChangeEventPayload","description":"The event data structure"},"ProductOfferingPriceUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"the immediate base class type of this product offering"},"@schemaLocation":{"type":"string","description":"hyperlink reference to the schema describing this resource"},"@type":{"type":"string","description":"The class type of this Product offering"},"bundledPopRelationship":{"type":"array","description":"this object represents a bundle relationship from a bundle product offering price (parent) to a simple product offering price (child). A simple product offering price may participate in more than one bundle relationship.","items":{"$ref":"#/definitions/BundledProductOfferingPriceRelationshipReq"}},"constraint":{"type":"array","description":"The Constraint resource represents a policy/rule applied to ProductOfferingPrice.","items":{"$ref":"#/definitions/ConstraintRefReq"}},"description":{"type":"string","description":"Description of the productOfferingPrice"},"isBundle":{"type":"boolean","description":"A flag indicating if this ProductOfferingPrice is composite (bundle) or not"},"lifecycleStatus":{"type":"string","description":"the lifecycle status of this ProductOfferingPrice"},"name":{"type":"string","description":"Name of the productOfferingPrice"},"percentage":{"type":"number","format":"float","description":"Percentage to apply for ProductOfferPriceAlteration (Discount)"},"place":{"type":"array","description":"Place defines the places where the products are sold or delivered.","items":{"$ref":"#/definitions/PlaceRef"}},"popRelationship":{"type":"array","description":"Product Offering Prices related to this Product Offering Price, for example a price alteration such as allowance or discount","items":{"$ref":"#/definitions/ProductOfferingPriceRelationshipReq"}},"price":{"description":"The amount of money that characterizes the price.","$ref":"#/definitions/Money"},"priceType":{"type":"string","description":"A category that describes the price, such as recurring, discount, allowance, penalty, and so forth."},"pricingLogicAlgorithm":{"type":"array","description":"The PricingLogicAlgorithm entity represents an instantiation of an interface specification to external rating function (without a modeled behavior in SID). Some of the parameters of the interface definition may be already set (such as price per unit) and some may be gathered during the rating process from the event (such as call duration) or from ProductCharacteristicValues (such as assigned bandwidth).","items":{"$ref":"#/definitions/PricingLogicAlgorithmReq"}},"prodSpecCharValueUse":{"type":"array","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOfferingPrice to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering and ProcuctOfferingPrice level. The list of values in ProductSpecificationCharacteristicValueUse is a strict subset of the list of values as defined in the corresponding product specification characteristics.","items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValueUseReq"}},"productOfferingTerm":{"type":"array","description":"A list of conditions under which a ProductOfferingPrice is made available to Customers. For instance, a Product Offering Price can be offered with multiple commitment periods.","items":{"$ref":"#/definitions/ProductOfferingTermReq"}},"recurringChargePeriodLength":{"type":"integer","format":"int32","description":"the period of the recurring charge: 1, 2, ... .It sets to zero if it is not applicable"},"recurringChargePeriodType":{"type":"string","description":"The period to repeat the application of the price Could be month, week..."},"tax":{"type":"array","description":"An amount of money levied on the price of a Product by a legislative body.","items":{"$ref":"#/definitions/TaxItem"}},"unitOfMeasure":{"description":"A number and unit representing how many (for instance 1 dozen) of an ProductOffering is available at the offered price. Its meaning depends on the priceType. It could be a price, a rate, or a discount.","$ref":"#/definitions/Quantity"},"validFor":{"description":"The period for which the productOfferingPrice is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"ProductOffering version"}},"title":"ProductOfferingPriceUpdate","description":"Is based on both the basic cost to develop and produce products and the enterprises policy on revenue targets. This price may be further revised through discounting (productOfferPriceAlteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected, eg: a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment. Skipped properties: id,href,lastUpdate"},"ProductOfferingRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"name":{"type":"string","description":"Name of the entity"}},"title":"ProductOfferingRef","description":"ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information."},"ProductOfferingStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductOfferingStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductOfferingStateChangeEvent","description":"The notification data structure"},"ProductOfferingStateChangeEventPayload":{"type":"object","properties":{"productOffering":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductOffering"}},"title":"ProductOfferingStateChangeEventPayload","description":"The event data structure"},"ProductOfferingTerm":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"duration":{"description":"Duration of the productOfferingTerm","$ref":"#/definitions/Quantity"},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingTerm","description":"A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods."},"ProductOfferingTermReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"duration":{"description":"Duration of the productOfferingTerm","$ref":"#/definitions/Quantity"},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingTermReq","description":"A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods."},"ProductOfferingTermRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"duration":{"description":"Duration of the productOfferingTerm","$ref":"#/definitions/Quantity"},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductOfferingTermRes","description":"A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods."},"ProductOfferingUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"agreement":{"type":"array","description":"An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications.","items":{"$ref":"#/definitions/AgreementRef"}},"attachment":{"type":"array","description":"Complements the description of an element (for instance a product) through video, pictures...","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"bundledProductOffering":{"type":"array","description":"A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering.","items":{"$ref":"#/definitions/BundledProductOfferingReq"}},"category":{"type":"array","description":"The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.","items":{"$ref":"#/definitions/CategoryRef"}},"channel":{"type":"array","description":"The channel defines the channel for selling product offerings.","items":{"$ref":"#/definitions/ChannelRefReq"}},"description":{"type":"string","description":"Description of the productOffering"},"isBundle":{"type":"boolean","description":"isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true)."},"isSellable":{"type":"boolean","description":"A flag indicating if this product offer can be sold stand-alone for sale or not. If this flag is false it indicates that the offer can only be sold within a bundle."},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"marketSegment":{"type":"array","description":"provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth.","items":{"$ref":"#/definitions/MarketSegmentRefReq"}},"name":{"type":"string","description":"Name of the productOffering"},"place":{"type":"array","description":"Place defines the places where the products are sold or delivered.","items":{"$ref":"#/definitions/PlaceRef"}},"prodSpecCharValueUse":{"type":"array","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics.","items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValueUseReq"}},"productOfferingPrice":{"type":"array","description":"An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time and may not represent the actual price paid by a customer.","items":{"$ref":"#/definitions/ProductOfferingPriceRefReq"}},"productOfferingTerm":{"type":"array","description":"A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods.","items":{"$ref":"#/definitions/ProductOfferingTermReq"}},"productSpecification":{"description":"A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.","$ref":"#/definitions/ProductSpecificationRefReq"},"resourceCandidate":{"description":"A resource candidate is an entity that makes a ResourceSpecification available to a catalog.","$ref":"#/definitions/ResourceCandidateRefReq"},"serviceCandidate":{"description":"ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog.","$ref":"#/definitions/ServiceCandidateRefReq"},"serviceLevelAgreement":{"description":"A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service.","$ref":"#/definitions/SLARefReq"},"statusReason":{"type":"string","description":"A string providing a complementary information on the value of the lifecycle status attribute."},"validFor":{"description":"The period for which the productOffering is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"ProductOffering version"}},"title":"ProductOfferingUpdate","description":"Represents entities that are orderable from the provider of the catalog, this resource includes pricing information. Skipped properties: id,href,lastUpdate"},"ProductSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachment":{"type":"array","description":"Complements the description of an element (for instance a product) through video, pictures...","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"brand":{"type":"string","description":"The manufacturer or trademark of the specification"},"bundledProductSpecification":{"type":"array","description":"A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification.","uniqueItems":true,"items":{"$ref":"#/definitions/BundledProductSpecificationRes"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the product specification"},"isBundle":{"type":"boolean","description":"isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true)."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"productNumber":{"type":"string","description":"An identification number assigned to uniquely identity the specification"},"productSpecCharacteristic":{"type":"array","description":"A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicRes"}},"productSpecificationRelationship":{"type":"array","description":"A migration, substitution, dependency or exclusivity relationship between/among product specifications.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationRelationship"}},"relatedParty":{"type":"array","description":"A related party defines party or party role linked to a specific entity.","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceSpecification":{"type":"array","description":"The ResourceSpecification is required to realize a ProductSpecification.","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationRef"}},"serviceSpecification":{"type":"array","description":"ServiceSpecification(s) required to realize a ProductSpecification.","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"targetProductSchema":{"description":"A target product schema reference. The reference object to the schema and type of target product which is described by product specification.","$ref":"#/definitions/TargetProductSchema"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecification","description":"Is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role."},"ProductSpecificationCharacteristic":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the ProductSpecificationCharacteristic is configurable"},"description":{"type":"string","description":"Description of this catalog"},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a product"},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality"},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality"},"name":{"type":"string","description":"Name of the entity"},"productSpecCharRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicRelationship"}},"productSpecCharacteristicValue":{"type":"array","description":"A ProductSpecificationCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. The values of the attributes in the ProductSpecificationCharacteristicValue object describe the values of the attributes that a corresponding ProductSpecificationCharacteristic object can take on.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValue"}},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristic","description":"A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process."},"ProductSpecificationCharacteristicRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"charSpecSeq":{"type":"integer","format":"int32","description":"The order in which a CharacteristicSpecification appears within another CharacteristicSpecification that defines a grouping of CharacteristicSpecifications. For example, a grouping may represent the name of an individual. The given name is first, the middle name is second, and the last name is third."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"the identifier of the associated product specification"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"Type of relationship such as aggregation, migration, substitution, dependency, exclusivity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristicRelationship","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among productSpecificationCharacteristics."},"ProductSpecificationCharacteristicRelationshipReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"charSpecSeq":{"type":"integer","format":"int32","description":"The order in which a CharacteristicSpecification appears within another CharacteristicSpecification that defines a grouping of CharacteristicSpecifications. For example, a grouping may represent the name of an individual. The given name is first, the middle name is second, and the last name is third."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"the identifier of the associated product specification"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"Type of relationship such as aggregation, migration, substitution, dependency, exclusivity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristicRelationshipReq","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among productSpecificationCharacteristics."},"ProductSpecificationCharacteristicRelationshipRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"charSpecSeq":{"type":"integer","format":"int32","description":"The order in which a CharacteristicSpecification appears within another CharacteristicSpecification that defines a grouping of CharacteristicSpecifications. For example, a grouping may represent the name of an individual. The given name is first, the middle name is second, and the last name is third."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"the identifier of the associated product specification"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"Type of relationship such as aggregation, migration, substitution, dependency, exclusivity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristicRelationshipRes","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among productSpecificationCharacteristics."},"ProductSpecificationCharacteristicReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the ProductSpecificationCharacteristic is configurable"},"description":{"type":"string","description":"Description of this catalog"},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a product"},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality"},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality"},"name":{"type":"string","description":"Name of the entity"},"productSpecCharRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicRelationshipReq"}},"productSpecCharacteristicValue":{"type":"array","description":"A ProductSpecificationCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. The values of the attributes in the ProductSpecificationCharacteristicValue object describe the values of the attributes that a corresponding ProductSpecificationCharacteristic object can take on.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValue"}},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristicReq","description":"A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process."},"ProductSpecificationCharacteristicRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the ProductSpecificationCharacteristic is configurable"},"description":{"type":"string","description":"Description of this catalog"},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a product"},"href":{"type":"string","description":"Unique reference of the entity"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality"},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality"},"name":{"type":"string","description":"Name of the entity"},"productSpecCharRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicRelationshipRes"}},"productSpecCharacteristicValue":{"type":"array","description":"A ProductSpecificationCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. The values of the attributes in the ProductSpecificationCharacteristicValue object describe the values of the attributes that a corresponding ProductSpecificationCharacteristic object can take on.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValue"}},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristicRes","description":"A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process."},"ProductSpecificationCharacteristicValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"isDefault":{"type":"boolean","description":"Indicates if the value is the default value for a characteristic"},"rangeInterval":{"type":"string","description":"An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are \"open\", \"closed\", \"closedBottom\" and \"closedTop\"."},"regex":{"type":"string","description":"Regular expression to define constraint on the allowed value"},"unitOfMeasure":{"type":"string","description":"A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot."},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"value":{"description":"A discrete value that the characteristic can take on, or the actual value of the characteristic","$ref":"#/definitions/Any"},"valueFrom":{"type":"string","description":"The low range value that a characteristic can take on"},"valueTo":{"type":"string","description":"The upper range value that a characteristic can take on"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text, and so forth"}},"title":"ProductSpecificationCharacteristicValue","description":"A ProductSpecificationCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ProductSpecificationCharacteristic object. The values of the attributes in the ProductSpecificationCharacteristicValue object describe the values of the attributes that a corresponding ProductSpecificationCharacteristic object can take on."},"ProductSpecificationCharacteristicValueUse":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"Name of the entity"},"productSpecCharacteristicValue":{"type":"array","description":"A number or text that can be assigned to a ProductSpecificationCharacteristic.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValue"}},"productSpecification":{"description":"A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.","$ref":"#/definitions/ProductSpecificationRef"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristicValueUse","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics."},"ProductSpecificationCharacteristicValueUseReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"Name of the entity"},"productSpecCharacteristicValue":{"type":"array","description":"A number or text that can be assigned to a ProductSpecificationCharacteristic.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValue"}},"productSpecification":{"description":"A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.","$ref":"#/definitions/ProductSpecificationRefReq"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristicValueUseReq","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics."},"ProductSpecificationCharacteristicValueUseRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"Name of the entity"},"productSpecCharacteristicValue":{"type":"array","description":"A number or text that can be assigned to a ProductSpecificationCharacteristic.","uniqueItems":true,"items":{"$ref":"#/definitions/ProductSpecificationCharacteristicValue"}},"productSpecification":{"description":"A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.","$ref":"#/definitions/ProductSpecificationRefRes"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationCharacteristicValueUseRes","description":"A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics."},"ProductSpecificationCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"attachment":{"type":"array","description":"Complements the description of an element (for instance a product) through video, pictures...","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"brand":{"type":"string","description":"The manufacturer or trademark of the specification"},"bundledProductSpecification":{"type":"array","description":"A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification.","items":{"$ref":"#/definitions/BundledProductSpecificationReq"}},"description":{"type":"string","description":"A narrative that explains in detail what the product specification is"},"isBundle":{"type":"boolean","description":"isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true)."},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the product specification"},"productNumber":{"type":"string","description":"An identification number assigned to uniquely identity the specification"},"productSpecCharacteristic":{"type":"array","description":"A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process.","items":{"$ref":"#/definitions/ProductSpecificationCharacteristicReq"}},"productSpecificationRelationship":{"type":"array","description":"A migration, substitution, dependency or exclusivity relationship between/among product specifications.","items":{"$ref":"#/definitions/ProductSpecificationRelationship"}},"relatedParty":{"type":"array","description":"A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"resourceSpecification":{"type":"array","description":"The ResourceSpecification is required to realize a ProductSpecification.","items":{"$ref":"#/definitions/ResourceSpecificationRef"}},"serviceSpecification":{"type":"array","description":"ServiceSpecification(s) required to realize a ProductSpecification.","items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"targetProductSchema":{"description":"A target product schema reference. The reference object to the schema and type of target product which is described by product specification.","$ref":"#/definitions/TargetProductSchema"},"validFor":{"description":"The period for which the product specification is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Product specification version"}},"title":"ProductSpecificationCreate","description":"Is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. Skipped properties: id,href"},"ProductSpecificationCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductSpecificationCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductSpecificationCreateEvent","description":"The notification data structure"},"ProductSpecificationCreateEventPayload":{"type":"object","properties":{"productSpecification":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductSpecification"}},"title":"ProductSpecificationCreateEventPayload","description":"The event data structure"},"ProductSpecificationDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/ProductSpecificationDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ProductSpecificationDeleteEvent","description":"The notification data structure"},"ProductSpecificationDeleteEventPayload":{"type":"object","properties":{"productSpecification":{"description":"The involved resource data for the event","$ref":"#/definitions/ProductSpecification"}},"title":"ProductSpecificationDeleteEventPayload","description":"The event data structure"},"ProductSpecificationRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"targetProductSchema":{"$ref":"#/definitions/TargetProductSchema"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationRef","description":"Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role."},"ProductSpecificationRefReq":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"targetProductSchema":{"$ref":"#/definitions/TargetProductSchema"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationRefReq","description":"Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role."},"ProductSpecificationRefRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"targetProductSchema":{"$ref":"#/definitions/TargetProductSchema"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ProductSpecificationRefRes","description":"Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role."},"ProductSpecificationRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the productSpecification"},"relationshipType":{"type":"string","description":"Type of relationship such as migration, substitution, dependency, exclusivity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the productSpecificationRelationship is valid","$ref":"#/definitions/TimePeriod"}},"title":"ProductSpecificationRelationship","description":"A migration, substitution, dependency or exclusivity relationship between/among product specifications."},"ProductSpecificationUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"attachment":{"type":"array","description":"Complements the description of an element (for instance a product) through video, pictures...","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"brand":{"type":"string","description":"The manufacturer or trademark of the specification"},"bundledProductSpecification":{"type":"array","description":"A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification.","items":{"$ref":"#/definitions/BundledProductSpecificationReq"}},"description":{"type":"string","description":"A narrative that explains in detail what the product specification is"},"isBundle":{"type":"boolean","description":"isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true)."},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the product specification"},"productNumber":{"type":"string","description":"An identification number assigned to uniquely identity the specification"},"productSpecCharacteristic":{"type":"array","description":"A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 - talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process.","items":{"$ref":"#/definitions/ProductSpecificationCharacteristicReq"}},"productSpecificationRelationship":{"type":"array","description":"A migration, substitution, dependency or exclusivity relationship between/among product specifications.","items":{"$ref":"#/definitions/ProductSpecificationRelationship"}},"relatedParty":{"type":"array","description":"A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"resourceSpecification":{"type":"array","description":"The ResourceSpecification is required to realize a ProductSpecification.","items":{"$ref":"#/definitions/ResourceSpecificationRef"}},"serviceSpecification":{"type":"array","description":"ServiceSpecification(s) required to realize a ProductSpecification.","items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"targetProductSchema":{"description":"A target product schema reference. The reference object to the schema and type of target product which is described by product specification.","$ref":"#/definitions/TargetProductSchema"},"validFor":{"description":"The period for which the product specification is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Product specification version"}},"title":"ProductSpecificationUpdate","description":"Is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. Skipped properties: id,href,lastUpdate"},"Quantity":{"type":"object","properties":{"amount":{"type":"number","format":"float","description":"Numeric value in a given unit"},"units":{"type":"string","description":"Unit"}},"title":"Quantity","description":"An amount in a given unit"},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"ResourceCandidateRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the resource candidate"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ResourceCandidateRef","description":"ResourceCandidate reference: A resource candidate is an entity that makes a ResourceSpecification available to a catalog."},"ResourceCandidateRefReq":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the resource candidate"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ResourceCandidateRefReq","description":"ResourceCandidate reference: A resource candidate is an entity that makes a ResourceSpecification available to a catalog."},"ResourceCandidateRefRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the resource candidate"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ResourceCandidateRefRes","description":"ResourceCandidate reference: A resource candidate is an entity that makes a ResourceSpecification available to a catalog."},"ResourceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"version":{"type":"string","description":"Resource specification version"}},"title":"ResourceSpecificationRef","description":"Resource Specification reference: The ResourceSpecification is required to realize a ProductSpecification."},"SLARef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of service level agreement"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"SLARef","description":"ServiceLevelAgreement reference: A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service."},"SLARefReq":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of service level agreement"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"SLARefReq","description":"ServiceLevelAgreement reference: A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service."},"SLARefRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of service level agreement"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"SLARefRes","description":"ServiceLevelAgreement reference: A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service."},"ServiceCandidateRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the service candidate"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceCandidateRef","description":"ServiceCandidate reference. ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog."},"ServiceCandidateRefReq":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the service candidate"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceCandidateRefReq","description":"ServiceCandidate reference. ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog."},"ServiceCandidateRefRes":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the service candidate"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceCandidateRefRes","description":"ServiceCandidate reference. ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog."},"ServiceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationRef","description":"Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification."},"TargetProductSchema":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"}},"title":"TargetProductSchema","description":"The reference object to the schema and type of target product which is described by product specification"},"TargetServiceSchema":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"}},"title":"TargetServiceSchema","description":"The reference object to the schema and type of target service which is described by service specification"},"TaxItem":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"taxAmount":{"description":"Amount of tax expressed in the given currency","$ref":"#/definitions/Money"},"taxCategory":{"type":"string","description":"Tax category"},"taxRate":{"type":"number","format":"float","description":"Applied rate of the tax"},"uuid":{"type":"string"}},"title":"TaxItem","description":"A tax item is created for each tax rate and tax type used in the bill."},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/TMF632 - Party Management.json b/src/assets/swagger_collections/TMF632 - Party Management.json new file mode 100644 index 0000000000000000000000000000000000000000..8bf64af6585ecd3ecdb8ae07e5ef6fac652afc0a --- /dev/null +++ b/src/assets/swagger_collections/TMF632 - Party Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"This is Swagger UI environment generated for the TMF Service Quality Management specification","version":"2.0","title":"Service Quality Management","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","basePath":"/tmf-api","tags":[{"name":"hub-api-controller","description":"the hub API"},{"name":"individual-api-controller","description":"the individual API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"organization-api-controller","description":"the organization API"}],"paths":{"/party/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_2","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_2","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/individual":{"get":{"tags":["individual"],"summary":"List or find Individual objects","description":"This operation list or find Individual entities","operationId":"listIndividual","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Individual"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"post":{"tags":["individual"],"summary":"Creates a Individual","description":"This operation creates a Individual entity.","operationId":"createIndividual","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"individual","description":"The Individual to be created","required":true,"schema":{"$ref":"#/definitions/IndividualCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Individual"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Individual"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/individual/{id}":{"get":{"tags":["individual"],"summary":"Retrieves a Individual by ID","description":"This operation retrieves a Individual entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveIndividual","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the Individual","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Individual"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"delete":{"tags":["individual"],"summary":"Deletes a Individual","description":"This operation deletes a Individual entity.","operationId":"deleteIndividual","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Individual","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"patch":{"tags":["individual"],"summary":"Updates partially a Individual","description":"This operation updates partially a Individual entity.","operationId":"patchIndividual","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Individual","required":true,"type":"string"},{"in":"body","name":"individual","description":"The Individual to be updated","required":true,"schema":{"$ref":"#/definitions/IndividualUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Individual"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/listener/individualAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity IndividualAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification IndividualAttributeValueChangeEvent","operationId":"listenToIndividualAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/IndividualAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/listener/individualCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity IndividualCreateEvent","description":"Example of a client listener for receiving the notification IndividualCreateEvent","operationId":"listenToIndividualCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/IndividualCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/listener/individualDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity IndividualDeleteEvent","description":"Example of a client listener for receiving the notification IndividualDeleteEvent","operationId":"listenToIndividualDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/IndividualDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/listener/individualStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity IndividualStateChangeEvent","description":"Example of a client listener for receiving the notification IndividualStateChangeEvent","operationId":"listenToIndividualStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/IndividualStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/listener/organizationAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity OrganizationAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification OrganizationAttributeValueChangeEvent","operationId":"listenToOrganizationAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/OrganizationAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/listener/organizationCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity OrganizationCreateEvent","description":"Example of a client listener for receiving the notification OrganizationCreateEvent","operationId":"listenToOrganizationCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/OrganizationCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/listener/organizationDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity OrganizationDeleteEvent","description":"Example of a client listener for receiving the notification OrganizationDeleteEvent","operationId":"listenToOrganizationDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/OrganizationDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/listener/organizationStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity OrganizationStateChangeEvent","description":"Example of a client listener for receiving the notification OrganizationStateChangeEvent","operationId":"listenToOrganizationStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/OrganizationStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/organization":{"get":{"tags":["organization"],"summary":"List or find Organization objects","description":"This operation list or find Organization entities","operationId":"listOrganization","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Organization"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"post":{"tags":["organization"],"summary":"Creates a Organization","description":"This operation creates a Organization entity.","operationId":"createOrganization","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"organization","description":"The Organization to be created","required":true,"schema":{"$ref":"#/definitions/OrganizationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Organization"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Organization"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/party/v4/organization/{id}":{"get":{"tags":["organization"],"summary":"Retrieves a Organization by ID","description":"This operation retrieves a Organization entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveOrganization","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the Organization","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Organization"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"delete":{"tags":["organization"],"summary":"Deletes a Organization","description":"This operation deletes a Organization entity.","operationId":"deleteOrganization","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Organization","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"patch":{"tags":["organization"],"summary":"Updates partially a Organization","description":"This operation updates partially a Organization entity.","operationId":"patchOrganization","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Organization","required":true,"type":"string"},{"in":"body","name":"organization","description":"The Organization to be updated","required":true,"schema":{"$ref":"#/definitions/OrganizationUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Organization"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"AttachmentRefOrValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachmentType":{"type":"string","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"description":"The size of the attachment.","$ref":"#/definitions/Quantity"},"url":{"type":"string","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which the attachment is valid","$ref":"#/definitions/TimePeriod"}},"title":"AttachmentRefOrValue","description":"An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture."},"Characteristic":{"type":"object","required":["value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"value":{"description":"The value of the characteristic","$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"Characteristic","description":"Describes a given characteristic of an object or entity through a name/value pair."},"ContactMedium":{"type":"object","required":["characteristic","mediumType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristic":{"description":"Any additional characteristic(s) of this contact medium","$ref":"#/definitions/MediumCharacteristic"},"href":{"type":"string","description":"Unique reference of the entity"},"mediumType":{"type":"string","description":"Type of the contact medium, such as: email address, telephone number, postal address"},"preferred":{"type":"boolean","description":"If true, indicates that is the preferred contact medium"},"uuid":{"type":"string"},"validFor":{"description":"The time period that the contact medium is valid for","$ref":"#/definitions/TimePeriod"}},"title":"ContactMedium","description":"Indicates the contact medium that could be used to contact the party."},"Disability":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"disabilityCode":{"type":"string","description":"Code of the disability"},"disabilityName":{"type":"string","description":"Name of the disability"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"Disability","description":"Lack or inadequate strength or ability."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"string","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"string","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"ExternalReference":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"externalReferenceType":{"type":"string","description":"Type of the external reference"},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ExternalReference","description":"External reference of the individual or reference in other system"},"Individual":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"aristocraticTitle":{"type":"string","description":"e.g. Baron, Graf, Earl,…"},"birthDate":{"type":"string","format":"date-time","description":"Birth date"},"contactMedium":{"type":"array","items":{"$ref":"#/definitions/ContactMedium"}},"countryOfBirth":{"type":"string","description":"Country where the individual was born"},"creditRating":{"type":"array","items":{"$ref":"#/definitions/PartyCreditProfile"}},"deathDate":{"type":"string","format":"date-time","description":"Date of death"},"disability":{"type":"array","items":{"$ref":"#/definitions/Disability"}},"externalReference":{"type":"array","items":{"$ref":"#/definitions/ExternalReference"}},"familyName":{"type":"string","description":"Contains the non-chosen or inherited name. Also known as last name in the Western context"},"familyNamePrefix":{"type":"string","description":"Family name prefix"},"formattedName":{"type":"string","description":"A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean,…)"},"fullName":{"type":"string","description":"Full name flatten (first, middle, and last names)"},"gender":{"type":"string","description":"Gender"},"generation":{"type":"string","description":"e.g.. Sr, Jr, III (the third),…"},"givenName":{"type":"string","description":"First name of the individual"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"individualIdentification":{"type":"array","items":{"$ref":"#/definitions/IndividualIdentification"}},"languageAbility":{"type":"array","items":{"$ref":"#/definitions/LanguageAbility"}},"legalName":{"type":"string","description":"Legal name or birth name (name one has for official purposes)"},"location":{"type":"string","description":"Temporary current location od the individual (may be used if the individual has approved its sharing)"},"maritalStatus":{"type":"string","description":"Marital status (married, divorced, widow ...)"},"middleName":{"type":"string","description":"Middles name or initial"},"nationality":{"type":"string","description":"Nationality"},"otherName":{"type":"array","items":{"$ref":"#/definitions/OtherNameIndividual"}},"partyCharacteristic":{"type":"array","items":{"$ref":"#/definitions/Characteristic"}},"placeOfBirth":{"type":"string","description":"Reference to the place where the individual was born"},"preferredGivenName":{"type":"string","description":"Contains the chosen name by which the individual prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"skill":{"type":"array","items":{"$ref":"#/definitions/Skill"}},"status":{"type":"string","description":"Status of the individual","enum":["initialized","validated","deceaded"]},"taxExemptionCertificate":{"type":"array","items":{"$ref":"#/definitions/TaxExemptionCertificate"}},"title":{"type":"string","description":"Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ..."},"uuid":{"type":"string"}},"title":"Individual","description":"Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about."},"IndividualAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/IndividualAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"IndividualAttributeValueChangeEvent","description":"The notification data structure"},"IndividualAttributeValueChangeEventPayload":{"type":"object","properties":{"individual":{"description":"The involved resource data for the event","$ref":"#/definitions/Individual"}},"title":"IndividualAttributeValueChangeEventPayload","description":"The event data structure"},"IndividualCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"aristocraticTitle":{"type":"string","description":"e.g. Baron, Graf, Earl,…"},"birthDate":{"type":"string","format":"date-time","description":"Birth date"},"contactMedium":{"type":"array","items":{"$ref":"#/definitions/ContactMedium"}},"countryOfBirth":{"type":"string","description":"Country where the individual was born"},"creditRating":{"type":"array","items":{"$ref":"#/definitions/PartyCreditProfile"}},"deathDate":{"type":"string","format":"date-time","description":"Date of death"},"disability":{"type":"array","items":{"$ref":"#/definitions/Disability"}},"externalReference":{"type":"array","items":{"$ref":"#/definitions/ExternalReference"}},"familyName":{"type":"string","description":"Contains the non-chosen or inherited name. Also known as last name in the Western context"},"familyNamePrefix":{"type":"string","description":"Family name prefix"},"formattedName":{"type":"string","description":"A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean,…)"},"fullName":{"type":"string","description":"Full name flatten (first, middle, and last names)"},"gender":{"type":"string","description":"Gender"},"generation":{"type":"string","description":"e.g.. Sr, Jr, III (the third),…"},"givenName":{"type":"string","description":"First name of the individual"},"individualIdentification":{"type":"array","items":{"$ref":"#/definitions/IndividualIdentification"}},"languageAbility":{"type":"array","items":{"$ref":"#/definitions/LanguageAbility"}},"legalName":{"type":"string","description":"Legal name or birth name (name one has for official purposes)"},"location":{"type":"string","description":"Temporary current location od the individual (may be used if the individual has approved its sharing)"},"maritalStatus":{"type":"string","description":"Marital status (married, divorced, widow ...)"},"middleName":{"type":"string","description":"Middles name or initial"},"nationality":{"type":"string","description":"Nationality"},"otherName":{"type":"array","items":{"$ref":"#/definitions/OtherNameIndividual"}},"partyCharacteristic":{"type":"array","items":{"$ref":"#/definitions/Characteristic"}},"placeOfBirth":{"type":"string","description":"Reference to the place where the individual was born"},"preferredGivenName":{"type":"string","description":"Contains the chosen name by which the individual prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"skill":{"type":"array","items":{"$ref":"#/definitions/Skill"}},"status":{"type":"string","description":"Status of the individual","enum":["initialized","validated","deceaded"]},"taxExemptionCertificate":{"type":"array","items":{"$ref":"#/definitions/TaxExemptionCertificate"}},"title":{"type":"string","description":"Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ..."}},"title":"IndividualCreate","description":"Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about. Skipped properties: id,href"},"IndividualCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/IndividualCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"IndividualCreateEvent","description":"The notification data structure"},"IndividualCreateEventPayload":{"type":"object","properties":{"individual":{"description":"The involved resource data for the event","$ref":"#/definitions/Individual"}},"title":"IndividualCreateEventPayload","description":"The event data structure"},"IndividualDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/IndividualDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"IndividualDeleteEvent","description":"The notification data structure"},"IndividualDeleteEventPayload":{"type":"object","properties":{"individual":{"description":"The involved resource data for the event","$ref":"#/definitions/Individual"}},"title":"IndividualDeleteEventPayload","description":"The event data structure"},"IndividualIdentification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachment":{"$ref":"#/definitions/AttachmentRefOrValue"},"href":{"type":"string","description":"Unique reference of the entity"},"identificationId":{"type":"string","description":"Identifier"},"identificationType":{"type":"string","description":"Identification type (passport, national identity card, drivers license, social security number, birth certificate)"},"issuingAuthority":{"type":"string","description":"Authority which has issued the identifier, such as: social security, town hall"},"issuingDate":{"type":"string","format":"date-time","description":"Date at which the identifier was issued"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the identification information is valid.","$ref":"#/definitions/TimePeriod"}},"title":"IndividualIdentification","description":"Represents our registration of information used as proof of identity by an individual (passport, national identity card, drivers license, social security number, birth certificate)"},"IndividualStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/IndividualStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"IndividualStateChangeEvent","description":"The notification data structure"},"IndividualStateChangeEventPayload":{"type":"object","properties":{"individual":{"description":"The involved resource data for the event","$ref":"#/definitions/Individual"}},"title":"IndividualStateChangeEventPayload","description":"The event data structure"},"IndividualUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"aristocraticTitle":{"type":"string","description":"e.g. Baron, Graf, Earl,…"},"birthDate":{"type":"string","format":"date-time","description":"Birth date"},"contactMedium":{"type":"array","items":{"$ref":"#/definitions/ContactMedium"}},"countryOfBirth":{"type":"string","description":"Country where the individual was born"},"creditRating":{"type":"array","items":{"$ref":"#/definitions/PartyCreditProfile"}},"deathDate":{"type":"string","format":"date-time","description":"Date of death"},"disability":{"type":"array","items":{"$ref":"#/definitions/Disability"}},"externalReference":{"type":"array","items":{"$ref":"#/definitions/ExternalReference"}},"familyName":{"type":"string","description":"Contains the non-chosen or inherited name. Also known as last name in the Western context"},"familyNamePrefix":{"type":"string","description":"Family name prefix"},"formattedName":{"type":"string","description":"A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean,…)"},"fullName":{"type":"string","description":"Full name flatten (first, middle, and last names)"},"gender":{"type":"string","description":"Gender"},"generation":{"type":"string","description":"e.g.. Sr, Jr, III (the third),…"},"givenName":{"type":"string","description":"First name of the individual"},"individualIdentification":{"type":"array","items":{"$ref":"#/definitions/IndividualIdentification"}},"languageAbility":{"type":"array","items":{"$ref":"#/definitions/LanguageAbility"}},"legalName":{"type":"string","description":"Legal name or birth name (name one has for official purposes)"},"location":{"type":"string","description":"Temporary current location od the individual (may be used if the individual has approved its sharing)"},"maritalStatus":{"type":"string","description":"Marital status (married, divorced, widow ...)"},"middleName":{"type":"string","description":"Middles name or initial"},"nationality":{"type":"string","description":"Nationality"},"otherName":{"type":"array","items":{"$ref":"#/definitions/OtherNameIndividual"}},"partyCharacteristic":{"type":"array","items":{"$ref":"#/definitions/Characteristic"}},"placeOfBirth":{"type":"string","description":"Reference to the place where the individual was born"},"preferredGivenName":{"type":"string","description":"Contains the chosen name by which the individual prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname"},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"skill":{"type":"array","items":{"$ref":"#/definitions/Skill"}},"status":{"type":"string","description":"Status of the individual","enum":["initialized","validated","deceaded"]},"taxExemptionCertificate":{"type":"array","items":{"$ref":"#/definitions/TaxExemptionCertificate"}},"title":{"type":"string","description":"Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ..."}},"title":"IndividualUpdate","description":"Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about. Skipped properties: id,href"},"LanguageAbility":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"isFavouriteLanguage":{"type":"boolean","description":"A “true” value specifies whether the language is considered by the individual as his favourite one"},"languageCode":{"type":"string","description":"Language code (RFC 5646)"},"languageName":{"type":"string","description":"Language name"},"listeningProficiency":{"type":"string","description":"Listening proficiency evaluated for this language"},"readingProficiency":{"type":"string","description":"Reading proficiency evaluated for this language"},"speakingProficiency":{"type":"string","description":"Speaking proficiency evaluated for this language"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"writingProficiency":{"type":"string","description":"Writing proficiency evaluated for this language"}},"title":"LanguageAbility","description":"Ability of an individual to understand or converse in a language."},"MediumCharacteristic":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"city":{"type":"string","description":"The city"},"contactType":{"type":"string","description":"The type of contact, for example: phone number such as mobile, fixed home, fixed office. postal address such as shipping instalation…"},"country":{"type":"string","description":"The country"},"emailAddress":{"type":"string","description":"Full email address in standard format"},"faxNumber":{"type":"string","description":"The fax number of the contact"},"href":{"type":"string","description":"Unique reference of the entity"},"phoneNumber":{"type":"string","description":"The primary phone number of the contact"},"postCode":{"type":"string","description":"Postcode"},"socialNetworkId":{"type":"string","description":"Identifier as a member of a social network"},"stateOrProvince":{"type":"string","description":"State or province"},"street1":{"type":"string","description":"Describes the street"},"street2":{"type":"string","description":"Complementary street description"},"uuid":{"type":"string"}},"title":"MediumCharacteristic","description":"Describes the contact medium characteristics that could be used to contact a party (an individual or an organization)"},"Organization":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"contactMedium":{"type":"array","items":{"$ref":"#/definitions/ContactMedium"}},"creditRating":{"type":"array","items":{"$ref":"#/definitions/PartyCreditProfile"}},"existsDuring":{"$ref":"#/definitions/TimePeriod"},"externalReference":{"type":"array","items":{"$ref":"#/definitions/ExternalReference"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the organization"},"isHeadOffice":{"type":"boolean","description":"If value is true, the organization is the head office"},"isLegalEntity":{"type":"boolean","description":"If value is true, the organization is a legal entity known by a national referential."},"name":{"type":"string","description":"Name of the entity"},"nameType":{"type":"string","description":"Type of the name : Co, Inc, Ltd,…"},"organizationChildRelationship":{"type":"array","items":{"$ref":"#/definitions/OrganizationChildRelationship"}},"organizationIdentification":{"type":"array","items":{"$ref":"#/definitions/OrganizationIdentification"}},"organizationParentRelationship":{"$ref":"#/definitions/OrganizationParentRelationship"},"organizationType":{"type":"string","description":"Type of Organization (company, department...)"},"otherName":{"type":"array","items":{"$ref":"#/definitions/OtherNameOrganization"}},"partyCharacteristic":{"type":"array","items":{"$ref":"#/definitions/Characteristic"}},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"status":{"type":"string","description":"Status of the organization","enum":["initialized","validated","closed"]},"taxExemptionCertificate":{"type":"array","items":{"$ref":"#/definitions/TaxExemptionCertificate"}},"tradingName":{"type":"string","description":"Name that the organization (unit) trades under"},"uuid":{"type":"string"}},"title":"Organization","description":"Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data."},"OrganizationAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/OrganizationAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"OrganizationAttributeValueChangeEvent","description":"The notification data structure"},"OrganizationAttributeValueChangeEventPayload":{"type":"object","properties":{"organization":{"description":"The involved resource data for the event","$ref":"#/definitions/Organization"}},"title":"OrganizationAttributeValueChangeEventPayload","description":"The event data structure"},"OrganizationChildRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"organization":{"$ref":"#/definitions/OrganizationRef"},"relationshipType":{"type":"string","description":"Type of the relationship. Could be juridical, hierarchical, geographical, functional for example."},"uuid":{"type":"string"}},"title":"OrganizationChildRelationship","description":"Child references of an organization in a structure of organizations."},"OrganizationCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"contactMedium":{"type":"array","items":{"$ref":"#/definitions/ContactMedium"}},"creditRating":{"type":"array","items":{"$ref":"#/definitions/PartyCreditProfile"}},"existsDuring":{"$ref":"#/definitions/TimePeriod"},"externalReference":{"type":"array","items":{"$ref":"#/definitions/ExternalReference"}},"isHeadOffice":{"type":"boolean","description":"If value is true, the organization is the head office"},"isLegalEntity":{"type":"boolean","description":"If value is true, the organization is a legal entity known by a national referential."},"name":{"type":"string","description":"Organization name (department name for example)"},"nameType":{"type":"string","description":"Type of the name : Co, Inc, Ltd,…"},"organizationChildRelationship":{"type":"array","items":{"$ref":"#/definitions/OrganizationChildRelationship"}},"organizationIdentification":{"type":"array","items":{"$ref":"#/definitions/OrganizationIdentification"}},"organizationParentRelationship":{"$ref":"#/definitions/OrganizationParentRelationship"},"organizationType":{"type":"string","description":"Type of Organization (company, department...)"},"otherName":{"type":"array","items":{"$ref":"#/definitions/OtherNameOrganization"}},"partyCharacteristic":{"type":"array","items":{"$ref":"#/definitions/Characteristic"}},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"status":{"type":"string","description":"Status of the organization","enum":["initialized","validated","closed"]},"taxExemptionCertificate":{"type":"array","items":{"$ref":"#/definitions/TaxExemptionCertificate"}},"tradingName":{"type":"string","description":"Name that the organization (unit) trades under"}},"title":"OrganizationCreate","description":"Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data. Skipped properties: id,href"},"OrganizationCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/OrganizationCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"OrganizationCreateEvent","description":"The notification data structure"},"OrganizationCreateEventPayload":{"type":"object","properties":{"organization":{"description":"The involved resource data for the event","$ref":"#/definitions/Organization"}},"title":"OrganizationCreateEventPayload","description":"The event data structure"},"OrganizationDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/OrganizationDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"OrganizationDeleteEvent","description":"The notification data structure"},"OrganizationDeleteEventPayload":{"type":"object","properties":{"organization":{"description":"The involved resource data for the event","$ref":"#/definitions/Organization"}},"title":"OrganizationDeleteEventPayload","description":"The event data structure"},"OrganizationIdentification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachment":{"$ref":"#/definitions/AttachmentRefOrValue"},"href":{"type":"string","description":"Unique reference of the entity"},"identificationId":{"type":"string","description":"Identifier"},"identificationType":{"type":"string","description":"Type of identification information used to identify the company in a country or internationally"},"issuingAuthority":{"type":"string","description":"Authority which has issued the identifier (chamber of commerce...)"},"issuingDate":{"type":"string","format":"date-time","description":"Date at which the identifier was issued"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the identification information is valid.","$ref":"#/definitions/TimePeriod"}},"title":"OrganizationIdentification","description":"Represents our registration of information used as proof of identity by an organization"},"OrganizationParentRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the entity"},"organization":{"$ref":"#/definitions/OrganizationRef"},"relationshipType":{"type":"string","description":"Type of the relationship. Could be juridical, hierarchical, geographical, functional for example."},"uuid":{"type":"string"}},"title":"OrganizationParentRelationship","description":"Parent references of an organization in a structure of organizations."},"OrganizationRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"OrganizationRef"},"OrganizationStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"description":"The event payload linked to the involved resource object","$ref":"#/definitions/OrganizationStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"OrganizationStateChangeEvent","description":"The notification data structure"},"OrganizationStateChangeEventPayload":{"type":"object","properties":{"organization":{"description":"The involved resource data for the event","$ref":"#/definitions/Organization"}},"title":"OrganizationStateChangeEventPayload","description":"The event data structure"},"OrganizationUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"contactMedium":{"type":"array","items":{"$ref":"#/definitions/ContactMedium"}},"creditRating":{"type":"array","items":{"$ref":"#/definitions/PartyCreditProfile"}},"existsDuring":{"$ref":"#/definitions/TimePeriod"},"externalReference":{"type":"array","items":{"$ref":"#/definitions/ExternalReference"}},"isHeadOffice":{"type":"boolean","description":"If value is true, the organization is the head office"},"isLegalEntity":{"type":"boolean","description":"If value is true, the organization is a legal entity known by a national referential."},"name":{"type":"string","description":"Organization name (department name for example)"},"nameType":{"type":"string","description":"Type of the name : Co, Inc, Ltd,…"},"organizationChildRelationship":{"type":"array","items":{"$ref":"#/definitions/OrganizationChildRelationship"}},"organizationIdentification":{"type":"array","items":{"$ref":"#/definitions/OrganizationIdentification"}},"organizationParentRelationship":{"$ref":"#/definitions/OrganizationParentRelationship"},"organizationType":{"type":"string","description":"Type of Organization (company, department...)"},"otherName":{"type":"array","items":{"$ref":"#/definitions/OtherNameOrganization"}},"partyCharacteristic":{"type":"array","items":{"$ref":"#/definitions/Characteristic"}},"relatedParty":{"type":"array","items":{"$ref":"#/definitions/RelatedParty"}},"status":{"type":"string","description":"Status of the organization","enum":["initialized","validated","closed"]},"taxExemptionCertificate":{"type":"array","items":{"$ref":"#/definitions/TaxExemptionCertificate"}},"tradingName":{"type":"string","description":"Name that the organization (unit) trades under"}},"title":"OrganizationUpdate","description":"Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data. Skipped properties: id,href"},"OtherNameIndividual":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"aristocraticTitle":{"type":"string","description":"e.g. Baron, Graf, Earl,…"},"familyName":{"type":"string","description":"Contains the non-chosen or inherited name. Also known as last name in the Western context"},"familyNamePrefix":{"type":"string","description":"Family name prefix"},"formattedName":{"type":"string","description":". A fully formatted name in one string with all of its pieces in their proper place and all of the necessary punctuation. Useful for specific contexts (Chinese, Japanese, Korean,…)"},"fullName":{"type":"string","description":"Full name flatten (first, middle, and last names)"},"generation":{"type":"string","description":"e.g. Sr, Jr…"},"givenName":{"type":"string","description":"First name"},"href":{"type":"string","description":"Unique reference of the entity"},"legalName":{"type":"string","description":"Legal name or birth name (name one has for official purposes)"},"middleName":{"type":"string","description":"Middle name or initial"},"preferredGivenName":{"type":"string","description":"Contains the chosen name by which the person prefers to be addressed. Note: This name may be a name other than a given name, such as a nickname"},"title":{"type":"string","description":"Use for titles (aristrocatic, social, ...): Pr, Dr, Sir,...."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"OtherNameIndividual","description":"Keeps track of other names, for example the old name of a woman before marriage or an artist name."},"OtherNameOrganization":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the entity"},"nameType":{"type":"string","description":"Co. , Inc. , Ltd. , Pty Ltd. , Plc; , Gmbh"},"tradingName":{"type":"string","description":"The name that the organization trades under"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"OtherNameOrganization","description":"Keeps track of other names, for example the old name of an organization."},"PartyCreditProfile":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"creditAgencyName":{"type":"string","description":"Name of the credit agency giving the score"},"creditAgencyType":{"type":"string","description":"Type of the credit agency giving the score"},"href":{"type":"string","description":"Unique reference of the entity"},"ratingReference":{"type":"string","description":"Reference corresponding to the credit rating"},"ratingScore":{"type":"integer","format":"int32","description":"A measure of a party’s creditworthiness calculated on the basis of a combination of factors such as their income and credit history"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"PartyCreditProfile","description":"An individual might be evaluated for its worthiness and this evaluation might be based on a credit rating given by a credit agency."},"Quantity":{"type":"object","properties":{"amount":{"type":"number","format":"float","description":"Numeric value in a given unit"},"units":{"type":"string","description":"Unit"}},"title":"Quantity","description":"An amount in a given unit"},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"Skill":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"comment":{"type":"string","description":"A free text comment linked to the evaluation done"},"evaluatedLevel":{"type":"string","description":"Level of expertise in a skill evaluated for an individual"},"href":{"type":"string","description":"Unique reference of the entity"},"skillCode":{"type":"string","description":"Code of the skill"},"skillName":{"type":"string","description":"Name of the skill such as Java language,…"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"Skill","description":"Skills evaluated for an individual with a level and possibly with a limited validity when an obsolescence is defined (Ex: the first-aid certificate first level is limited to one year and an update training is required each year to keep the level)."},"TaxDefinition":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the tax."},"name":{"type":"string","description":"Name of the entity"},"taxType":{"type":"string","description":"Type of the tax."},"uuid":{"type":"string"}},"title":"TaxDefinition","description":"Reference of a tax definition. A tax is levied by an authorized tax jurisdiction. There are many different types of tax (Federal Tax levied by the US Government, State Tax levied by the State of California,…)."},"TaxExemptionCertificate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"attachment":{"$ref":"#/definitions/AttachmentRefOrValue"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the certificate of the tax exemption"},"taxDefinition":{"type":"array","items":{"$ref":"#/definitions/TaxDefinition"}},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"TaxExemptionCertificate","description":"A tax exemption certificate represents a tax exemption granted to a party (individual or organization) by a tax jurisdiction which may be a city, state, country,... An exemption has a certificate identifier (received from the jurisdiction that levied the tax) and a validity period. An exemption is per tax types and determines for each type of tax what portion of the tax is exempted (partial by percentage or complete) via the tax definition."},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/TMF633 - Service Catalog Management.json b/src/assets/swagger_collections/TMF633 - Service Catalog Management.json new file mode 100644 index 0000000000000000000000000000000000000000..84a478c084c242c6f6550bd48eb5593cc2fd3979 --- /dev/null +++ b/src/assets/swagger_collections/TMF633 - Service Catalog Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference: TMF633 - Service Catalog Management ### Release : 18.5 - December 2018 Service Catalog API is one of Catalog Management API Family. Service Catalog API goal is to provide a catalog of services. ### Resource - serviceCatalog ### Operations Service Catalog API performs the following operations on the resource : - Retrieve an entity or a collection of entities depending on filter criteria - Partial update of an entity (including updating rules) - Create an entity (including default values and creation rules) - Delete an entity (for administration purposes) - Manage notification of events","version":"4.0.0","title":"Service Catalog Management","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","basePath":"/tmf-api", "tags":[{"name":"export-job-api-controller-633","description":"the exportJob API"},{"name":"hub-api-controller","description":"the hub API"},{"name":"import-job-api-controller","description":"the importJob API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"service-candidate-api-controller","description":"the serviceCandidate API"},{"name":"service-catalog-api-controller","description":"the serviceCatalog API"},{"name":"service-category-api-controller","description":"the serviceCategory API"},{"name":"service-specification-api-controller","description":"the serviceSpecification API"}],"paths":{"/serviceCatalogManagement/v4/exportJob":{"get":{"tags":["exportJob"],"summary":"List or find ExportJob objects","description":"This operation list or find ExportJob entities","operationId":"listExportJob_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ExportJob"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["exportJob"],"summary":"Creates a ExportJob","description":"This operation creates a ExportJob entity.","operationId":"createExportJob_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"exportJob","description":"The ExportJob to be created","required":true,"schema":{"$ref":"#/definitions/ExportJobCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ExportJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ExportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/exportJob/{id}":{"get":{"tags":["exportJob"],"summary":"Retrieves a ExportJob by ID","description":"This operation retrieves a ExportJob entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveExportJob_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ExportJob","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ExportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["exportJob"],"summary":"Deletes a ExportJob","description":"This operation deletes a ExportJob entity.","operationId":"deleteExportJob_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ExportJob","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_3","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_3","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/importJob":{"get":{"tags":["importJob"],"summary":"List or find ImportJob objects","description":"This operation list or find ImportJob entities","operationId":"listImportJob_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ImportJob"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["importJob"],"summary":"Creates a ImportJob","description":"This operation creates a ImportJob entity.","operationId":"createImportJob_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"importJob","description":"The ImportJob to be created","required":true,"schema":{"$ref":"#/definitions/ImportJobCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ImportJob"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ImportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/importJob/{id}":{"get":{"tags":["importJob"],"summary":"Retrieves a ImportJob by ID","description":"This operation retrieves a ImportJob entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveImportJob_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ImportJob","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ImportJob"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["importJob"],"summary":"Deletes a ImportJob","description":"This operation deletes a ImportJob entity.","operationId":"deleteImportJob_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ImportJob","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCandidateChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCandidateChangeNotification","description":"Example of a client listener for receiving the notification ServiceCandidateChangeNotification","operationId":"listenToServiceCandidateChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCandidateChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCandidateCreateNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCandidateCreateNotification","description":"Example of a client listener for receiving the notification ServiceCandidateCreateNotification","operationId":"listenToServiceCandidateCreateNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCandidateCreateNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCandidateDeleteNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCandidateDeleteNotification","description":"Example of a client listener for receiving the notification ServiceCandidateDeleteNotification","operationId":"listenToServiceCandidateDeleteNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCandidateDeleteNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCatalogBatchNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCatalogBatchNotification","description":"Example of a client listener for receiving the notification ServiceCatalogBatchNotification","operationId":"listenToServiceCatalogBatchNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCatalogBatchNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCatalogChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCatalogChangeNotification","description":"Example of a client listener for receiving the notification ServiceCatalogChangeNotification","operationId":"listenToServiceCatalogChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCatalogChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCatalogCreateNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCatalogCreateNotification","description":"Example of a client listener for receiving the notification ServiceCatalogCreateNotification","operationId":"listenToServiceCatalogCreateNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCatalogCreateNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCatalogDeleteNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCatalogDeleteNotification","description":"Example of a client listener for receiving the notification ServiceCatalogDeleteNotification","operationId":"listenToServiceCatalogDeleteNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCatalogDeleteNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCategoryChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCategoryChangeNotification","description":"Example of a client listener for receiving the notification ServiceCategoryChangeNotification","operationId":"listenToServiceCategoryChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCategoryChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCategoryCreateNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCategoryCreateNotification","description":"Example of a client listener for receiving the notification ServiceCategoryCreateNotification","operationId":"listenToServiceCategoryCreateNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCategoryCreateNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceCategoryDeleteNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCategoryDeleteNotification","description":"Example of a client listener for receiving the notification ServiceCategoryDeleteNotification","operationId":"listenToServiceCategoryDeleteNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCategoryDeleteNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceSpecificationChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceSpecificationChangeNotification","description":"Example of a client listener for receiving the notification ServiceSpecificationChangeNotification","operationId":"listenToServiceSpecificationChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceSpecificationChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceSpecificationCreateNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceSpecificationCreateNotification","description":"Example of a client listener for receiving the notification ServiceSpecificationCreateNotification","operationId":"listenToServiceSpecificationCreateNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceSpecificationCreateNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/listener/serviceSpecificationDeleteNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceSpecificationDeleteNotification","description":"Example of a client listener for receiving the notification ServiceSpecificationDeleteNotification","operationId":"listenToServiceSpecificationDeleteNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceSpecificationDeleteNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceCandidate":{"get":{"tags":["serviceCandidate"],"summary":"List or find ServiceCandidate objects","description":"This operation list or find ServiceCandidate entities","operationId":"listServiceCandidate","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ServiceCandidate"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["serviceCandidate"],"summary":"Creates a ServiceCandidate","description":"This operation creates a ServiceCandidate entity.","operationId":"createServiceCandidate","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"serviceCandidate","description":"The ServiceCandidate to be created","required":true,"schema":{"$ref":"#/definitions/ServiceCandidateCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ServiceCandidate"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ServiceCandidate"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceCandidate/{id}":{"get":{"tags":["serviceCandidate"],"summary":"Retrieves a ServiceCandidate by ID","description":"This operation retrieves a ServiceCandidate entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveServiceCandidate","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ServiceCandidate","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ServiceCandidate"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["serviceCandidate"],"summary":"Deletes a ServiceCandidate","description":"This operation deletes a ServiceCandidate entity.","operationId":"deleteServiceCandidate","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceCandidate","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["serviceCandidate"],"summary":"Updates partially a ServiceCandidate","description":"This operation updates partially a ServiceCandidate entity.","operationId":"patchServiceCandidate","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceCandidate","required":true,"type":"string"},{"in":"body","name":"serviceCandidate","description":"The ServiceCandidate to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceCandidateUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ServiceCandidate"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceCatalog":{"get":{"tags":["serviceCatalog"],"summary":"List or find ServiceCatalog objects","description":"This operation list or find ServiceCatalog entities","operationId":"listServiceCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ServiceCatalog"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["serviceCatalog"],"summary":"Creates a ServiceCatalog","description":"This operation creates a ServiceCatalog entity.","operationId":"createServiceCatalog","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"serviceCatalog","description":"The ServiceCatalog to be created","required":true,"schema":{"$ref":"#/definitions/ServiceCatalogCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ServiceCatalog"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ServiceCatalog"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceCatalog/{id}":{"get":{"tags":["serviceCatalog"],"summary":"Retrieves a ServiceCatalog by ID","description":"This operation retrieves a ServiceCatalog entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveServiceCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ServiceCatalog","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ServiceCatalog"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["serviceCatalog"],"summary":"Deletes a ServiceCatalog","description":"This operation deletes a ServiceCatalog entity.","operationId":"deleteServiceCatalog","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceCatalog","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["serviceCatalog"],"summary":"Updates partially a ServiceCatalog","description":"This operation updates partially a ServiceCatalog entity.","operationId":"patchServiceCatalog","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceCatalog","required":true,"type":"string"},{"in":"body","name":"serviceCatalog","description":"The ServiceCatalog to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceCatalogUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ServiceCatalog"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceCategory":{"get":{"tags":["serviceCategory"],"summary":"List or find ServiceCategory objects","description":"This operation list or find ServiceCategory entities","operationId":"listServiceCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ServiceCategory"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"413":{"description":"Not modifed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["serviceCategory"],"summary":"Creates a ServiceCategory","description":"This operation creates a ServiceCategory entity.","operationId":"createServiceCategory","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"serviceCategory","description":"The ServiceCategory to be created","required":true,"schema":{"$ref":"#/definitions/ServiceCategoryCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ServiceCategory"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ServiceCategory"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceCategory/{id}":{"get":{"tags":["serviceCategory"],"summary":"Retrieves a ServiceCategory by ID","description":"This operation retrieves a ServiceCategory entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveServiceCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ServiceCategory","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ServiceCategory"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["serviceCategory"],"summary":"Deletes a ServiceCategory","description":"This operation deletes a ServiceCategory entity.","operationId":"deleteServiceCategory","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceCategory","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["serviceCategory"],"summary":"Updates partially a ServiceCategory","description":"This operation updates partially a ServiceCategory entity.","operationId":"patchServiceCategory","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceCategory","required":true,"type":"string"},{"in":"body","name":"serviceCategory","description":"The ServiceCategory to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceCategoryUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ServiceCategory"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification":{"get":{"tags":["serviceSpecification"],"summary":"List or find ServiceSpecification objects","description":"This operation list or find ServiceSpecification entities","operationId":"listServiceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ServiceSpecification"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["serviceSpecification"],"summary":"Creates a ServiceSpecification","description":"This operation creates a ServiceSpecification entity.","operationId":"createServiceSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"serviceSpecification","description":"The ServiceSpecification to be created","required":true,"schema":{"$ref":"#/definitions/ServiceSpecificationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ServiceSpecification"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ServiceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/cloneGST":{"get":{"tags":["serviceSpecification"],"summary":"Clones a GST ServiceSpecification","description":"This operation clones a ServiceSpecification GST entity. The response is the cloned spec","operationId":"cloneGSTServiceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"serviceName","in":"query","description":"A name of the cloned GST","required":true,"type":"string"}],"responses":{"200":{"description":"Cloned","schema":{"$ref":"#/definitions/ServiceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/cloneVINNI":{"get":{"tags":["serviceSpecification"],"summary":"Clones a VINNI ServiceSpecification","description":"This operation clones a ServiceSpecification 5G-VINNI entity. The response is the cloned spec","operationId":"cloneVINNIServiceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"addServiceExposureLevel1","in":"query","description":"If true adds a Service Exposure Level1 Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceExposureLevel2","in":"query","description":"If true adds a Service Exposure Level2 Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceExposureLevel3","in":"query","description":"If true adds a Service Exposure Level3 Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceExposureLevel4","in":"query","description":"If true adds a Service Exposure Level4 Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceMonitoring","in":"query","description":"If true adds a Service Monitoring Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceNSD","in":"query","description":"If true adds a Service 3rd party NSD Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceRequirements","in":"query","description":"If true adds a Service Requirements Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceTesting","in":"query","description":"If true adds a Service Testing Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceTopology","in":"query","description":"If true adds a Service Topology Spec in the Bundle","required":true,"type":"boolean"},{"name":"addServiceVNF","in":"query","description":"If true adds a Service 3rd party VNF Spec in the Bundle","required":true,"type":"boolean"},{"name":"serviceName","in":"query","description":"A name of the cloned VINNI Template","required":true,"type":"string"}],"responses":{"200":{"description":"Cloned","schema":{"$ref":"#/definitions/ServiceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/specFromNSDID/{id}":{"get":{"tags":["serviceSpecification"],"summary":"Creates a ServiceSpecification from an NSD id. It retreives the NSD from the NSD/VNF catalog","description":"This operation creates a ServiceSpecification from an NSD id. It retreives the NSD from the NSD/VNF catalog. The response is the cloned spec","operationId":"createServiceSpecificationFromNSDID","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the NSD id from the NSD/VNF catalog","required":true,"type":"string"}],"responses":{"200":{"description":"Created","schema":{"$ref":"#/definitions/ServiceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/specFromTestSpec/{id}":{"get":{"tags":["serviceSpecification"],"summary":"Creates a ServiceSpecification from an ServiceTestSpecification id. It retreives the ServicTestSpecification from the ServiceTestSpecification catalog","description":"This operation creates a ServiceSpecification from a ServiceTestSpecification id. It retreives the ServiceTestSpecification from the ServiceTestSpecification catalog. The response is the Service Spec","operationId":"createServiceSpecificationFromServiceTestSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceTestSpecification id from the ServiceTestSpecification catalog","required":true,"type":"string"}],"responses":{"200":{"description":"Created","schema":{"$ref":"#/definitions/ServiceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/{id}":{"get":{"tags":["serviceSpecification"],"summary":"Retrieves a ServiceSpecification by ID","description":"This operation retrieves a ServiceSpecification entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveServiceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ServiceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ServiceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["serviceSpecification"],"summary":"Deletes a ServiceSpecification","description":"This operation deletes a ServiceSpecification entity.","operationId":"deleteServiceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["serviceSpecification"],"summary":"Updates partially a ServiceSpecification","description":"This operation updates partially a ServiceSpecification entity.","operationId":"patchServiceSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceSpecification","required":true,"type":"string"},{"in":"body","name":"serviceSpecification","description":"The ServiceSpecification to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceSpecificationUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ServiceSpecification"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/{id}/attachment":{"post":{"tags":["serviceSpecification"],"summary":"Adds an attachment to a ServiceSpecification","description":"This operation adds an attachment to a ServiceSpecification and updates partially a ServiceSpecification entity","operationId":"addAttachmentToServiceSpecification","consumes":["multipart/form-data"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"afile","description":"The Attachment file to be added","required":true,"schema":{"type":"string","format":"binary"}},{"name":"id","in":"path","description":"Identifier of the ServiceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Attachment"}},"201":{"description":"Created"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/{id}/attachment/{attid}":{"get":{"tags":["serviceSpecification"],"summary":"Get an attachment","description":"This operation gets an attachment","operationId":"getAttachment","produces":["*/*"],"parameters":[{"name":"attid","in":"path","description":"Identifier of the Attachment","required":true,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ServiceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ByteArrayResource"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/{id}/attachment/{attid}/{afilename}":{"get":{"tags":["serviceSpecification"],"summary":"Get an attachment with filename","description":"This operation gets an attachment","operationId":"getAttachmentWithFilename","produces":["*/*"],"parameters":[{"name":"afilename","in":"path","description":"Identifier of the Filename","required":true,"type":"string"},{"name":"attid","in":"path","description":"Identifier of the Attachment","required":true,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ServiceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ByteArrayResource"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/{id}/clone":{"get":{"tags":["serviceSpecification"],"summary":"Clones a ServiceSpecification","description":"This operation clones a ServiceSpecification entity. The response is the cloned spec","operationId":"cloneServiceSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceSpecification to clone","required":true,"type":"string"}],"responses":{"200":{"description":"Cloned","schema":{"$ref":"#/definitions/ServiceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceCatalogManagement/v4/serviceSpecification/{id}/sd":{"get":{"tags":["serviceSpecification"],"summary":"Retrieves a ServiceDescriptor by ServiceSpecification ID","description":"This operation retrieves a Service Descriptor entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveServiceSpecificationDescriptor","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ServiceSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"Attachment":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachmentType":{"type":"string","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"description":"The size of the attachment.","$ref":"#/definitions/Quantity"},"url":{"type":"string","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which the attachment is valid","$ref":"#/definitions/TimePeriod"}},"title":"Attachment","description":"Complements the description of an element (for instance a product) through video, pictures..."},"AttachmentRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"url":{"type":"string","description":"Link to the attachment media/content"},"uuid":{"type":"string"}},"title":"AttachmentRef","description":"Attachment reference. An attachment complements the description of an element (for instance a product) through video, pictures"},"ByteArrayResource":{"type":"object","properties":{"byteArray":{"type":"string","format":"byte"},"description":{"type":"string"},"file":{"type":"file"},"filename":{"type":"string"},"inputStream":{"$ref":"#/definitions/InputStream"},"open":{"type":"boolean"},"readable":{"type":"boolean"},"uri":{"type":"string","format":"uri"},"url":{"type":"string","format":"url"}},"title":"ByteArrayResource"},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"integer","format":"int32","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"integer","format":"int32","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"ExportJob":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Data at which the job was completed"},"contentType":{"type":"string","description":"The format of the exported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure"},"href":{"type":"string","description":"Reference of the export job"},"id":{"type":"string","description":"Identifier of the export job"},"path":{"type":"string","description":"URL of the root resource acting as the source for streaming content to the file specified by the export job"},"query":{"type":"string","description":"Used to scope the exported data"},"status":{"type":"string","description":"Status of the export job (not started, running, succeeded, failed)"},"url":{"type":"string","description":"URL of the file containing the data to be exported"}},"title":"ExportJob","description":"Represents a task used to export resources to a file"},"ExportJobCreate":{"type":"object","required":["url"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Data at which the job was completed"},"contentType":{"type":"string","description":"The format of the exported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure"},"path":{"type":"string","description":"URL of the root resource acting as the source for streaming content to the file specified by the export job"},"query":{"type":"string","description":"Used to scope the exported data"},"status":{"type":"string","description":"Status of the export job (not started, running, succeeded, failed)"},"url":{"type":"string","description":"URL of the file containing the data to be exported"}},"title":"ExportJobCreate","description":"Represents a task used to export resources to a file Skipped properties: id,href"},"ImportJob":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Date at which the job was completed"},"contentType":{"type":"string","description":"Indicates the format of the imported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure if status is failed"},"href":{"type":"string","description":"Reference of the import job"},"id":{"type":"string","description":"Identifier of the import job"},"path":{"type":"string","description":"URL of the root resource where the content of the file specified by the import job must be applied"},"status":{"type":"string","description":"Status of the import job (not started, running, succeeded, failed)"},"url":{"type":"string","description":"URL of the file containing the data to be imported"}},"title":"ImportJob","description":"Represents a task used to import resources from a file"},"ImportJobCreate":{"type":"object","required":["url"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"completionDate":{"type":"string","format":"date-time","description":"Date at which the job was completed"},"contentType":{"type":"string","description":"Indicates the format of the imported data"},"creationDate":{"type":"string","format":"date-time","description":"Date at which the job was created"},"errorLog":{"type":"string","description":"Reason for failure if status is failed"},"path":{"type":"string","description":"URL of the root resource where the content of the file specified by the import job must be applied"},"status":{"type":"string","description":"Status of the import job (not started, running, succeeded, failed)"},"url":{"type":"string","description":"URL of the file containing the data to be imported"}},"title":"ImportJobCreate","description":"Represents a task used to import resources from a file Skipped properties: id,href"},"InputStream":{"type":"object","title":"InputStream"},"Quantity":{"type":"object","properties":{"amount":{"type":"number","format":"float","description":"Numeric value in a given unit"},"units":{"type":"string","description":"Unit"}},"title":"Quantity","description":"An amount in a given unit"},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"ResourceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"version":{"type":"string","description":"Resource specification version"}},"title":"ResourceSpecificationRef","description":"Resource Specification reference: The ResourceSpecification is required to realize a ProductSpecification."},"ServiceCandidate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"array","description":"The category specification implied by this candidate","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"serviceSpecification":{"description":"The service specification implied by this candidate","$ref":"#/definitions/ServiceSpecificationRef"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceCandidate","description":"ServiceCandidate is an entity that makes a service specification available to a catalog. A ServiceCandidate and its associated service specification may be published - made visible - in any number of service catalogs, or in none. One service specification can be composed of other service specifications."},"ServiceCandidateChangeEvent":{"type":"object","properties":{"serviceCandidate":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCandidate"}},"title":"ServiceCandidateChangeEvent","description":"The event data structure"},"ServiceCandidateChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCandidateChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCandidateChangeNotification","description":"The notification data structure"},"ServiceCandidateCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"array","description":"List of categories for this candidate","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of this REST resource"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update of this REST resource"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of the service candidate."},"name":{"type":"string","description":"Name given to this REST resource"},"serviceSpecification":{"description":"The service specification implied by this candidate","$ref":"#/definitions/ServiceSpecificationRef"},"validFor":{"description":"The period for which this REST resource is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"the version of service candidate"}},"title":"ServiceCandidateCreate","description":"ServiceCandidate is an entity that makes a service specification available to a catalog. A ServiceCandidate and its associated service specification may be published - made visible - in any number of service catalogs, or in none. One service specification can be composed of other service specifications. Skipped properties: id,href"},"ServiceCandidateCreateEvent":{"type":"object","properties":{"serviceCandidate":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCandidate"}},"title":"ServiceCandidateCreateEvent","description":"The event data structure"},"ServiceCandidateCreateNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCandidateCreateEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCandidateCreateNotification","description":"The notification data structure"},"ServiceCandidateDeleteEvent":{"type":"object","properties":{"serviceCandidate":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCandidate"}},"title":"ServiceCandidateDeleteEvent","description":"The event data structure"},"ServiceCandidateDeleteNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCandidateDeleteEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCandidateDeleteNotification","description":"The notification data structure"},"ServiceCandidateRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"version":{"type":"string","description":"Version of the service candidate"}},"title":"ServiceCandidateRef","description":"ServiceCandidate reference. ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog."},"ServiceCandidateUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"array","description":"List of categories for this candidate","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of this REST resource"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of the service candidate."},"name":{"type":"string","description":"Name given to this REST resource"},"serviceSpecification":{"description":"The service specification implied by this candidate","$ref":"#/definitions/ServiceSpecificationRef"},"validFor":{"description":"The period for which this REST resource is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"the version of service candidate"}},"title":"ServiceCandidateUpdate","description":"ServiceCandidate is an entity that makes a service specification available to a catalog. A ServiceCandidate and its associated service specification may be published - made visible - in any number of service catalogs, or in none. One service specification can be composed of other service specifications. Skipped properties: id,href,lastUpdate"},"ServiceCatalog":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"array","description":"List of service categories associated with this catalog","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"relatedParty":{"type":"array","description":"List of parties or party roles related to this category","items":{"$ref":"#/definitions/RelatedParty"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceCatalog","description":"The root entity for service catalog management. A service catalog is a group of service specifications made available through service candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). A service catalog typically includes name, description and time period that is valid for. It will have a list of ServiceCandidate catalog items. A ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. A ServiceCandidate and its associated ServiceSpecification may be \"published\" - made visible -in any number of ServiceCatalogs, or in none."},"ServiceCatalogBatchEvent":{"type":"object","properties":{"serviceCatalog":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCatalog"}},"title":"ServiceCatalogBatchEvent","description":"The event data structure"},"ServiceCatalogBatchNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCatalogBatchEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCatalogBatchNotification","description":"The notification data structure"},"ServiceCatalogChangeEvent":{"type":"object","properties":{"serviceCatalog":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCatalog"}},"title":"ServiceCatalogChangeEvent","description":"The event data structure"},"ServiceCatalogChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCatalogChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCatalogChangeNotification","description":"The notification data structure"},"ServiceCatalogCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"array","description":"List of service categories associated with this catalog","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the service catalog"},"relatedParty":{"type":"array","description":"List of parties or party roles related to this category","items":{"$ref":"#/definitions/RelatedParty"}},"validFor":{"description":"The period for which the service catalog is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"ServiceCatalog version"}},"title":"ServiceCatalogCreate","description":"The root entity for service catalog management. A service catalog is a group of service specifications made available through service candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). A service catalog typically includes name, description and time period that is valid for. It will have a list of ServiceCandidate catalog items. A ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. A ServiceCandidate and its associated ServiceSpecification may be \"published\" - made visible -in any number of ServiceCatalogs, or in none. Skipped properties: id,href"},"ServiceCatalogCreateEvent":{"type":"object","properties":{"serviceCatalog":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCatalog"}},"title":"ServiceCatalogCreateEvent","description":"The event data structure"},"ServiceCatalogCreateNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCatalogCreateEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCatalogCreateNotification","description":"The notification data structure"},"ServiceCatalogDeleteEvent":{"type":"object","properties":{"serviceCatalog":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCatalog"}},"title":"ServiceCatalogDeleteEvent","description":"The event data structure"},"ServiceCatalogDeleteNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCatalogDeleteEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCatalogDeleteNotification","description":"The notification data structure"},"ServiceCatalogUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"array","description":"List of service categories associated with this catalog","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the service catalog"},"relatedParty":{"type":"array","description":"List of parties or party roles related to this category","items":{"$ref":"#/definitions/RelatedParty"}},"validFor":{"description":"The period for which the service catalog is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"ServiceCatalog version"}},"title":"ServiceCatalogUpdate","description":"The root entity for service catalog management. A service catalog is a group of service specifications made available through service candidates that an organization provides to the consumers (internal consumers like its employees or B2B customers or B2C customers). A service catalog typically includes name, description and time period that is valid for. It will have a list of ServiceCandidate catalog items. A ServiceCandidate is an entity that makes a ServiceSpecification available to a catalog. A ServiceCandidate and its associated ServiceSpecification may be \"published\" - made visible -in any number of ServiceCatalogs, or in none. Skipped properties: id,href,lastUpdate"},"ServiceCategory":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"array","description":"List of child categories in the tree for in this category","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"serviceCandidate":{"type":"array","description":"List of service candidates associated with this category","items":{"$ref":"#/definitions/ServiceCandidateRef"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceCategory","description":"The (service) category resource is used to group service candidates in logical containers. Categories can contain other categories."},"ServiceCategoryChangeEvent":{"type":"object","properties":{"serviceCategory":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCategory"}},"title":"ServiceCategoryChangeEvent","description":"The event data structure"},"ServiceCategoryChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCategoryChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCategoryChangeNotification","description":"The notification data structure"},"ServiceCategoryCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"array","description":"List of child categories in the tree for in this category","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of the category"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the category"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"serviceCandidate":{"type":"array","description":"List of service candidates associated with this category","items":{"$ref":"#/definitions/ServiceCandidateRef"}},"validFor":{"description":"The period for which the category is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"ServiceCategory version"}},"title":"ServiceCategoryCreate","description":"The (service) category resource is used to group service candidates in logical containers. Categories can contain other categories. Skipped properties: id,href"},"ServiceCategoryCreateEvent":{"type":"object","properties":{"serviceCategory":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCategory"}},"title":"ServiceCategoryCreateEvent","description":"The event data structure"},"ServiceCategoryCreateNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCategoryCreateEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCategoryCreateNotification","description":"The notification data structure"},"ServiceCategoryDeleteEvent":{"type":"object","properties":{"serviceCategory":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceCategory"}},"title":"ServiceCategoryDeleteEvent","description":"The event data structure"},"ServiceCategoryDeleteNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCategoryDeleteEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCategoryDeleteNotification","description":"The notification data structure"},"ServiceCategoryRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"}},"title":"ServiceCategoryRef","description":"The (service) category resource is used to group service candidates in logical containers. Categories can contain other categories."},"ServiceCategoryUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"array","description":"List of child categories in the tree for in this category","items":{"$ref":"#/definitions/ServiceCategoryRef"}},"description":{"type":"string","description":"Description of the category"},"isRoot":{"type":"boolean","description":"If true, this Boolean indicates that the category is a root of categories"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the category"},"parentId":{"type":"string","description":"Unique identifier of the parent category"},"serviceCandidate":{"type":"array","description":"List of service candidates associated with this category","items":{"$ref":"#/definitions/ServiceCandidateRef"}},"validFor":{"description":"The period for which the category is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"ServiceCategory version"}},"title":"ServiceCategoryUpdate","description":"The (service) category resource is used to group service candidates in logical containers. Categories can contain other categories. Skipped properties: id,href,lastUpdate"},"ServiceDescriptor":{"type":"object","properties":{"metadata":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceDescriptorAttr"}},"rootEntityID":{"type":"string"},"rootEntityType":{"type":"string"},"uuid":{"type":"string"}},"title":"ServiceDescriptor","description":"This model will hold information that will help later on service orchestration."},"ServiceDescriptorAttr":{"type":"object","properties":{"name":{"type":"string"},"uuid":{"type":"string"},"value":{"type":"string"}},"title":"ServiceDescriptorAttr"},"ServiceLevelSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ServiceLevelSpecificationRef","description":"A Service Level Specification represents a pre-defined or negotiated set of Service Level Objectives. In addition, certain consequences are associated with not meeting the Service Level Objectives. Service Level Agreements are expressed in terms of Service Level Specifications."},"ServiceSpecCharRelationship":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"relationshipType":{"type":"string","description":"Type of relationship such as aggregation, migration, substitution, dependency, exclusivity"},"role":{"type":"string","description":"The association role for this service specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the serviceSpecCharRelationship is valid","$ref":"#/definitions/TimePeriod"}},"title":"ServiceSpecCharRelationship","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among serviceSpecCharacteristics."},"ServiceSpecCharacteristic":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"@valueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type."},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the serviceSpecCharacteristic is configurable"},"description":{"type":"string","description":"A narrative that explains in detail what the serviceSpecCharacteristic is"},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for an Entity."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"Name of the entity"},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"serviceSpecCharRelationship":{"type":"array","description":"A list of service spec char relationships (ServiceSpecCharRelationship [*]). An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceSpecCharRelationship"}},"serviceSpecCharacteristicValue":{"type":"array","description":"A list of service spec characteristic values (ServiceSpecCharacteristicValue [*]). A ServiceSpecCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ServiceSpecCharacteristic object. The values of the attributes in the ServiceSpecCharacteristicValue object describe the values of the attributes that a corresponding ServiceSpecCharacteristic object can take on.","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceSpecCharacteristicValue"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the serviceSpecCharacteristic is valid","$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"}},"title":"ServiceSpecCharacteristic","description":"This class represents the key features of this service specification. For example, bandwidth is a characteristic of many different types of services; if bandwidth is a relevant characteristic (e.g., from the point-of-view of a Customer obtaining this Service via a Product) then bandwidth would be a ServiceSpecCharacteristic for that particular Service."},"ServiceSpecCharacteristicValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"isDefault":{"type":"boolean","description":"Indicates if the value is the default value for a characteristic"},"rangeInterval":{"type":"string","description":"An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are \"open\", \"closed\", \"closedBottom\" and \"closedTop\"."},"regex":{"type":"string","description":"A regular expression constraint for given value"},"unitOfMeasure":{"type":"string","description":"A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot."},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which a value is applicable","$ref":"#/definitions/TimePeriod"},"value":{"description":"A discrete value that the characteristic can take on, or the actual value of the characteristic","$ref":"#/definitions/Any"},"valueFrom":{"type":"integer","format":"int32","description":"The low range value that a characteristic can take on"},"valueTo":{"type":"integer","format":"int32","description":"The upper range value that a characteristic can take on"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text, and so forth"}},"title":"ServiceSpecCharacteristicValue","description":"A ServiceSpecCharacteristicValue object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a ServiceSpecCharacteristic object. The values of the attributes in the ServiceSpecCharacteristicValue object describe the values of the attributes that a corresponding ServiceSpecCharacteristic object can take on."},"ServiceSpecRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"relationshipType":{"type":"string","description":"Type of relationship such as migration, substitution, dependency, exclusivity"},"role":{"type":"string","description":"The association role for this service specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the serviceSpecRelationship is valid","$ref":"#/definitions/TimePeriod"}},"title":"ServiceSpecRelationship","description":"A migration, substitution, dependency or exclusivity relationship between/among service specifications."},"ServiceSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachment":{"type":"array","description":"A list of attachments (Attachment [*]). Complements the description of the specification through video, pictures...","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRef"}},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"isBundle":{"type":"boolean","description":"isBundle determines whether a ServiceSpecification represents a single ServiceSpecification (false), or a bundle of ServiceSpecification (true)."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [*]). A related party defines party or party role linked to a specific entity.","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"resourceSpecification":{"type":"array","description":"A list of resource specification references (ResourceSpecificationRef [*]). The ResourceSpecification is required for a service specification with type ResourceFacingServiceSpecification (RFSS).","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceSpecificationRef"}},"serviceLevelSpecification":{"type":"array","description":"A list of service level specifications related to this service specification, and which will need to be satisifiable for corresponding service instances; e.g. Gold, Platinum","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceLevelSpecificationRef"}},"serviceSpecCharacteristic":{"type":"array","description":"A list of service spec characteristics (ServiceSpecCharacteristic [*]). This class represents the key features of this service specification.","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceSpecCharacteristic"}},"serviceSpecRelationship":{"type":"array","description":"A list of service specifications related to this specification, e.g. migration, substitution, dependency or exclusivity relationship","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceSpecRelationship"}},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceSpecification","description":"ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics."},"ServiceSpecificationChangeEvent":{"type":"object","properties":{"serviceSpecification":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceSpecification"}},"title":"ServiceSpecificationChangeEvent","description":"The event data structure"},"ServiceSpecificationChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceSpecificationChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceSpecificationChangeNotification","description":"The notification data structure"},"ServiceSpecificationCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"attachment":{"type":"array","description":"A list of attachments (Attachment [*]). Complements the description of the specification through video, pictures...","items":{"$ref":"#/definitions/AttachmentRef"}},"description":{"type":"string","description":"A narrative that explains in detail what the service specification is"},"isBundle":{"type":"boolean","description":"isBundle determines whether a ServiceSpecification represents a single ServiceSpecification (false), or a bundle of ServiceSpecification (true)."},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update of the service specification"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of the service specification"},"name":{"type":"string","description":"Name of the service specification"},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [*]). A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"resourceSpecification":{"type":"array","description":"A list of resource specification references (ResourceSpecificationRef [*]). The ResourceSpecification is required for a service specification with type ResourceFacingServiceSpecification (RFSS).","items":{"$ref":"#/definitions/ResourceSpecificationRef"}},"serviceLevelSpecification":{"type":"array","description":"A list of service level specifications related to this service specification, and which will need to be satisifiable for corresponding service instances; e.g. Gold, Platinum","items":{"$ref":"#/definitions/ServiceLevelSpecificationRef"}},"serviceSpecCharacteristic":{"type":"array","description":"A list of service spec characteristics (ServiceSpecCharacteristic [*]). This class represents the key features of this service specification.","items":{"$ref":"#/definitions/ServiceSpecCharacteristic"}},"serviceSpecRelationship":{"type":"array","description":"A list of service specifications related to this specification, e.g. migration, substitution, dependency or exclusivity relationship","items":{"$ref":"#/definitions/ServiceSpecRelationship"}},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"validFor":{"description":"The period for which the service specification is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationCreate","description":"ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics. Skipped properties: id,href"},"ServiceSpecificationCreateEvent":{"type":"object","properties":{"serviceSpecification":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceSpecification"}},"title":"ServiceSpecificationCreateEvent","description":"The event data structure"},"ServiceSpecificationCreateNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceSpecificationCreateEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceSpecificationCreateNotification","description":"The notification data structure"},"ServiceSpecificationDeleteEvent":{"type":"object","properties":{"serviceSpecification":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceSpecification"}},"title":"ServiceSpecificationDeleteEvent","description":"The event data structure"},"ServiceSpecificationDeleteNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceSpecificationDeleteEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceSpecificationDeleteNotification","description":"The notification data structure"},"ServiceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationRef","description":"Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification."},"ServiceSpecificationUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"attachment":{"type":"array","description":"A list of attachments (Attachment [*]). Complements the description of the specification through video, pictures...","items":{"$ref":"#/definitions/AttachmentRef"}},"description":{"type":"string","description":"A narrative that explains in detail what the service specification is"},"isBundle":{"type":"boolean","description":"isBundle determines whether a ServiceSpecification represents a single ServiceSpecification (false), or a bundle of ServiceSpecification (true)."},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of the service specification"},"name":{"type":"string","description":"Name of the service specification"},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [*]). A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"resourceSpecification":{"type":"array","description":"A list of resource specification references (ResourceSpecificationRef [*]). The ResourceSpecification is required for a service specification with type ResourceFacingServiceSpecification (RFSS).","items":{"$ref":"#/definitions/ResourceSpecificationRef"}},"serviceLevelSpecification":{"type":"array","description":"A list of service level specifications related to this service specification, and which will need to be satisifiable for corresponding service instances; e.g. Gold, Platinum","items":{"$ref":"#/definitions/ServiceLevelSpecificationRef"}},"serviceSpecCharacteristic":{"type":"array","description":"A list of service spec characteristics (ServiceSpecCharacteristic [*]). This class represents the key features of this service specification.","items":{"$ref":"#/definitions/ServiceSpecCharacteristic"}},"serviceSpecRelationship":{"type":"array","description":"A list of service specifications related to this specification, e.g. migration, substitution, dependency or exclusivity relationship","items":{"$ref":"#/definitions/ServiceSpecRelationship"}},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"validFor":{"description":"The period for which the service specification is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationUpdate","description":"ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics. Skipped properties: id,href,lastUpdate"},"TargetServiceSchema":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"}},"title":"TargetServiceSchema","description":"The reference object to the schema and type of target service which is described by service specification"},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/TMF638 - Service Inventory Management.json b/src/assets/swagger_collections/TMF638 - Service Inventory Management.json new file mode 100644 index 0000000000000000000000000000000000000000..f1841dcab081ffd998a2bbc859aa521070fac50c --- /dev/null +++ b/src/assets/swagger_collections/TMF638 - Service Inventory Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference : TMF 638 - Service Inventory Management v4 Release 18.5 - Dec 2018 The intent of this API is to provide a consistent/standardized mechanism to query and manipulate the Service inventory. The Service Inventory API can be used to query the service instances for a customer via Self Service Portal or the Call Centre operator can query the service instances on behalf of the customer while a customer may have a complaint or a query. Note: Only the CustomerFacingServices instances will be presented to the customer. The Service Inventory API can be called by the Service Order Management to create a new service instance/ update an existing service instance in the Service Inventory. ### Service resource Service is an abstract base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. ### Service Inventory API performs the following operations on service : - Retrieve a service or a collection of services depending on filter criteria - Partial update of a service (including updating rules) - Create a service (including default values and creation rules and for administration users only) - Delete a service (for administration users only) - Notification of events on service Copyright (c)TM Forum 2018. All Rights Reserved.","version":"4.0.0","title":"Service Inventory Management","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","basePath":"/tmf-api","tags":[{"name":"hub-api-controller","description":"the hub API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"service-api-controller","description":"the service API"}],"paths":{"/serviceInventory/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_4","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceInventory/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_4","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceInventory/v4/listener/serviceAttributeValueChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceAttributeValueChangeNotification","description":"Example of a client listener for receiving the notification ServiceAttributeValueChangeNotification","operationId":"listenToServiceAttributeValueChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceAttributeValueChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceInventory/v4/listener/serviceBatchNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceBatchNotification","description":"Example of a client listener for receiving the notification ServiceBatchNotification","operationId":"listenToServiceBatchNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceBatchNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceInventory/v4/listener/serviceCreateNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCreateNotification","description":"Example of a client listener for receiving the notification ServiceCreateNotification","operationId":"listenToServiceCreateNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCreateNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceInventory/v4/listener/serviceDeleteNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceDeleteNotification","description":"Example of a client listener for receiving the notification ServiceDeleteNotification","operationId":"listenToServiceDeleteNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceDeleteNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceInventory/v4/listener/serviceStateChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceStateChangeNotification","description":"Example of a client listener for receiving the notification ServiceStateChangeNotification","operationId":"listenToServiceStateChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceStateChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceInventory/v4/service":{"get":{"tags":["service"],"summary":"List or find Service objects","description":"This operation list or find Service entities","operationId":"listService","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Service"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"post":{"tags":["service"],"summary":"Creates a Service","description":"This operation creates a Service entity.","operationId":"createService","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"service","description":"The Service to be created","required":true,"schema":{"$ref":"#/definitions/ServiceCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Service"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Service"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceInventory/v4/service/{id}":{"get":{"tags":["service"],"summary":"Retrieves a Service by ID","description":"This operation retrieves a Service entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveService","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the Service","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Service"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"delete":{"tags":["service"],"summary":"Deletes a Service","description":"This operation deletes a Service entity.","operationId":"deleteService","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Service","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"patch":{"tags":["service"],"summary":"Updates partially a Service","description":"This operation updates partially a Service entity.","operationId":"patchService","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Service","required":true,"type":"string"},{"in":"body","name":"service","description":"The Service to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Service"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"Characteristic":{"type":"object","required":["value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"value":{"description":"The value of the characteristic","$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"Characteristic","description":"Describes a given characteristic of an object or entity through a name/value pair."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"integer","format":"int32","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"integer","format":"int32","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"Note":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"author":{"type":"string","description":"Author of the note"},"date":{"type":"string","format":"date-time","description":"Date of the note"},"href":{"type":"string","description":"Unique reference of the entity"},"system":{"type":"string","description":"Describes the system from which the action related to this note was done"},"text":{"type":"string","description":"Text of the note"},"uuid":{"type":"string"}},"title":"Note","description":"Extra information about a given entity"},"Place":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the place, such as: [home delivery], [shop retrieval])"},"uuid":{"type":"string"}},"title":"Place","description":"Place reference. Place defines the places where the products are sold or delivered."},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"ResourceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the supporting resource"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ResourceRef"},"Service":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"string","description":"Is it a customer facing or resource facing service"},"description":{"type":"string","description":"Free-text description of the service"},"endDate":{"type":"string","description":"Date when the service ends"},"hasStarted":{"type":"boolean","description":"If TRUE, this Service has already been started"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the service"},"isServiceEnabled":{"type":"boolean","description":"If FALSE, this particular Service has NOT been enabled for use"},"isStateful":{"type":"boolean","description":"If TRUE, this Service can be changed without affecting any other services"},"name":{"type":"string","description":"Name of the entity"},"note":{"type":"array","description":"A list of notes made on this service","items":{"$ref":"#/definitions/Note"}},"place":{"type":"array","description":"A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.","items":{"$ref":"#/definitions/Place"}},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"serviceCharacteristic":{"type":"array","description":"A list of characteristics that characterize this service (ServiceCharacteristic [*]) ","items":{"$ref":"#/definitions/Characteristic"}},"serviceDate":{"type":"string","description":"Date when the service was created (whatever its status)."},"serviceOrder":{"type":"array","description":"A list of service orders related to this service","items":{"$ref":"#/definitions/ServiceOrderRef"}},"serviceRelationship":{"type":"array","description":"A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).","items":{"$ref":"#/definitions/ServiceRelationship"}},"serviceSpecification":{"description":"The specification from which this service was instantiated","$ref":"#/definitions/ServiceSpecificationRef"},"serviceType":{"type":"string","description":"Business type of the service"},"startDate":{"type":"string","description":"Date when the service starts"},"startMode":{"type":"string","description":"This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above"},"state":{"type":"string","description":"The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated","enum":["feasibilityChecked","designed","reserved","inactive","active","terminated"]},"supportingResource":{"type":"array","description":"A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.","items":{"$ref":"#/definitions/ResourceRef"}},"supportingService":{"type":"array","description":"A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).","items":{"$ref":"#/definitions/ServiceRef"}},"uuid":{"type":"string"}},"title":"Service","description":"Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService."},"ServiceAttributeValueChangeEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceAttributeValueChangeEvent","description":"The event data structure"},"ServiceAttributeValueChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceAttributeValueChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceAttributeValueChangeNotification","description":"The notification data structure"},"ServiceBatchEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceBatchEvent","description":"The event data structure"},"ServiceBatchNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceBatchEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceBatchNotification","description":"The notification data structure"},"ServiceCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Is it a customer facing or resource facing service"},"description":{"type":"string","description":"Free-text description of the service"},"endDate":{"type":"string","description":"Date when the service ends"},"hasStarted":{"type":"boolean","description":"If TRUE, this Service has already been started"},"isServiceEnabled":{"type":"boolean","description":"If FALSE, this particular Service has NOT been enabled for use"},"isStateful":{"type":"boolean","description":"If TRUE, this Service can be changed without affecting any other services"},"name":{"type":"string","description":"Name of the service"},"note":{"type":"array","description":"A list of notes made on this service","items":{"$ref":"#/definitions/Note"}},"place":{"type":"array","description":"A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.","items":{"$ref":"#/definitions/Place"}},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"serviceCharacteristic":{"type":"array","description":"A list of characteristics that characterize this service (ServiceCharacteristic [*]) ","items":{"$ref":"#/definitions/Characteristic"}},"serviceDate":{"type":"string","description":"Date when the service was created (whatever its status)."},"serviceOrder":{"type":"array","description":"A list of service orders related to this service","items":{"$ref":"#/definitions/ServiceOrderRef"}},"serviceRelationship":{"type":"array","description":"A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).","items":{"$ref":"#/definitions/ServiceRelationship"}},"serviceSpecification":{"description":"The specification from which this service was instantiated","$ref":"#/definitions/ServiceSpecificationRef"},"serviceType":{"type":"string","description":"Business type of the service"},"startDate":{"type":"string","description":"Date when the service starts"},"startMode":{"type":"string","description":"This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above"},"state":{"type":"string","description":"The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated","enum":["feasibilityChecked","designed","reserved","inactive","active","terminated"]},"supportingResource":{"type":"array","description":"A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.","items":{"$ref":"#/definitions/ResourceRef"}},"supportingService":{"type":"array","description":"A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).","items":{"$ref":"#/definitions/ServiceRef"}}},"title":"ServiceCreate","description":"Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. Skipped properties: id,href"},"ServiceCreateEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceCreateEvent","description":"The event data structure"},"ServiceCreateNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCreateEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCreateNotification","description":"The notification data structure"},"ServiceDeleteEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceDeleteEvent","description":"The event data structure"},"ServiceDeleteNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceDeleteEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceDeleteNotification","description":"The notification data structure"},"ServiceOrderRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the Service Order"},"serviceOrderItemId":{"type":"string","description":"Unique identifier of the Service Order Item within a service order, not populated if this is a reference to a service order"},"uuid":{"type":"string"}},"title":"ServiceOrderRef","description":"Service Order reference. Useful to understand the which was the Service order through which the service was instantiated in the service inventory"},"ServiceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Id of the service"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ServiceRef","description":"Service reference, for when Service is used by other entities"},"ServiceRelationship":{"type":"object","required":["relationshipType","service"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"relationshipType":{"type":"string","description":"The type of relationship (e.g. depends on, enables)"},"service":{"description":"The service being referred to","$ref":"#/definitions/ServiceRef"},"uuid":{"type":"string"}},"title":"ServiceRelationship","description":"Describes links with services of the same category (useful for bundled services)"},"ServiceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"uuid":{"type":"string"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationRef","description":"Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification."},"ServiceStateChangeEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceStateChangeEvent","description":"The event data structure"},"ServiceStateChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceStateChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceStateChangeNotification","description":"The notification data structure"},"ServiceUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Is it a customer facing or resource facing service"},"description":{"type":"string","description":"Free-text description of the service"},"endDate":{"type":"string","description":"Date when the service ends"},"hasStarted":{"type":"boolean","description":"If TRUE, this Service has already been started"},"isServiceEnabled":{"type":"boolean","description":"If FALSE, this particular Service has NOT been enabled for use"},"isStateful":{"type":"boolean","description":"If TRUE, this Service can be changed without affecting any other services"},"name":{"type":"string","description":"Name of the service"},"note":{"type":"array","description":"A list of notes made on this service","items":{"$ref":"#/definitions/Note"}},"place":{"type":"array","description":"A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.","items":{"$ref":"#/definitions/Place"}},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"serviceCharacteristic":{"type":"array","description":"A list of characteristics that characterize this service (ServiceCharacteristic [*]) ","items":{"$ref":"#/definitions/Characteristic"}},"serviceDate":{"type":"string","description":"Date when the service was created (whatever its status)."},"serviceOrder":{"type":"array","description":"A list of service orders related to this service","items":{"$ref":"#/definitions/ServiceOrderRef"}},"serviceRelationship":{"type":"array","description":"A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).","items":{"$ref":"#/definitions/ServiceRelationship"}},"serviceSpecification":{"description":"The specification from which this service was instantiated","$ref":"#/definitions/ServiceSpecificationRef"},"serviceType":{"type":"string","description":"Business type of the service"},"startDate":{"type":"string","description":"Date when the service starts"},"startMode":{"type":"string","description":"This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above"},"state":{"type":"string","description":"The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated","enum":["feasibilityChecked","designed","reserved","inactive","active","terminated"]},"supportingResource":{"type":"array","description":"A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.","items":{"$ref":"#/definitions/ResourceRef"}},"supportingService":{"type":"array","description":"A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).","items":{"$ref":"#/definitions/ServiceRef"}}},"title":"ServiceUpdate","description":"Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. Skipped properties: id,href,serviceRelationship"},"TargetServiceSchema":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"}},"title":"TargetServiceSchema","description":"The reference object to the schema and type of target service which is described by service specification"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/TMF640 - Service Activation and Configuration.json b/src/assets/swagger_collections/TMF640 - Service Activation and Configuration.json new file mode 100644 index 0000000000000000000000000000000000000000..95d77c49d23a7f626bee63709ca10ec34d63cdac --- /dev/null +++ b/src/assets/swagger_collections/TMF640 - Service Activation and Configuration.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference: TMF640 - Service Activation and Configuration ### Release : 18.5 - December 2018 Service Activation and Configuration API goal is to provide the ability to activate and configure Services. ### Operations Service Activation and Configuration API performs the following operations on the resources : - Retrieve an entity or a collection of entities depending on filter criteria - Partial update of an entity (including updating rules) - Create an entity (including default values and creation rules) - Delete an entity (for administration purposes) - Manage notification of events","version":"3.0.0","title":"API Service Activation and Configuration","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","basePath":"/tmf-api","tags":[{"name":"hub-api-controller","description":"the hub API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"monitor-api-controller","description":"the monitor API"},{"name":"service-api-controller","description":"the service API"}],"paths":{"/ServiceActivationAndConfiguration/v3/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_6","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_6","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/listener/monitorAttributeValueChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity MonitorAttributeValueChangeNotification","description":"Example of a client listener for receiving the notification MonitorAttributeValueChangeNotification","operationId":"listenToMonitorAttributeValueChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/MonitorAttributeValueChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/listener/monitorCreateNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity MonitorCreateNotification","description":"Example of a client listener for receiving the notification MonitorCreateNotification","operationId":"listenToMonitorCreateNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/MonitorCreateNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/listener/monitorDeleteNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity MonitorDeleteNotification","description":"Example of a client listener for receiving the notification MonitorDeleteNotification","operationId":"listenToMonitorDeleteNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/MonitorDeleteNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/listener/monitorStateChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity MonitorStateChangeNotification","description":"Example of a client listener for receiving the notification MonitorStateChangeNotification","operationId":"listenToMonitorStateChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/MonitorStateChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/listener/serviceAttributeValueChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceAttributeValueChangeNotification","description":"Example of a client listener for receiving the notification ServiceAttributeValueChangeNotification","operationId":"listenToServiceAttributeValueChangeNotification_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceAttributeValueChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/listener/serviceCreateNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceCreateNotification","description":"Example of a client listener for receiving the notification ServiceCreateNotification","operationId":"listenToServiceCreateNotification_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceCreateNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/listener/serviceDeleteNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceDeleteNotification","description":"Example of a client listener for receiving the notification ServiceDeleteNotification","operationId":"listenToServiceDeleteNotification_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceDeleteNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/listener/serviceStateChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceStateChangeNotification","description":"Example of a client listener for receiving the notification ServiceStateChangeNotification","operationId":"listenToServiceStateChangeNotification_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceStateChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/service":{"get":{"tags":["service"],"summary":"List or find Service objects","description":"This operation list or find Service entities","operationId":"listService_1","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"name","in":"query","required":false,"type":"string"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Service"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["service"],"summary":"Creates a Service","description":"This operation creates a Service entity.","operationId":"createService_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"name","in":"query","required":false,"type":"string"},{"in":"body","name":"service","description":"The Service to be created","required":true,"schema":{"$ref":"#/definitions/ServiceCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Service"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Service"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/ServiceActivationAndConfiguration/v3/service/{id}":{"get":{"tags":["service"],"summary":"Retrieves a Service by ID","description":"This operation retrieves a Service entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveService_1","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the Service","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Service"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["service"],"summary":"Deletes a Service","description":"This operation deletes a Service entity.","operationId":"deleteService_1","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Service","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"patch":{"tags":["service"],"summary":"Updates partially a Service","description":"This operation updates partially a Service entity.","operationId":"patchService_1","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Service","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"},{"in":"body","name":"service","description":"The Service to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Service"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/monitor":{"get":{"tags":["monitor"],"summary":"List or find Monitor objects","description":"This operation list or find Monitor entities","operationId":"listMonitor","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Monitor"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/monitor/{id}":{"get":{"tags":["monitor"],"summary":"Retrieves a Monitor by ID","description":"This operation retrieves a Monitor entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveMonitor","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the Monitor","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Monitor"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"Characteristic":{"type":"object","required":["value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"value":{"description":"The value of the characteristic","$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"Characteristic","description":"Describes a given characteristic of an object or entity through a name/value pair."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"integer","format":"int32","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"integer","format":"int32","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"HeaderItem":{"type":"object","required":["name","value"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"name":{"type":"string","description":"The name of the header item, e.g. locale"},"value":{"type":"string","description":"The value of the header item, e.g. en-us"}},"title":"HeaderItem","description":"An item typically included in a request or response"},"Monitor":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"href":{"type":"string","description":"reference to this monitor"},"id":{"type":"string","description":"Identifier of an instance of the monitor. Required to be unique within the resource type. Used in URIs as the identifier for specific instances of a type"},"request":{"$ref":"#/definitions/Request"},"response":{"$ref":"#/definitions/Response"},"sourceHref":{"type":"string","description":"The monitored resource href"},"state":{"type":"string","description":"The Monitor state of the resource. InProgress, InError, Completed"}},"title":"Monitor","description":"Monitoring of resources"},"MonitorAttributeValueChangeEvent":{"type":"object","properties":{"monitor":{"$ref":"#/definitions/Monitor"}},"title":"MonitorAttributeValueChangeEvent","description":"The event data structure"},"MonitorAttributeValueChangeNotification":{"type":"object","properties":{"event":{"$ref":"#/definitions/MonitorAttributeValueChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"MonitorAttributeValueChangeNotification","description":"The notification data structure"},"MonitorCreateEvent":{"type":"object","properties":{"monitor":{"$ref":"#/definitions/Monitor"}},"title":"MonitorCreateEvent","description":"The event data structure"},"MonitorCreateNotification":{"type":"object","properties":{"event":{"$ref":"#/definitions/MonitorCreateEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"MonitorCreateNotification","description":"The notification data structure"},"MonitorDeleteEvent":{"type":"object","properties":{"monitor":{"$ref":"#/definitions/Monitor"}},"title":"MonitorDeleteEvent","description":"The event data structure"},"MonitorDeleteNotification":{"type":"object","properties":{"event":{"$ref":"#/definitions/MonitorDeleteEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"MonitorDeleteNotification","description":"The notification data structure"},"MonitorStateChangeEvent":{"type":"object","properties":{"monitor":{"$ref":"#/definitions/Monitor"}},"title":"MonitorStateChangeEvent","description":"The event data structure"},"MonitorStateChangeNotification":{"type":"object","properties":{"event":{"$ref":"#/definitions/MonitorStateChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"MonitorStateChangeNotification","description":"The notification data structure"},"Note":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"author":{"type":"string","description":"Author of the note"},"date":{"type":"string","description":"Date of the note"},"href":{"type":"string","description":"Unique reference of the entity"},"system":{"type":"string","description":"Describes the system from which the action related to this note was done"},"text":{"type":"string","description":"Text of the note"},"uuid":{"type":"string"}},"title":"Note","description":"Extra information about a given entity"},"Place":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the place, such as: [home delivery], [shop retrieval])"},"uuid":{"type":"string"}},"title":"Place","description":"Place reference. Place defines the places where the products are sold or delivered."},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"Request":{"type":"object","required":["body","header"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"body":{"type":"string","description":"The body of the request. For example for an HTTP request might contain content of a form ."},"header":{"type":"array","description":"Items included in the header of the request. For example for an HTTP request might contain requested locale, basic authentication.","items":{"$ref":"#/definitions/HeaderItem"}},"method":{"type":"string","description":"The protocol of the request, e.g. http"},"to":{"type":"string","description":"The target of the request, e.g. a URL for an HTTP request"}},"title":"Request","description":"A response to a request"},"ResourceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the supporting resource"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ResourceRef"},"Response":{"type":"object","required":["body","header"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"body":{"type":"string","description":"The body of the response. For example for an HTTP response might contain HTML for rendering."},"header":{"type":"array","description":"Items included in the header of the response. For example for an HTTP response might contain negotiated locale.","items":{"$ref":"#/definitions/HeaderItem"}},"statusCode":{"type":"string","description":"The status of the response. For example for an HTTP response would be codes such as 200, 400, etc."}},"title":"Response","description":"A response to a request"},"Service":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"string","description":"Is it a customer facing or resource facing service"},"description":{"type":"string","description":"Free-text description of the service"},"endDate":{"type":"string","description":"Date when the service ends"},"hasStarted":{"type":"boolean","description":"If TRUE, this Service has already been started"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the service"},"isServiceEnabled":{"type":"boolean","description":"If FALSE, this particular Service has NOT been enabled for use"},"isStateful":{"type":"boolean","description":"If TRUE, this Service can be changed without affecting any other services"},"name":{"type":"string","description":"Name of the entity"},"note":{"type":"array","description":"A list of notes made on this service","items":{"$ref":"#/definitions/Note"}},"place":{"type":"array","description":"A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.","items":{"$ref":"#/definitions/Place"}},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"serviceCharacteristic":{"type":"array","description":"A list of characteristics that characterize this service (ServiceCharacteristic [*]) ","items":{"$ref":"#/definitions/Characteristic"}},"serviceDate":{"type":"string","description":"Date when the service was created (whatever its status)."},"serviceOrder":{"type":"array","description":"A list of service orders related to this service","items":{"$ref":"#/definitions/ServiceOrderRef"}},"serviceRelationship":{"type":"array","description":"A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).","items":{"$ref":"#/definitions/ServiceRelationship"}},"serviceSpecification":{"description":"The specification from which this service was instantiated","$ref":"#/definitions/ServiceSpecificationRef"},"serviceType":{"type":"string","description":"Business type of the service"},"startDate":{"type":"string","description":"Date when the service starts"},"startMode":{"type":"string","description":"This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above"},"state":{"type":"string","description":"The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated","enum":["feasibilityChecked","designed","reserved","inactive","active","terminated"]},"supportingResource":{"type":"array","description":"A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.","items":{"$ref":"#/definitions/ResourceRef"}},"supportingService":{"type":"array","description":"A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).","items":{"$ref":"#/definitions/ServiceRef"}},"uuid":{"type":"string"}},"title":"Service","description":"Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService."},"ServiceAttributeValueChangeEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceAttributeValueChangeEvent","description":"The event data structure"},"ServiceAttributeValueChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceAttributeValueChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceAttributeValueChangeNotification","description":"The notification data structure"},"ServiceCreate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Is it a customer facing or resource facing service"},"description":{"type":"string","description":"Free-text description of the service"},"endDate":{"type":"string","description":"Date when the service ends"},"hasStarted":{"type":"boolean","description":"If TRUE, this Service has already been started"},"isServiceEnabled":{"type":"boolean","description":"If FALSE, this particular Service has NOT been enabled for use"},"isStateful":{"type":"boolean","description":"If TRUE, this Service can be changed without affecting any other services"},"name":{"type":"string","description":"Name of the service"},"note":{"type":"array","description":"A list of notes made on this service","items":{"$ref":"#/definitions/Note"}},"place":{"type":"array","description":"A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.","items":{"$ref":"#/definitions/Place"}},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"serviceCharacteristic":{"type":"array","description":"A list of characteristics that characterize this service (ServiceCharacteristic [*]) ","items":{"$ref":"#/definitions/Characteristic"}},"serviceDate":{"type":"string","description":"Date when the service was created (whatever its status)."},"serviceOrder":{"type":"array","description":"A list of service orders related to this service","items":{"$ref":"#/definitions/ServiceOrderRef"}},"serviceRelationship":{"type":"array","description":"A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).","items":{"$ref":"#/definitions/ServiceRelationship"}},"serviceSpecification":{"description":"The specification from which this service was instantiated","$ref":"#/definitions/ServiceSpecificationRef"},"serviceType":{"type":"string","description":"Business type of the service"},"startDate":{"type":"string","description":"Date when the service starts"},"startMode":{"type":"string","description":"This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above"},"state":{"type":"string","description":"The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated","enum":["feasibilityChecked","designed","reserved","inactive","active","terminated"]},"supportingResource":{"type":"array","description":"A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.","items":{"$ref":"#/definitions/ResourceRef"}},"supportingService":{"type":"array","description":"A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).","items":{"$ref":"#/definitions/ServiceRef"}}},"title":"ServiceCreate","description":"Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. Skipped properties: id,href"},"ServiceCreateEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceCreateEvent","description":"The event data structure"},"ServiceCreateNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceCreateEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceCreateNotification","description":"The notification data structure"},"ServiceDeleteEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceDeleteEvent","description":"The event data structure"},"ServiceDeleteNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceDeleteEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceDeleteNotification","description":"The notification data structure"},"ServiceOrderRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the Service Order"},"serviceOrderItemId":{"type":"string","description":"Unique identifier of the Service Order Item within a service order, not populated if this is a reference to a service order"},"uuid":{"type":"string"}},"title":"ServiceOrderRef","description":"Service Order reference. Useful to understand the which was the Service order through which the service was instantiated in the service inventory"},"ServiceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Id of the service"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ServiceRef","description":"Service reference, for when Service is used by other entities"},"ServiceRelationship":{"type":"object","required":["relationshipType","service"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"relationshipType":{"type":"string","description":"The type of relationship (e.g. depends on, enables)"},"service":{"description":"The service being referred to","$ref":"#/definitions/ServiceRef"},"uuid":{"type":"string"}},"title":"ServiceRelationship","description":"Describes links with services of the same category (useful for bundled services)"},"ServiceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"uuid":{"type":"string"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationRef","description":"Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification."},"ServiceStateChangeEvent":{"type":"object","properties":{"service":{"description":"The involved resource data for the event","$ref":"#/definitions/Service"}},"title":"ServiceStateChangeEvent","description":"The event data structure"},"ServiceStateChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceStateChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceStateChangeNotification","description":"The notification data structure"},"ServiceUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Is it a customer facing or resource facing service"},"description":{"type":"string","description":"Free-text description of the service"},"endDate":{"type":"string","description":"Date when the service ends"},"hasStarted":{"type":"boolean","description":"If TRUE, this Service has already been started"},"isServiceEnabled":{"type":"boolean","description":"If FALSE, this particular Service has NOT been enabled for use"},"isStateful":{"type":"boolean","description":"If TRUE, this Service can be changed without affecting any other services"},"name":{"type":"string","description":"Name of the service"},"note":{"type":"array","description":"A list of notes made on this service","items":{"$ref":"#/definitions/Note"}},"place":{"type":"array","description":"A list of places related to this service, e.g. where the service is installed, a delivery address for equipment, etc.","items":{"$ref":"#/definitions/Place"}},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [1..*]). A related party defines party or party role linked to a specific entity.","items":{"$ref":"#/definitions/RelatedParty"}},"serviceCharacteristic":{"type":"array","description":"A list of characteristics that characterize this service (ServiceCharacteristic [*]) ","items":{"$ref":"#/definitions/Characteristic"}},"serviceDate":{"type":"string","description":"Date when the service was created (whatever its status)."},"serviceOrder":{"type":"array","description":"A list of service orders related to this service","items":{"$ref":"#/definitions/ServiceOrderRef"}},"serviceRelationship":{"type":"array","description":"A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).","items":{"$ref":"#/definitions/ServiceRelationship"}},"serviceSpecification":{"description":"The specification from which this service was instantiated","$ref":"#/definitions/ServiceSpecificationRef"},"serviceType":{"type":"string","description":"Business type of the service"},"startDate":{"type":"string","description":"Date when the service starts"},"startMode":{"type":"string","description":"This attribute is an enumerated integer that indicates how the Service is started, such as: 0: Unknown; 1: Automatically by the managed environment; 2: Automatically by the owning device; 3: Manually by the Provider of the Service; 4: Manually by a Customer of the Provider; 5: Any of the above"},"state":{"type":"string","description":"The life cycle state of the service, such as: feasibilityChecked, designed, reserved, active, inactive, terminated","enum":["feasibilityChecked","designed","reserved","inactive","active","terminated"]},"supportingResource":{"type":"array","description":"A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources.","items":{"$ref":"#/definitions/ResourceRef"}},"supportingService":{"type":"array","description":"A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS).","items":{"$ref":"#/definitions/ServiceRef"}}},"title":"ServiceUpdate","description":"Service is a base class for defining the Service hierarchy. All Services are characterized as either being possibly visible and usable by a Customer or not. This gives rise to the two subclasses of Service: CustomerFacingService and ResourceFacingService. Skipped properties: id,href,serviceRelationship"},"TargetServiceSchema":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"}},"title":"TargetServiceSchema","description":"The reference object to the schema and type of target service which is described by service specification"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/TMF641 - Service Ordering Management.json b/src/assets/swagger_collections/TMF641 - Service Ordering Management.json new file mode 100644 index 0000000000000000000000000000000000000000..76b22de1ba7120f38899cd0fc6c1071839bb41aa --- /dev/null +++ b/src/assets/swagger_collections/TMF641 - Service Ordering Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference : TMF 641 - Service Ordering Management ## Release : 18.5 - Dec 2018 The Service Order API provides a standardized mechanism for managing Service Order, a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa. ### Service Order resource A service order will describe a list of service order items. A service order item references an action on an existing or future service. By service we designed Customer Facing Service (CFS) as well as Resource Facing Service (RFS). From a component perspective, a service order should be available - from a Service Orchestration Component (and it could mix CFS and RFS) - from an Infrastructure Control & Management component (and it would have only RFS) ### Service Order API performs the following operations on service order : - Retrieval of a service order or a collection of service orders depending on filter criteria - Partial update of a service order (including updating rules) - Creation of a service order (including default values and creation rules) - Deletion of service order (for administration purposes) - Notification of events on Service order Copyright © TM Forum 2018. All Rights Reserved","version":"4.0.0","title":"API ServiceOrdering","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","basePath":"/tmf-api","tags":[{"name":"hub-api-controller","description":"the hub API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"service-order-api-controller","description":"the serviceOrder API"}],"paths":{"/serviceOrdering/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_5","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceOrdering/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_5","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceOrdering/v4/listener/serviceOrderAttributeValueChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceOrderAttributeValueChangeNotification","description":"Example of a client listener for receiving the notification ServiceOrderAttributeValueChangeNotification","operationId":"listenToServiceOrderAttributeValueChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceOrderAttributeValueChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceOrdering/v4/listener/serviceOrderCreateNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceOrderCreateNotification","description":"Example of a client listener for receiving the notification ServiceOrderCreateNotification","operationId":"listenToServiceOrderCreateNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceOrderCreateNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceOrdering/v4/listener/serviceOrderDeleteNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceOrderDeleteNotification","description":"Example of a client listener for receiving the notification ServiceOrderDeleteNotification","operationId":"listenToServiceOrderDeleteNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceOrderDeleteNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceOrdering/v4/listener/serviceOrderStateChangeNotification":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceOrderStateChangeNotification","description":"Example of a client listener for receiving the notification ServiceOrderStateChangeNotification","operationId":"listenToServiceOrderStateChangeNotification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"data","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceOrderStateChangeNotification"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceOrdering/v4/serviceOrder":{"get":{"tags":["serviceOrder"],"summary":"List or find ServiceOrder objects","description":"This operation list or find ServiceOrder entities","operationId":"listServiceOrder","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ServiceOrder"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"post":{"tags":["serviceOrder"],"summary":"Creates a ServiceOrder","description":"This operation creates a ServiceOrder entity.","operationId":"createServiceOrder","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"serviceOrder","description":"The ServiceOrder to be created","required":true,"schema":{"$ref":"#/definitions/ServiceOrderCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ServiceOrder"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ServiceOrder"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}},"/serviceOrdering/v4/serviceOrder/{id}":{"get":{"tags":["serviceOrder"],"summary":"Retrieves a ServiceOrder by ID","description":"This operation retrieves a ServiceOrder entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveServiceOrder","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the ServiceOrder","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ServiceOrder"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"delete":{"tags":["serviceOrder"],"summary":"Deletes a ServiceOrder","description":"This operation deletes a ServiceOrder entity.","operationId":"deleteServiceOrder","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceOrder","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false},"patch":{"tags":["serviceOrder"],"summary":"Updates partially a ServiceOrder","description":"This operation updates partially a ServiceOrder entity.","operationId":"patchServiceOrder","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceOrder","required":true,"type":"string"},{"in":"body","name":"serviceOrder","description":"The ServiceOrder to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceOrderUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ServiceOrder"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"deprecated":false}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"AppointmentRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"An explanatory text regarding the appointment made with a party"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"The identifier of the referred appointment"},"uuid":{"type":"string"}},"title":"AppointmentRef","description":"Refers an appointment, such as a Customer presentation or internal meeting or site visit"},"Characteristic":{"type":"object","required":["value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"value":{"description":"The value of the characteristic","$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"Characteristic","description":"Describes a given characteristic of an object or entity through a name/value pair."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"integer","format":"int32","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"integer","format":"int32","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"Note":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"author":{"type":"string","description":"Author of the note"},"date":{"type":"string","format":"date-time","description":"Date of the note"},"href":{"type":"string","description":"Unique reference of the entity"},"system":{"type":"string","description":"Describes the system from which the action related to this note was done"},"text":{"type":"string","description":"Text of the note"},"uuid":{"type":"string"}},"title":"Note","description":"Extra information about a given entity"},"Place":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the place, such as: [home delivery], [shop retrieval])"},"uuid":{"type":"string"}},"title":"Place","description":"Place reference. Place defines the places where the products are sold or delivered."},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"ResourceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the supporting resource"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ResourceRef"},"ServiceOrder":{"type":"object","required":["orderItem"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"string","description":"Used to categorize the order, useful for the OM system, such as: Broadband, TVOption"},"completionDate":{"type":"string","description":"Effective delivery date amended by the provider"},"description":{"type":"string","description":"A free-text description of the service order"},"expectedCompletionDate":{"type":"string","description":"Expected delivery date amended by the provider"},"externalId":{"type":"string","description":"ID given by the consumer to facilitate searches"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"ID created on repository side"},"note":{"type":"array","description":"Extra-information about the order; e.g. useful to add extra delivery information that could be useful for a human process","items":{"$ref":"#/definitions/Note"}},"notificationContact":{"type":"string","description":"Contact attached to the order to send back information regarding this order"},"orderDate":{"type":"string"},"orderItem":{"type":"array","description":"A list of service order items to be processed by this order","items":{"$ref":"#/definitions/ServiceOrderItem"}},"orderRelationship":{"type":"array","description":"A list of service orders related to this order (e.g. prerequisite, dependent on)","items":{"$ref":"#/definitions/ServiceOrderRelationship"}},"orderRequester":{"$ref":"#/definitions/RelatedParty"},"priority":{"type":"string","description":"Can be used by consumers to prioritize orders in a Service Order Management system"},"relatedParty":{"type":"array","description":"A list of parties which are involved in this order and the role they are playing","items":{"$ref":"#/definitions/RelatedParty"}},"requestedCompletionDate":{"type":"string","description":"Requested delivery date from the requestors perspective"},"requestedStartDate":{"type":"string","description":"Order start date wished by the requestor"},"startDate":{"type":"string","description":"Date when the order was started for processing"},"state":{"type":"string","description":"State of the order: described in the state-machine diagram","enum":["INITIAL","ACKNOWLEDGED","REJECTED","PENDING","HELD","INPROGRESS","CANCELLED","COMPLETED","FAILED","PARTIAL"]},"uuid":{"type":"string"}},"title":"ServiceOrder"},"ServiceOrderAttributeValueChangeEvent":{"type":"object","properties":{"serviceOrder":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceOrder"}},"title":"ServiceOrderAttributeValueChangeEvent","description":"The event data structure"},"ServiceOrderAttributeValueChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceOrderAttributeValueChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceOrderAttributeValueChangeNotification","description":"The notification data structure"},"ServiceOrderCreate":{"type":"object","required":["orderItem"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Used to categorize the order, useful for the OM system, such as: Broadband, TVOption"},"description":{"type":"string","description":"A free-text description of the service order"},"externalId":{"type":"string","description":"ID given by the consumer to facilitate searches"},"note":{"type":"array","description":"Extra-information about the order; e.g. useful to add extra delivery information that could be useful for a human process","items":{"$ref":"#/definitions/Note"}},"notificationContact":{"type":"string","description":"Contact attached to the order to send back information regarding this order"},"orderItem":{"type":"array","description":"A list of service order items to be processed by this order","items":{"$ref":"#/definitions/ServiceOrderItem"}},"orderRelationship":{"type":"array","description":"A list of service orders related to this order (e.g. prerequisite, dependent on)","items":{"$ref":"#/definitions/ServiceOrderRelationship"}},"priority":{"type":"string","description":"Can be used by consumers to prioritize orders in a Service Order Management system"},"relatedParty":{"type":"array","description":"A list of parties which are involved in this order and the role they are playing","items":{"$ref":"#/definitions/RelatedParty"}},"requestedCompletionDate":{"type":"string","description":"Requested delivery date from the requestors perspective"},"requestedStartDate":{"type":"string","description":"Order start date wished by the requestor"}},"title":"ServiceOrderCreate","description":" Skipped properties: id,href,orderDate,completionDate,expectedCompletionDate,startDate,state"},"ServiceOrderCreateEvent":{"type":"object","properties":{"serviceOrder":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceOrder"}},"title":"ServiceOrderCreateEvent","description":"The event data structure"},"ServiceOrderCreateNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceOrderCreateEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceOrderCreateNotification","description":"The notification data structure"},"ServiceOrderDeleteEvent":{"type":"object","properties":{"serviceOrder":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceOrder"}},"title":"ServiceOrderDeleteEvent","description":"The event data structure"},"ServiceOrderDeleteNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceOrderDeleteEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceOrderDeleteNotification","description":"The notification data structure"},"ServiceOrderItem":{"type":"object","required":["action","service"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"action":{"type":"string","description":"The action to be carried out on the Service. Can be: add, modify, delete, noChange","enum":["add","modify","delete","noChange"]},"appointment":{"description":"An appointment that was set up with a related party for this order item","$ref":"#/definitions/AppointmentRef"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"orderItemRelationship":{"type":"array","description":"A list of order items related to this order item","items":{"$ref":"#/definitions/ServiceOrderItemRelationship"}},"service":{"description":"The Service to be acted on by the order item","$ref":"#/definitions/ServiceRestriction"},"state":{"type":"string","description":"State of the order item: described in the state machine diagram. This is the requested state.","enum":["INITIAL","ACKNOWLEDGED","REJECTED","PENDING","HELD","INPROGRESS","CANCELLED","COMPLETED","FAILED","PARTIAL"]},"uuid":{"type":"string"}},"title":"ServiceOrderItem"},"ServiceOrderItemRelationship":{"type":"object","required":["id","relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a service order item"},"relationshipType":{"type":"string","description":"The type of related order item, can be: dependency if the order item needs to be not started until another order item is complete"},"uuid":{"type":"string"}},"title":"ServiceOrderItemRelationship","description":"Linked service order item to the one containing this attribute"},"ServiceOrderRelationship":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The entity type of the related order"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"The id of the related order"},"relationshipType":{"type":"string","description":"The type of related order, such as: [dependency] if the order needs to be [not started] until another order item is complete (a service order in this case) or [cross-ref] to keep track of the source order (a productOrder)"},"uuid":{"type":"string"}},"title":"ServiceOrderRelationship","description":"Linked service order to the one containing this attribute"},"ServiceOrderStateChangeEvent":{"type":"object","properties":{"serviceOrder":{"description":"The involved resource data for the event","$ref":"#/definitions/ServiceOrder"}},"title":"ServiceOrderStateChangeEvent","description":"The event data structure"},"ServiceOrderStateChangeNotification":{"type":"object","properties":{"event":{"description":"The event linked to the involved resource object","$ref":"#/definitions/ServiceOrderStateChangeEvent"},"eventId":{"type":"string","description":"The identifier of the notification"},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence"},"eventType":{"type":"string","description":"The type of the notification"},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification"},"resourcePath":{"type":"string","description":"The path identifying the resource object concerned by this notification"}},"title":"ServiceOrderStateChangeNotification","description":"The notification data structure"},"ServiceOrderUpdate":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"category":{"type":"string","description":"Used to categorize the order, useful for the OM system, such as: Broadband, TVOption"},"description":{"type":"string","description":"A free-text description of the service order"},"expectedCompletionDate":{"type":"string","description":"Expected delivery date amended by the provider"},"note":{"type":"array","description":"Extra-information about the order; e.g. useful to add extra delivery information that could be useful for a human process","items":{"$ref":"#/definitions/Note"}},"notificationContact":{"type":"string","description":"Contact attached to the order to send back information regarding this order"},"orderItem":{"type":"array","items":{"$ref":"#/definitions/ServiceOrderItem"}},"orderRelationship":{"type":"array","description":"A list of service orders related to this order (e.g. prerequisite, dependent on)","items":{"$ref":"#/definitions/ServiceOrderRelationship"}},"relatedParty":{"type":"array","description":"A list of parties which are involved in this order and the role they are playing","items":{"$ref":"#/definitions/RelatedParty"}},"requestedCompletionDate":{"type":"string","description":"Requested delivery date from the requestors perspective"},"requestedStartDate":{"type":"string","description":"Order start date wished by the requestor"},"startDate":{"type":"string","description":"Date when the order was started for processing"},"state":{"type":"string","enum":["INITIAL","ACKNOWLEDGED","REJECTED","PENDING","HELD","INPROGRESS","CANCELLED","COMPLETED","FAILED","PARTIAL"]}},"title":"ServiceOrderUpdate","description":" Skipped properties: id,href,externalId,priority,state,orderDate,completionDate,orderItem"},"ServiceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Id of the service"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ServiceRef","description":"Service reference, for when Service is used by other entities"},"ServiceRelationship":{"type":"object","required":["relationshipType","service"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"relationshipType":{"type":"string","description":"The type of relationship (e.g. depends on, enables)"},"service":{"description":"The service being referred to","$ref":"#/definitions/ServiceRef"},"uuid":{"type":"string"}},"title":"ServiceRelationship","description":"Describes links with services of the same category (useful for bundled services)"},"ServiceRestriction":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"category":{"type":"string","description":"Is it a customer facing or resource facing service"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"place":{"type":"array","description":"A list of places (Place [*]). Used to define a place useful for the service (for example a delivery geographical place)","items":{"$ref":"#/definitions/Place"}},"relatedParty":{"type":"array","description":"A list of related party references (RelatedParty [*]). A related party defines party or party role linked to a specific entity","items":{"$ref":"#/definitions/RelatedParty"}},"serviceCharacteristic":{"type":"array","description":"A list of characteristics that characterize this service (ServiceCharacteristic [*]) ","items":{"$ref":"#/definitions/Characteristic"}},"serviceRelationship":{"type":"array","description":"A list of service relationships (ServiceRelationship [*]). Describes links with other service(s) in the inventory (useful for describing relies-on, relies-from between CFS for example).","items":{"$ref":"#/definitions/ServiceRelationship"}},"serviceSpecification":{"description":"The specification from which this service was instantiated","$ref":"#/definitions/ServiceSpecificationRef"},"serviceType":{"type":"string","description":"Business type of the service"},"state":{"type":"string","description":"The life cycle state of the service, such as: [feasibilityChecked], [designed]","enum":["feasibilityChecked","designed","reserved","inactive","active","terminated"]},"supportingResource":{"type":"array","description":"A list of supporting resources (SupportingResource [*]).Note: only Service of type RFS can be associated with Resources","items":{"$ref":"#/definitions/ResourceRef"}},"supportingService":{"type":"array","description":"A list of supporting services (SupportingService [*]). A collection of services that support this service (bundling, link CFS to RFS)","items":{"$ref":"#/definitions/ServiceRef"}},"uuid":{"type":"string"}},"title":"ServiceRestriction","description":"In the context of a service order, and depending of the action requested (add/modify/delete/noChange) this data structure captures the configuration to apply to an existing subscribed service or to a new one"},"ServiceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"uuid":{"type":"string"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationRef","description":"Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification."},"TargetServiceSchema":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"}},"title":"TargetServiceSchema","description":"The reference object to the schema and type of target service which is described by service specification"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/TMF642 - Alarm Management.json b/src/assets/swagger_collections/TMF642 - Alarm Management.json new file mode 100644 index 0000000000000000000000000000000000000000..ea35d87248437678358139caff02bb1da1971c23 --- /dev/null +++ b/src/assets/swagger_collections/TMF642 - Alarm Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference: TMF642 Alarm Management API","version":"4.0.0","title":"API Alarm","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","basePath":"/tmf-api","tags":[{"name":"ack-alarms-api-controller","description":"the ackAlarms API"},{"name":"alarm-api-controller","description":"the alarm API"},{"name":"clear-alarms-api-controller","description":"the clearAlarms API"},{"name":"comment-alarms-api-controller","description":"the commentAlarms API"},{"name":"group-alarms-api-controller","description":"the groupAlarms API"},{"name":"hub-api-controller","description":"the hub API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"un-ack-alarms-api-controller","description":"the unAckAlarms API"},{"name":"un-group-alarms-api-controller","description":"the unGroupAlarms API"}],"paths":{"/alarmManagement/v4/ackAlarms":{"get":{"tags":["ackAlarms"],"summary":"List or find AckAlarms objects","description":"This operation list or find AckAlarms entities","operationId":"listAckAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"allParams","in":"query","description":"allParams","required":false,"items":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/AckAlarms"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["ackAlarms"],"summary":"Creates a AckAlarms","description":"This operation creates a AckAlarms entity.","operationId":"createAckAlarms","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The AckAlarms to be created","required":true,"schema":{"$ref":"#/definitions/AckAlarmsCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/AckAlarms"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/AckAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/ackAlarms/{id}":{"get":{"tags":["ackAlarms"],"summary":"Retrieves a AckAlarms by ID","description":"This operation retrieves a AckAlarms entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveAckAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the AckAlarms","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/AckAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/alarm":{"get":{"tags":["alarm"],"summary":"List or find Alarm objects","description":"This operation list or find Alarm entities","operationId":"listAlarm","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/Alarm"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["alarm"],"summary":"Creates a Alarm","description":"This operation creates a Alarm entity.","operationId":"createAlarm","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The Alarm to be created","required":true,"schema":{"$ref":"#/definitions/AlarmCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Alarm"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Alarm"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/alarm/{id}":{"get":{"tags":["alarm"],"summary":"Retrieves a Alarm by ID","description":"This operation retrieves a Alarm entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveAlarm","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the Alarm","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Alarm"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["alarm"],"summary":"Deletes a Alarm","description":"This operation deletes a Alarm entity.","operationId":"deleteAlarm","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Alarm","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"patch":{"tags":["alarm"],"summary":"Updates partially a Alarm","description":"This operation updates partially a Alarm entity.","operationId":"patchAlarm","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The Alarm to be updated","required":true,"schema":{"$ref":"#/definitions/AlarmUpdate"}},{"name":"id","in":"path","description":"Identifier of the Alarm","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Alarm"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/clearAlarms":{"get":{"tags":["clearAlarms"],"summary":"List or find ClearAlarms objects","description":"This operation list or find ClearAlarms entities","operationId":"listClearAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"allParams","in":"query","description":"allParams","required":false,"items":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ClearAlarms"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["clearAlarms"],"summary":"Creates a ClearAlarms","description":"This operation creates a ClearAlarms entity.","operationId":"createClearAlarms","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ClearAlarms to be created","required":true,"schema":{"$ref":"#/definitions/ClearAlarmsCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ClearAlarms"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ClearAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/clearAlarms/{id}":{"get":{"tags":["clearAlarms"],"summary":"Retrieves a ClearAlarms by ID","description":"This operation retrieves a ClearAlarms entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveClearAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the ClearAlarms","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ClearAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/commentAlarms":{"get":{"tags":["commentAlarms"],"summary":"List or find CommentAlarms objects","description":"This operation list or find CommentAlarms entities","operationId":"listCommentAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"allParams","in":"query","description":"allParams","required":false,"items":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/CommentAlarms"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["commentAlarms"],"summary":"Creates a CommentAlarms","description":"This operation creates a CommentAlarms entity.","operationId":"createCommentAlarms","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The CommentAlarms to be created","required":true,"schema":{"$ref":"#/definitions/CommentAlarmsCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/CommentAlarms"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/CommentAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/commentAlarms/{id}":{"get":{"tags":["commentAlarms"],"summary":"Retrieves a CommentAlarms by ID","description":"This operation retrieves a CommentAlarms entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveCommentAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the CommentAlarms","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/CommentAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/groupAlarms":{"get":{"tags":["groupAlarms"],"summary":"List or find GroupAlarms objects","description":"This operation list or find GroupAlarms entities","operationId":"listGroupAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"allParams","in":"query","description":"allParams","required":false,"items":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/GroupAlarms"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["groupAlarms"],"summary":"Creates a GroupAlarms","description":"This operation creates a GroupAlarms entity.","operationId":"createGroupAlarms","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The GroupAlarms to be created","required":true,"schema":{"$ref":"#/definitions/GroupAlarmsCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/GroupAlarms"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/GroupAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/groupAlarms/{id}":{"get":{"tags":["groupAlarms"],"summary":"Retrieves a GroupAlarms by ID","description":"This operation retrieves a GroupAlarms entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveGroupAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the GroupAlarms","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/GroupAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener642","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener642","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/unAckAlarms":{"get":{"tags":["unAckAlarms"],"summary":"List or find UnAckAlarms objects","description":"This operation list or find UnAckAlarms entities","operationId":"listUnAckAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"allParams","in":"query","description":"allParams","required":false,"items":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/UnAckAlarms"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["unAckAlarms"],"summary":"Creates a UnAckAlarms","description":"This operation creates a UnAckAlarms entity.","operationId":"createUnAckAlarms","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The UnAckAlarms to be created","required":true,"schema":{"$ref":"#/definitions/UnAckAlarmsCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/UnAckAlarms"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/UnAckAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/unAckAlarms/{id}":{"get":{"tags":["unAckAlarms"],"summary":"Retrieves a UnAckAlarms by ID","description":"This operation retrieves a UnAckAlarms entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveUnAckAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the UnAckAlarms","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/UnAckAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/unGroupAlarms":{"get":{"tags":["unGroupAlarms"],"summary":"List or find UnGroupAlarms objects","description":"This operation list or find UnGroupAlarms entities","operationId":"listUnGroupAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"allParams","in":"query","description":"allParams","required":false,"items":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/UnGroupAlarms"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["unGroupAlarms"],"summary":"Creates a UnGroupAlarms","description":"This operation creates a UnGroupAlarms entity.","operationId":"createUnGroupAlarms","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The UnGroupAlarms to be created","required":true,"schema":{"$ref":"#/definitions/UnGroupAlarmsCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/UnGroupAlarms"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/UnGroupAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/alarmManagement/v4/unGroupAlarms/{id}":{"get":{"tags":["unGroupAlarms"],"summary":"Retrieves a UnGroupAlarms by ID","description":"This operation retrieves a UnGroupAlarms entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveUnGroupAlarms","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the UnGroupAlarms","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/UnGroupAlarms"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/ackAlarmsCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity AckAlarmsCreateEvent","description":"Example of a client listener for receiving the notification AckAlarmsCreateEvent","operationId":"listenToAckAlarmsCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/AckAlarmsCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/ackAlarmsStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity AckAlarmsStateChangeEvent","description":"Example of a client listener for receiving the notification AckAlarmsStateChangeEvent","operationId":"listenToAckAlarmsStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/AckAlarmsStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/alarmAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity AlarmAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification AlarmAttributeValueChangeEvent","operationId":"listenToAlarmAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/AlarmAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/alarmCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity AlarmCreateEvent","description":"Example of a client listener for receiving the notification AlarmCreateEvent","operationId":"listenToAlarmCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/AlarmCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/alarmDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity AlarmDeleteEvent","description":"Example of a client listener for receiving the notification AlarmDeleteEvent","operationId":"listenToAlarmDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/AlarmDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/alarmStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity AlarmStateChangeEvent","description":"Example of a client listener for receiving the notification AlarmStateChangeEvent","operationId":"listenToAlarmStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/AlarmStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/clearAlarmsCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ClearAlarmsCreateEvent","description":"Example of a client listener for receiving the notification ClearAlarmsCreateEvent","operationId":"listenToClearAlarmsCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ClearAlarmsCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/clearAlarmsStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ClearAlarmsStateChangeEvent","description":"Example of a client listener for receiving the notification ClearAlarmsStateChangeEvent","operationId":"listenToClearAlarmsStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ClearAlarmsStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/commentAlarmsCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CommentAlarmsCreateEvent","description":"Example of a client listener for receiving the notification CommentAlarmsCreateEvent","operationId":"listenToCommentAlarmsCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CommentAlarmsCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/commentAlarmsStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity CommentAlarmsStateChangeEvent","description":"Example of a client listener for receiving the notification CommentAlarmsStateChangeEvent","operationId":"listenToCommentAlarmsStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/CommentAlarmsStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/groupAlarmsCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity GroupAlarmsCreateEvent","description":"Example of a client listener for receiving the notification GroupAlarmsCreateEvent","operationId":"listenToGroupAlarmsCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/GroupAlarmsCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/groupAlarmsStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity GroupAlarmsStateChangeEvent","description":"Example of a client listener for receiving the notification GroupAlarmsStateChangeEvent","operationId":"listenToGroupAlarmsStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/GroupAlarmsStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/unAckAlarmsCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity UnAckAlarmsCreateEvent","description":"Example of a client listener for receiving the notification UnAckAlarmsCreateEvent","operationId":"listenToUnAckAlarmsCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/UnAckAlarmsCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/unAckAlarmsStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity UnAckAlarmsStateChangeEvent","description":"Example of a client listener for receiving the notification UnAckAlarmsStateChangeEvent","operationId":"listenToUnAckAlarmsStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/UnAckAlarmsStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/unGroupAlarmsCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity UnGroupAlarmsCreateEvent","description":"Example of a client listener for receiving the notification UnGroupAlarmsCreateEvent","operationId":"listenToUnGroupAlarmsCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/UnGroupAlarmsCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/listener/unGroupAlarmsStateChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity UnGroupAlarmsStateChangeEvent","description":"Example of a client listener for receiving the notification UnGroupAlarmsStateChangeEvent","operationId":"listenToUnGroupAlarmsStateChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/UnGroupAlarmsStateChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"AckAlarms":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"ackSystemId":{"type":"string","description":"Name of the acknowledging system"},"ackTime":{"type":"string","format":"date-time","description":"Time of the acknowledgement"},"ackUserId":{"type":"string","description":"Name of the acknowledging user"},"ackedAlarm":{"type":"array","description":"The successfully acknowledged alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"alarmPattern":{"type":"array","description":"Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm.","items":{"$ref":"#/definitions/Alarm"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"state":{"type":"string","description":"Current state of the operation task"},"uuid":{"type":"string"}},"title":"AckAlarms","description":"Task resource for the acknowledge alarms operation"},"AckAlarmsCreate":{"type":"object","required":["ackSystemId","ackUserId","alarmPattern"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"ackSystemId":{"type":"string","description":"Name of the acknowledging system"},"ackTime":{"type":"string","format":"date-time","description":"Time of the acknowledgement"},"ackUserId":{"type":"string","description":"Name of the acknowledging user"},"ackedAlarm":{"type":"array","description":"The successfully acknowledged alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"alarmPattern":{"type":"array","description":"Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm.","items":{"$ref":"#/definitions/Alarm"}},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"state":{"type":"string","description":"Current state of the operation task"}},"title":"AckAlarmsCreate","description":"Task resource for the acknowledge alarms operation Skipped properties: id,href"},"AckAlarmsCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/AckAlarmsCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"AckAlarmsCreateEvent","description":"The notification data structure"},"AckAlarmsCreateEventPayload":{"type":"object","properties":{"ackAlarms":{"$ref":"#/definitions/AckAlarms"}},"title":"AckAlarmsCreateEventPayload","description":"The event data structure"},"AckAlarmsStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/AckAlarmsStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"AckAlarmsStateChangeEvent","description":"The notification data structure"},"AckAlarmsStateChangeEventPayload":{"type":"object","properties":{"ackAlarms":{"$ref":"#/definitions/AckAlarms"}},"title":"AckAlarmsStateChangeEventPayload","description":"The event data structure"},"AffectedService":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"uuid":{"type":"string"}},"title":"AffectedService"},"Alarm":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"ackState":{"type":"string","description":"Provides the Acknowledgement State of the alarm"},"ackSystemId":{"type":"string","description":"Provides the name of the system that last changed the ackState of an alarm, i.e. acknowledged or unacknowledged the alarm."},"ackUserId":{"type":"string","description":"Provides the id of the user who has last changed the ack state of the alarm, i.e. acknowledged or unacknowledged the alarm."},"affectedService":{"type":"array","items":{"$ref":"#/definitions/AffectedService"}},"alarmChangedTime":{"type":"string","description":"Indicates the last date and time when the alarm is changed on the alarm-owning system. Any change to the alarm whether coming from the alarmed resource, or triggered by a change from the client is changing this time."},"alarmClearedTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm is cleared at the source. "},"alarmDetails":{"type":"string","description":"Contains further information on the alarm."},"alarmEscalation":{"type":"boolean","description":"Indicates if this alarm has been escalated or not. "},"alarmRaisedTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm occurred at its source."},"alarmReportingTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm was reported by the owning OSS. It might be different from the alarmRaisedTime. For instance, if the alarm list is maintained by an EMS, the alarmRaisedtime would be the time the alarm was detected by the NE, while the alarmReportingTime would be the time this alarm was stored in the alarm list of the EMS."},"alarmType":{"type":"string","description":"Categorize the alarm. Should be one of the values defined in X.733 8.1.1 or 3GPP TS 32.111-2 Annex A: Communications Alarm Processing Error Alarm Environmental Alarm Quality of Service Alarm Equipment Alarm Integrity Violation Operational Violation Physical Violation Security Service or Mechanism Violation Time Domain Violation"},"alarmedObject":{"$ref":"#/definitions/AlarmedObject"},"alarmedObjectType":{"type":"string","description":"The type (class) of the managed object associated with the event."},"clearSystemId":{"type":"string","description":"Provides the id of the system where the user who invoked the alarmCleared operation is located. "},"clearUserId":{"type":"string","description":"Provides the id of the user who invoked the alarmCleared operation"},"comment":{"type":"array","items":{"$ref":"#/definitions/Comment"}},"correlatedAlarm":{"type":"array","items":{"$ref":"#/definitions/AlarmRef"}},"crossedThresholdInformation":{"$ref":"#/definitions/CrossedThresholdInformation"},"externalAlarmId":{"type":"string","description":"An identifier of the alarm in the source system."},"href":{"type":"string","description":"A reference to the alarm."},"id":{"type":"string"},"isRootCause":{"type":"boolean","description":"Indicates whether the alarm is a root cause alarm.. "},"parentAlarm":{"type":"array","items":{"$ref":"#/definitions/AlarmRef"}},"perceivedSeverity":{"type":"string","description":"Lists the possible severities that can be allocated to an Alarm. The values are consistent with ITU-T Recommendation X.733. Once an alarm has been cleared, its perceived severity is set to 'cleared' and can no longer be set."},"place":{"type":"array","items":{"$ref":"#/definitions/RelatedPlaceRefOrValue"}},"plannedOutageIndicator":{"type":"string","description":"Indicates that the Managed Object (related to this alarm) is in planned outage (in planned maintenance, or out-of-service). "},"probableCause":{"type":"string","description":"Provides the probable cause of the alarm. The values are consistent with ITU-T Recommendation X.733 or 3GPP TS 32.111-2 Annex B."},"proposedRepairedActions":{"type":"string","description":"Indicates proposed repair actions, if known to the system emitting the alarm."},"reportingSystemId":{"type":"string","description":"Reporting system identity."},"serviceAffecting":{"type":"boolean","description":"Indicates whether the alarm affects service or not."},"sourceSystemId":{"type":"string","description":"Source system identity."},"specificProblem":{"type":"string","description":"Provides more specific information about the alarm."},"state":{"type":"string","description":"Defines the alarm state during its life cycle"},"uuid":{"type":"string"}},"title":"Alarm","description":"This resource represents an alarm supporting the information model defined in ITU-T X.733."},"AlarmAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/AlarmAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"AlarmAttributeValueChangeEvent","description":"The notification data structure"},"AlarmAttributeValueChangeEventPayload":{"type":"object","properties":{"alarm":{"$ref":"#/definitions/Alarm"}},"title":"AlarmAttributeValueChangeEventPayload","description":"The event data structure"},"AlarmCreate":{"type":"object","required":["alarmRaisedTime","sourceSystemId"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"ackState":{"type":"string","description":"Provides the Acknowledgement State of the alarm"},"ackSystemId":{"type":"string","description":"Provides the name of the system that last changed the ackState of an alarm, i.e. acknowledged or unacknowledged the alarm."},"ackUserId":{"type":"string","description":"Provides the id of the user who has last changed the ack state of the alarm, i.e. acknowledged or unacknowledged the alarm."},"affectedService":{"type":"array","items":{"$ref":"#/definitions/AffectedService"}},"alarmChangedTime":{"type":"string","description":"Indicates the last date and time when the alarm is changed on the alarm-owning system. Any change to the alarm whether coming from the alarmed resource, or triggered by a change from the client is changing this time."},"alarmClearedTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm is cleared at the source. "},"alarmDetails":{"type":"string","description":"Contains further information on the alarm."},"alarmEscalation":{"type":"boolean","description":"Indicates if this alarm has been escalated or not. "},"alarmRaisedTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm occurred at its source."},"alarmReportingTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm was reported by the owning OSS. It might be different from the alarmRaisedTime. For instance, if the alarm list is maintained by an EMS, the alarmRaisedtime would be the time the alarm was detected by the NE, while the alarmReportingTime would be the time this alarm was stored in the alarm list of the EMS."},"alarmType":{"type":"string","description":"Categorize the alarm. Should be one of the values defined in X.733 8.1.1 or 3GPP TS 32.111-2 Annex A: Communications Alarm Processing Error Alarm Environmental Alarm Quality of Service Alarm Equipment Alarm Integrity Violation Operational Violation Physical Violation Security Service or Mechanism Violation Time Domain Violation"},"alarmedObject":{"$ref":"#/definitions/AlarmedObject"},"alarmedObjectType":{"type":"string","description":"The type (class) of the managed object associated with the event."},"atBaseType":{"type":"string","description":"The base type of this alarm."},"atSchemaLocation":{"type":"string","description":"A reference to the schema describing this alarm."},"atType":{"type":"string","description":"The type for this alarm."},"clearSystemId":{"type":"string","description":"Provides the id of the system where the user who invoked the alarmCleared operation is located. "},"clearUserId":{"type":"string","description":"Provides the id of the user who invoked the alarmCleared operation"},"comment":{"type":"array","items":{"$ref":"#/definitions/Comment"}},"correlatedAlarm":{"type":"array","items":{"$ref":"#/definitions/AlarmRef"}},"crossedThresholdInformation":{"$ref":"#/definitions/CrossedThresholdInformation"},"externalAlarmId":{"type":"string","description":"An identifier of the alarm in the source system."},"isRootCause":{"type":"boolean","description":"Indicates whether the alarm is a root cause alarm.. "},"parentAlarm":{"type":"array","items":{"$ref":"#/definitions/AlarmRef"}},"perceivedSeverity":{"type":"string","description":"Lists the possible severities that can be allocated to an Alarm. The values are consistent with ITU-T Recommendation X.733. Once an alarm has been cleared, its perceived severity is set to 'cleared' and can no longer be set."},"place":{"type":"array","items":{"$ref":"#/definitions/RelatedPlaceRefOrValue"}},"plannedOutageIndicator":{"type":"string","description":"Indicates that the Managed Object (related to this alarm) is in planned outage (in planned maintenance, or out-of-service). "},"probableCause":{"type":"string","description":"Provides the probable cause of the alarm. The values are consistent with ITU-T Recommendation X.733 or 3GPP TS 32.111-2 Annex B."},"proposedRepairedActions":{"type":"string","description":"Indicates proposed repair actions, if known to the system emitting the alarm."},"reportingSystemId":{"type":"string","description":"Reporting system identity."},"serviceAffecting":{"type":"boolean","description":"Indicates whether the alarm affects service or not."},"sourceSystemId":{"type":"string","description":"Source system identity."},"specificProblem":{"type":"string","description":"Provides more specific information about the alarm."},"state":{"type":"string","description":"Defines the alarm state during its life cycle"}},"title":"AlarmCreate","description":"This resource represents an alarm supporting the information model defined in ITU-T X.733. Skipped properties: id,href"},"AlarmCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/AlarmCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"AlarmCreateEvent","description":"The notification data structure"},"AlarmCreateEventPayload":{"type":"object","properties":{"alarm":{"$ref":"#/definitions/Alarm"}},"title":"AlarmCreateEventPayload","description":"The event data structure"},"AlarmDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/AlarmDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"AlarmDeleteEvent","description":"The notification data structure"},"AlarmDeleteEventPayload":{"type":"object","properties":{"alarm":{"$ref":"#/definitions/Alarm"}},"title":"AlarmDeleteEventPayload","description":"The event data structure"},"AlarmRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"AlarmRef"},"AlarmRefOrValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"ackState":{"type":"string","description":"Provides the Acknowledgement State of the alarm"},"ackSystemId":{"type":"string","description":"Provides the name of the system that last changed the ackState of an alarm, i.e. acknowledged or unacknowledged the alarm."},"ackUserId":{"type":"string","description":"Provides the id of the user who has last changed the ack state of the alarm, i.e. acknowledged or unacknowledged the alarm."},"affectedService":{"type":"array","items":{"$ref":"#/definitions/AffectedService"}},"alarmChangedTime":{"type":"string","description":"Indicates the last date and time when the alarm is changed on the alarm-owning system. Any change to the alarm whether coming from the alarmed resource, or triggered by a change from the client is changing this time."},"alarmClearedTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm is cleared at the source. "},"alarmDetails":{"type":"string","description":"Contains further information on the alarm."},"alarmEscalation":{"type":"boolean","description":"Indicates if this alarm has been escalated or not. "},"alarmRaisedTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm occurred at its source."},"alarmReportingTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm was reported by the owning OSS. It might be different from the alarmRaisedTime. For instance, if the alarm list is maintained by an EMS, the alarmRaisedtime would be the time the alarm was detected by the NE, while the alarmReportingTime would be the time this alarm was stored in the alarm list of the EMS."},"alarmType":{"type":"string","description":"Categorize the alarm. Should be one of the values defined in X.733 8.1.1 or 3GPP TS 32.111-2 Annex A: Communications Alarm Processing Error Alarm Environmental Alarm Quality of Service Alarm Equipment Alarm Integrity Violation Operational Violation Physical Violation Security Service or Mechanism Violation Time Domain Violation"},"alarmedObject":{"$ref":"#/definitions/AlarmedObject"},"alarmedObjectType":{"type":"string","description":"The type (class) of the managed object associated with the event."},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"clearSystemId":{"type":"string","description":"Provides the id of the system where the user who invoked the alarmCleared operation is located. "},"clearUserId":{"type":"string","description":"Provides the id of the user who invoked the alarmCleared operation"},"comment":{"type":"array","items":{"$ref":"#/definitions/Comment"}},"correlatedAlarm":{"type":"array","items":{"$ref":"#/definitions/AlarmRef"}},"crossedThresholdInformation":{"$ref":"#/definitions/CrossedThresholdInformation"},"externalAlarmId":{"type":"string","description":"An identifier of the alarm in the source system."},"href":{"type":"string","description":"A reference to the alarm."},"id":{"type":"integer","format":"int32","description":"Identifier of the alarm, determined by the alarm owning system"},"isRootCause":{"type":"boolean","description":"Indicates whether the alarm is a root cause alarm.. "},"name":{"type":"string","description":"Name of the entity"},"parentAlarm":{"type":"array","items":{"$ref":"#/definitions/AlarmRef"}},"perceivedSeverity":{"type":"string","description":"Lists the possible severities that can be allocated to an Alarm. The values are consistent with ITU-T Recommendation X.733. Once an alarm has been cleared, its perceived severity is set to 'cleared' and can no longer be set."},"place":{"type":"array","items":{"$ref":"#/definitions/RelatedPlaceRefOrValue"}},"plannedOutageIndicator":{"type":"string","description":"Indicates that the Managed Object (related to this alarm) is in planned outage (in planned maintenance, or out-of-service). "},"probableCause":{"type":"string","description":"Provides the probable cause of the alarm. The values are consistent with ITU-T Recommendation X.733 or 3GPP TS 32.111-2 Annex B."},"proposedRepairedActions":{"type":"string","description":"Indicates proposed repair actions, if known to the system emitting the alarm."},"reportingSystemId":{"type":"string","description":"Reporting system identity."},"serviceAffecting":{"type":"boolean","description":"Indicates whether the alarm affects service or not."},"sourceSystemId":{"type":"string","description":"Source system identity."},"specificProblem":{"type":"string","description":"Provides more specific information about the alarm."},"state":{"type":"string","description":"Defines the alarm state during its life cycle"},"uuid":{"type":"string"}},"title":"AlarmRefOrValue","description":"An alarm defined by reference or value. The polymorphic attributes @type, @schemaLocation & @referredType are related to the alarm entity and not the RelatedAlarmRefOrValue class itself"},"AlarmStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/AlarmStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"AlarmStateChangeEvent","description":"The notification data structure"},"AlarmStateChangeEventPayload":{"type":"object","properties":{"alarm":{"$ref":"#/definitions/Alarm"}},"title":"AlarmStateChangeEventPayload","description":"The event data structure"},"AlarmUpdate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"ackState":{"type":"string","description":"Provides the Acknowledgement State of the alarm"},"ackSystemId":{"type":"string","description":"Provides the name of the system that last changed the ackState of an alarm, i.e. acknowledged or unacknowledged the alarm."},"ackUserId":{"type":"string","description":"Provides the id of the user who has last changed the ack state of the alarm, i.e. acknowledged or unacknowledged the alarm."},"affectedService":{"type":"array","items":{"$ref":"#/definitions/AffectedService"}},"alarmChangedTime":{"type":"string","description":"Indicates the last date and time when the alarm is changed on the alarm-owning system. Any change to the alarm whether coming from the alarmed resource, or triggered by a change from the client is changing this time."},"alarmClearedTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm is cleared at the source. "},"alarmDetails":{"type":"string","description":"Contains further information on the alarm."},"alarmEscalation":{"type":"boolean","description":"Indicates if this alarm has been escalated or not. "},"alarmReportingTime":{"type":"string","description":"Indicates the time (as a date + time) at which the alarm was reported by the owning OSS. It might be different from the alarmRaisedTime. For instance, if the alarm list is maintained by an EMS, the alarmRaisedtime would be the time the alarm was detected by the NE, while the alarmReportingTime would be the time this alarm was stored in the alarm list of the EMS."},"alarmType":{"type":"string","description":"Categorize the alarm. Should be one of the values defined in X.733 8.1.1 or 3GPP TS 32.111-2 Annex A: Communications Alarm Processing Error Alarm Environmental Alarm Quality of Service Alarm Equipment Alarm Integrity Violation Operational Violation Physical Violation Security Service or Mechanism Violation Time Domain Violation"},"alarmedObject":{"$ref":"#/definitions/AlarmedObject"},"alarmedObjectType":{"type":"string","description":"The type (class) of the managed object associated with the event."},"atBaseType":{"type":"string","description":"The base type of this alarm."},"atSchemaLocation":{"type":"string","description":"A reference to the schema describing this alarm."},"atType":{"type":"string","description":"The type for this alarm."},"clearSystemId":{"type":"string","description":"Provides the id of the system where the user who invoked the alarmCleared operation is located. "},"clearUserId":{"type":"string","description":"Provides the id of the user who invoked the alarmCleared operation"},"comment":{"type":"array","items":{"$ref":"#/definitions/Comment"}},"correlatedAlarm":{"type":"array","items":{"$ref":"#/definitions/AlarmRef"}},"crossedThresholdInformation":{"$ref":"#/definitions/CrossedThresholdInformation"},"externalAlarmId":{"type":"string","description":"An identifier of the alarm in the source system."},"isRootCause":{"type":"boolean","description":"Indicates whether the alarm is a root cause alarm.. "},"parentAlarm":{"type":"array","items":{"$ref":"#/definitions/AlarmRef"}},"perceivedSeverity":{"type":"string","description":"Lists the possible severities that can be allocated to an Alarm. The values are consistent with ITU-T Recommendation X.733. Once an alarm has been cleared, its perceived severity is set to 'cleared' and can no longer be set."},"place":{"type":"array","items":{"$ref":"#/definitions/RelatedPlaceRefOrValue"}},"plannedOutageIndicator":{"type":"string","description":"Indicates that the Managed Object (related to this alarm) is in planned outage (in planned maintenance, or out-of-service). "},"probableCause":{"type":"string","description":"Provides the probable cause of the alarm. The values are consistent with ITU-T Recommendation X.733 or 3GPP TS 32.111-2 Annex B."},"proposedRepairedActions":{"type":"string","description":"Indicates proposed repair actions, if known to the system emitting the alarm."},"reportingSystemId":{"type":"string","description":"Reporting system identity."},"serviceAffecting":{"type":"boolean","description":"Indicates whether the alarm affects service or not."},"specificProblem":{"type":"string","description":"Provides more specific information about the alarm."},"state":{"type":"string","description":"Defines the alarm state during its life cycle"}},"title":"AlarmUpdate","description":"This resource represents an alarm supporting the information model defined in ITU-T X.733. Skipped properties: id,href,alarmRaisedTime,sourceSystemId"},"AlarmedObject":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"uuid":{"type":"string"}},"title":"AlarmedObject","description":"Identifies the managed object instance associated with the alarm."},"ClearAlarms":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"alarmClearedTime":{"type":"string","format":"date-time","description":"Time of the alarm clearing"},"alarmPattern":{"type":"array","description":"Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm.","items":{"$ref":"#/definitions/Alarm"}},"clearSystemId":{"type":"string","description":"Name of the clearing system"},"clearUserId":{"type":"string","description":"Name of the clearing user"},"clearedAlarm":{"type":"array","description":"The successfully cleared alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"state":{"type":"string","description":"Current state of the operation task"},"uuid":{"type":"string"}},"title":"ClearAlarms","description":"Task resource for clear alarms operation"},"ClearAlarmsCreate":{"type":"object","required":["alarmClearedTime","alarmPattern","clearSystemId","clearUserId"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"alarmClearedTime":{"type":"string","format":"date-time","description":"Time of the alarm clearing"},"alarmPattern":{"type":"array","description":"Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm.","items":{"$ref":"#/definitions/Alarm"}},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"clearSystemId":{"type":"string","description":"Name of the clearing system"},"clearUserId":{"type":"string","description":"Name of the clearing user"},"clearedAlarm":{"type":"array","description":"The successfully cleared alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"state":{"type":"string","description":"Current state of the operation task"}},"title":"ClearAlarmsCreate","description":"Task resource for clear alarms operation Skipped properties: id,href"},"ClearAlarmsCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ClearAlarmsCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ClearAlarmsCreateEvent","description":"The notification data structure"},"ClearAlarmsCreateEventPayload":{"type":"object","properties":{"clearAlarms":{"$ref":"#/definitions/ClearAlarms"}},"title":"ClearAlarmsCreateEventPayload","description":"The event data structure"},"ClearAlarmsStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ClearAlarmsStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ClearAlarmsStateChangeEvent","description":"The notification data structure"},"ClearAlarmsStateChangeEventPayload":{"type":"object","properties":{"clearAlarms":{"$ref":"#/definitions/ClearAlarms"}},"title":"ClearAlarmsStateChangeEventPayload","description":"The event data structure"},"Comment":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"comment":{"type":"string","description":"Indicates the text of the comment."},"href":{"type":"string","description":"Unique reference of the entity"},"systemId":{"type":"string","description":"Indicates the system identifier on which the client set the comment."},"time":{"type":"string","format":"date-time","description":"Indicates the time commenting the alarm"},"userId":{"type":"string","description":"Indicates the user commenting the alarm."},"uuid":{"type":"string"}},"title":"Comment","description":"Indicates the comments entered on the alarm."},"CommentAlarms":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"alarmPattern":{"type":"array","description":"Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm.","items":{"$ref":"#/definitions/Alarm"}},"comment":{"$ref":"#/definitions/Comment"},"commentedAlarm":{"type":"array","description":"The successfully commented alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"state":{"type":"string","description":"Current state of the operation task"},"uuid":{"type":"string"}},"title":"CommentAlarms","description":"Task resource for comment alarms operation"},"CommentAlarmsCreate":{"type":"object","required":["alarmPattern","comment"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"alarmPattern":{"type":"array","description":"Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm.","items":{"$ref":"#/definitions/Alarm"}},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"comment":{"$ref":"#/definitions/Comment"},"commentedAlarm":{"type":"array","description":"The successfully commented alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"state":{"type":"string","description":"Current state of the operation task"}},"title":"CommentAlarmsCreate","description":"Task resource for comment alarms operation Skipped properties: id,href"},"CommentAlarmsCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/CommentAlarmsCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CommentAlarmsCreateEvent","description":"The notification data structure"},"CommentAlarmsCreateEventPayload":{"type":"object","properties":{"commentAlarms":{"$ref":"#/definitions/CommentAlarms"}},"title":"CommentAlarmsCreateEventPayload","description":"The event data structure"},"CommentAlarmsStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/CommentAlarmsStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"CommentAlarmsStateChangeEvent","description":"The notification data structure"},"CommentAlarmsStateChangeEventPayload":{"type":"object","properties":{"commentAlarms":{"$ref":"#/definitions/CommentAlarms"}},"title":"CommentAlarmsStateChangeEventPayload","description":"The event data structure"},"CrossedThresholdInformation":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"direction":{"type":"string","description":"Indicates the threshold crossing direction: up or down."},"granularity":{"type":"string","description":"Indicates the granularity at which the indicator is evaluated for threshold crossing"},"href":{"type":"string","description":"Unique reference of the entity"},"indicatorName":{"type":"string","description":"Indicates the name of indicator which crossed the threshold."},"indicatorUnit":{"type":"string","description":"Indicates the unit of the measurement of the indicator corresponding to the threshold that has been crossed."},"observedValue":{"type":"string","description":"Indicates the value of the indicator which crossed the threshold."},"threshold":{"$ref":"#/definitions/ThresholdRef"},"thresholdCrossingDescription":{"type":"string","description":"Indicates further information on the threshold crossing alarm."},"uuid":{"type":"string"}},"title":"CrossedThresholdInformation","description":"Identifies the details of the threshold that has been crossed."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"string","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"string","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"GroupAlarms":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"alarmChangedTime":{"type":"string","format":"date-time","description":"Time of the correlation"},"correlatedAlarm":{"type":"array","description":"Correlated alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"groupedAlarm":{"type":"array","description":"The successfully correlated alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"parentAlarm":{"$ref":"#/definitions/AlarmRefOrValue"},"sourceSystemId":{"type":"string","description":"Source system identifier"},"state":{"type":"string","description":"Current state of the operation task"},"uuid":{"type":"string"}},"title":"GroupAlarms","description":"Task resource for group alarms operation"},"GroupAlarmsCreate":{"type":"object","required":["alarmChangedTime","correlatedAlarm","parentAlarm","sourceSystemId"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"alarmChangedTime":{"type":"string","format":"date-time","description":"Time of the correlation"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"correlatedAlarm":{"type":"array","description":"Correlated alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"groupedAlarm":{"type":"array","description":"The successfully correlated alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"parentAlarm":{"$ref":"#/definitions/AlarmRefOrValue"},"sourceSystemId":{"type":"string","description":"Source system identifier"},"state":{"type":"string","description":"Current state of the operation task"}},"title":"GroupAlarmsCreate","description":"Task resource for group alarms operation Skipped properties: id,href"},"GroupAlarmsCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/GroupAlarmsCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"GroupAlarmsCreateEvent","description":"The notification data structure"},"GroupAlarmsCreateEventPayload":{"type":"object","properties":{"groupAlarms":{"$ref":"#/definitions/GroupAlarms"}},"title":"GroupAlarmsCreateEventPayload","description":"The event data structure"},"GroupAlarmsStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/GroupAlarmsStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"GroupAlarmsStateChangeEvent","description":"The notification data structure"},"GroupAlarmsStateChangeEventPayload":{"type":"object","properties":{"groupAlarms":{"$ref":"#/definitions/GroupAlarms"}},"title":"GroupAlarmsStateChangeEventPayload","description":"The event data structure"},"RelatedPlaceRefOrValue":{"type":"object","required":["role"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string"},"uuid":{"type":"string"}},"title":"RelatedPlaceRefOrValue","description":"Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself"},"ThresholdRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ThresholdRef"},"UnAckAlarms":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"ackSystemId":{"type":"string","description":"Name of the unacknowledging system"},"ackTime":{"type":"string","description":"Time of the unacknowledgement"},"ackUserId":{"type":"string","description":"Name of the unacknowledging user"},"alarmPattern":{"type":"array","description":"Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm.","items":{"$ref":"#/definitions/Alarm"}},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"href":{"type":"string","description":"A reference to the task"},"id":{"type":"string"},"state":{"type":"string","description":"Current state of the operation task"},"unAckedAlarm":{"type":"array","description":"The successfully unacknowledged alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"uuid":{"type":"string"}},"title":"UnAckAlarms","description":"Task resource for unacknowledge alarms operation"},"UnAckAlarmsCreate":{"type":"object","required":["ackSystemId","ackUserId","alarmPattern"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"ackSystemId":{"type":"string","description":"Name of the unacknowledging system"},"ackTime":{"type":"string","format":"date-time","description":"Time of the unacknowledgement"},"ackUserId":{"type":"string","description":"Name of the unacknowledging user"},"alarmPattern":{"type":"array","description":"Alarm patterns to match target alarms. An alarm will match if all of the sttributes in any of the patterns compare equal to those attributes of the alarm.","items":{"$ref":"#/definitions/Alarm"}},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"state":{"type":"string","description":"Current state of the operation task"},"unAckedAlarm":{"type":"array","description":"The successfully unacknowledged alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}}},"title":"UnAckAlarmsCreate","description":"Task resource for unacknowledge alarms operation Skipped properties: id,href"},"UnAckAlarmsCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/UnAckAlarmsCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"UnAckAlarmsCreateEvent","description":"The notification data structure"},"UnAckAlarmsCreateEventPayload":{"type":"object","properties":{"unAckAlarms":{"$ref":"#/definitions/UnAckAlarms"}},"title":"UnAckAlarmsCreateEventPayload","description":"The event data structure"},"UnAckAlarmsStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/UnAckAlarmsStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"UnAckAlarmsStateChangeEvent","description":"The notification data structure"},"UnAckAlarmsStateChangeEventPayload":{"type":"object","properties":{"unAckAlarms":{"$ref":"#/definitions/UnAckAlarms"}},"title":"UnAckAlarmsStateChangeEventPayload","description":"The event data structure"},"UnGroupAlarms":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"alarmChangedTime":{"type":"string","format":"date-time","description":"Time of the uncorrelation"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"correlatedAlarm":{"type":"array","description":"Correlated alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"href":{"type":"string","description":"A reference to the task"},"id":{"type":"string"},"parentAlarm":{"$ref":"#/definitions/AlarmRefOrValue"},"sourceSystemId":{"type":"string","description":"Source system identifier"},"state":{"type":"string","description":"Current state of the operation task"},"unGroupedAlarm":{"type":"array","description":"The successfully uncorrelated alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"uuid":{"type":"string"}},"title":"UnGroupAlarms","description":"Task resource for ungroup alarms operation"},"UnGroupAlarmsCreate":{"type":"object","required":["alarmChangedTime","correlatedAlarm","parentAlarm","sourceSystemId"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"alarmChangedTime":{"type":"string","format":"date-time","description":"Time of the uncorrelation"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name"},"correlatedAlarm":{"type":"array","description":"Correlated alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}},"parentAlarm":{"$ref":"#/definitions/AlarmRefOrValue"},"sourceSystemId":{"type":"string","description":"Source system identifier"},"state":{"type":"string","description":"Current state of the operation task"},"unGroupedAlarm":{"type":"array","description":"The successfully uncorrelated alarms","items":{"$ref":"#/definitions/AlarmRefOrValue"}}},"title":"UnGroupAlarmsCreate","description":"Task resource for ungroup alarms operation Skipped properties: id,href"},"UnGroupAlarmsCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/UnGroupAlarmsCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"UnGroupAlarmsCreateEvent","description":"The notification data structure"},"UnGroupAlarmsCreateEventPayload":{"type":"object","properties":{"unGroupAlarms":{"$ref":"#/definitions/UnGroupAlarms"}},"title":"UnGroupAlarmsCreateEventPayload","description":"The event data structure"},"UnGroupAlarmsStateChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/UnGroupAlarmsStateChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"href":{"type":"string","description":"Reference of the ProcessFlow"},"id":{"type":"string","description":"Identifier of the Process flow"},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"UnGroupAlarmsStateChangeEvent","description":"The notification data structure"},"UnGroupAlarmsStateChangeEventPayload":{"type":"object","properties":{"unGroupAlarms":{"$ref":"#/definitions/UnGroupAlarms"}},"title":"UnGroupAlarmsStateChangeEventPayload","description":"The event data structure"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/TMF653 - Service Test Management.json b/src/assets/swagger_collections/TMF653 - Service Test Management.json new file mode 100644 index 0000000000000000000000000000000000000000..a58c6f0cf028d21a7cedd8a9e7ab825c0af99cff --- /dev/null +++ b/src/assets/swagger_collections/TMF653 - Service Test Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference: TMF653 - Service Test Management ### Release : 20.0 - April 2020 Service Test Management API goal is to provide the ability to manage tests of provisioned Services. ### Resource - ServiceTest - ServiceTestSpecification ### Operations Service Test Management API performs the following operations on the resources : - Retrieve an entity or a collection of entities depending on filter criteria - Partial update of an entity (including updating rules) - Create an entity (including default values and creation rules) - Delete an entity (for administration purposes) - Manage notification of events","version":"4.0.0","title":"Service Test Management","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","basePath":"/tmf-api", "tags":[{"name":"hub-api-controller","description":"the hub API"},{"name":"listener-api-controller","description":"the listener API"},{"name":"service-test-api-controller","description":"the serviceTest API"},{"name":"service-test-specification-api-controller","description":"the serviceTestSpecification API"}],"paths":{"/serviceTestManagement/v4/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_10","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_10","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/listener/serviceTestAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceTestAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification ServiceTestAttributeValueChangeEvent","operationId":"listenToServiceTestAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceTestAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/listener/serviceTestCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceTestCreateEvent","description":"Example of a client listener for receiving the notification ServiceTestCreateEvent","operationId":"listenToServiceTestCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceTestCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/listener/serviceTestDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceTestDeleteEvent","description":"Example of a client listener for receiving the notification ServiceTestDeleteEvent","operationId":"listenToServiceTestDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceTestDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/listener/serviceTestSpecificationAttributeValueChangeEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceTestSpecificationAttributeValueChangeEvent","description":"Example of a client listener for receiving the notification ServiceTestSpecificationAttributeValueChangeEvent","operationId":"listenToServiceTestSpecificationAttributeValueChangeEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceTestSpecificationAttributeValueChangeEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/listener/serviceTestSpecificationCreateEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceTestSpecificationCreateEvent","description":"Example of a client listener for receiving the notification ServiceTestSpecificationCreateEvent","operationId":"listenToServiceTestSpecificationCreateEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceTestSpecificationCreateEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/listener/serviceTestSpecificationDeleteEvent":{"post":{"tags":["notification listeners (client side)"],"summary":"Client listener for entity ServiceTestSpecificationDeleteEvent","description":"Example of a client listener for receiving the notification ServiceTestSpecificationDeleteEvent","operationId":"listenToServiceTestSpecificationDeleteEvent","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The event data","required":true,"schema":{"$ref":"#/definitions/ServiceTestSpecificationDeleteEvent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Notified","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/serviceTest":{"get":{"tags":["serviceTest"],"summary":"List or find ServiceTest objects","description":"This operation list or find ServiceTest entities","operationId":"listServiceTest","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ServiceTest"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["serviceTest"],"summary":"Creates a ServiceTest","description":"This operation creates a ServiceTest entity.","operationId":"createServiceTest","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"serviceTest","description":"The ServiceTest to be created","required":true,"schema":{"$ref":"#/definitions/ServiceTestCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ServiceTest"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ServiceTest"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/serviceTest/{id}":{"get":{"tags":["serviceTest"],"summary":"Retrieves a ServiceTest by ID","description":"This operation retrieves a ServiceTest entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveServiceTest","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ServiceTest","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ServiceTest"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["serviceTest"],"summary":"Deletes a ServiceTest","description":"This operation deletes a ServiceTest entity.","operationId":"deleteServiceTest","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceTest","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["serviceTest"],"summary":"Updates partially a ServiceTest","description":"This operation updates partially a ServiceTest entity.","operationId":"patchServiceTest","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceTest","required":true,"type":"string"},{"in":"body","name":"serviceSpecification","description":"The ServiceTest to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceTestUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ServiceTest"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/serviceTestSpecification":{"get":{"tags":["serviceTestSpecification"],"summary":"List or find ServiceTestSpecification objects","description":"This operation list or find ServiceTestSpecification entities","operationId":"listServiceTestSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ServiceTestSpecification"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["serviceTestSpecification"],"summary":"Creates a ServiceTestSpecification","description":"This operation creates a ServiceTestSpecification entity.","operationId":"createServiceTestSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"serviceSpecification","description":"The ServiceTestSpecification to be created","required":true,"schema":{"$ref":"#/definitions/ServiceTestSpecificationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ServiceTestSpecification"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ServiceTestSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/serviceTestSpecification/{id}":{"get":{"tags":["serviceTestSpecification"],"summary":"Retrieves a ServiceTestSpecification by ID","description":"This operation retrieves a ServiceTestSpecification entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveServiceTestSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ServiceTestSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ServiceTestSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["serviceTestSpecification"],"summary":"Deletes a ServiceTestSpecification","description":"This operation deletes a ServiceTestSpecification entity.","operationId":"deleteServiceTestSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceTestSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["serviceTestSpecification"],"summary":"Updates partially a ServiceTestSpecification","description":"This operation updates partially a ServiceTestSpecification entity.","operationId":"patchServiceTestSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ServiceTestSpecification","required":true,"type":"string"},{"in":"body","name":"serviceSpecification","description":"The ServiceTestSpecification to be updated","required":true,"schema":{"$ref":"#/definitions/ServiceTestSpecificationUpdate"}}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ServiceTestSpecification"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/serviceTestSpecification/{id}/attachment":{"post":{"tags":["serviceTestSpecification"],"summary":"Adds an attachment to a ServiceTestSpecification","description":"This operation adds an attachment to a ServiceTestSpecification and updates partially a ServiceTestSpecification entity","operationId":"addAttachmentToServiceTestSpecification","consumes":["multipart/form-data"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"afile","description":"The Attachment file to be added","required":true,"schema":{"type":"string","format":"binary"}},{"name":"id","in":"path","description":"Identifier of the ServiceTestSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Attachment"}},"201":{"description":"Created"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/serviceTestSpecification/{id}/attachment/{attid}":{"get":{"tags":["serviceTestSpecification"],"summary":"Get an attachment","description":"This operation gets an attachment","operationId":"getAttachment_2","produces":["*/*"],"parameters":[{"name":"attid","in":"path","description":"Identifier of the Attachment","required":true,"type":"string"},{"name":"id","in":"path","description":"Identifier of the serviceTestSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ByteArrayResource"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/serviceTestManagement/v4/serviceTestSpecification/{id}/attachment/{attid}/{afilename}":{"get":{"tags":["serviceTestSpecification"],"summary":"Get an attachment with filename","description":"This operation gets an attachment","operationId":"getAttachmentWithFilename_2","produces":["*/*"],"parameters":[{"name":"afilename","in":"path","description":"Identifier of the Filename","required":true,"type":"string"},{"name":"attid","in":"path","description":"Identifier of the Attachment","required":true,"type":"string"},{"name":"id","in":"path","description":"Identifier of the serviceTestSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ByteArrayResource"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Any":{"type":"object","properties":{"alias":{"type":"string"},"value":{"type":"string"}},"title":"Any"},"AppliedConsequence":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"appliedAction":{"type":"string","description":"The action for a violated threshold. This could be a hyperlink to the action."},"description":{"type":"string","description":"A narrative that explains in detail what the consequence is."},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"A word, term, or phrase by which Consequence is known and distinguished from other MetricDefMeasureConsequences."},"repeatAction":{"type":"boolean","description":"An indicator used to specify that a consequence should cease being applied if a value is in the same range as the previous value or continue being applied if a value is in the same range as the previous value. If the repeatAction is True, if the consequence is always applied as soon as the MetricMeasure value is in the range of values and if the repeatAction is False, the consequence is applied only if the previous MetricMeasure value was not in the same range."},"uuid":{"type":"string"}},"title":"AppliedConsequence","description":"An Applied Consequence defines the action (prescribed action or notification) to take when a MeasureThresholdRuleViolation occurs."},"AssociationSpecificationRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string","description":"unique identifier"},"name":{"type":"string","description":"Name of the related entity."},"uuid":{"type":"string"}},"title":"AssociationSpecificationRef","description":"reference to an AssociationSpecification object"},"Attachment":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachmentType":{"type":"string","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"description":"The size of the attachment.","$ref":"#/definitions/Quantity"},"url":{"type":"string","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"description":"The period of time for which the attachment is valid","$ref":"#/definitions/TimePeriod"}},"title":"Attachment","description":"Complements the description of an element (for instance a product) through video, pictures..."},"AttachmentRefOrValue":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"attachmentType":{"type":"string","example":"video","description":"Attachment type such as video, picture"},"content":{"type":"string","description":"The actual contents of the attachment object, if embedded, encoded as base64"},"description":{"type":"string","example":"Photograph of the Product","description":"A narrative text describing the content of the attachment"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","example":"4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Unique identifier for this particular attachment"},"mimeType":{"type":"string","description":"Attachment mime type such as extension file for video, picture and document"},"name":{"type":"string","description":"Name of the entity"},"size":{"$ref":"#/definitions/Quantity"},"url":{"type":"string","example":"http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f","description":"Uniform Resource Locator, is a web page address (a subset of URI)"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"AttachmentRefOrValue","description":"An attachment by value or by reference. An attachment complements the description of an element, for example through a document, a video, a picture."},"ByteArrayResource":{"type":"object","properties":{"byteArray":{"type":"string","format":"byte"},"description":{"type":"string"},"file":{"type":"file"},"filename":{"type":"string"},"inputStream":{"$ref":"#/definitions/InputStream"},"open":{"type":"boolean"},"readable":{"type":"boolean"},"uri":{"type":"string","format":"uri"},"url":{"type":"string","format":"url"}},"title":"ByteArrayResource"},"Characteristic":{"type":"object","required":["name","value"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicRelationship":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicRelationship"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the characteristic"},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Any"},"valueType":{"type":"string","description":"Data type of the value of the characteristic"}},"title":"Characteristic","description":"Describes a given characteristic of an object or entity through a name/value pair."},"CharacteristicRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"relationshipType":{"type":"string","description":"The type of relationship"},"uuid":{"type":"string"}},"title":"CharacteristicRelationship","description":"Another Characteristic that is related to the current Characteristic;"},"CharacteristicSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"@valueSchemaLocation":{"type":"string"},"atValueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type."},"charSpecRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicSpecificationRelationship"}},"characteristicValueSpecification":{"type":"array","description":"A CharacteristicValueSpecification object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a CharacteristicSpecification object. The values of the attributes in the CharacteristicValueSpecification object describe the values of the attributes that a corresponding Characteristic object can take on.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicValueSpecification"}},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the target Characteristic is configurable"},"description":{"type":"string","description":"A narrative that explains the CharacteristicSpecification."},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"}},"title":"CharacteristicSpecification","description":"This class defines a characteristic specification."},"CharacteristicSpecificationRelationship":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristicSpecificationId":{"type":"string","description":"Unique identifier of the characteristic within the specification"},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name of the entity"},"parentSpecificationHref":{"type":"string","description":"Hyperlink reference to the parent specification containing the target characteristic"},"parentSpecificationId":{"type":"string","description":"Unique identifier of the parent specification containing the target characteristic"},"relationshipType":{"type":"string","description":"Type of relationship such as aggregation, migration, substitution, dependency, exclusivity"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"CharacteristicSpecificationRelationship","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among Characteristic specifications. The specification characteristic is embedded within the specification whose ID and href are in this entity, and identified by its ID."},"CharacteristicSpecificationReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"@valueSchemaLocation":{"type":"string"},"atValueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type."},"charSpecRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicSpecificationRelationship"}},"characteristicValueSpecification":{"type":"array","description":"A CharacteristicValueSpecification object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a CharacteristicSpecification object. The values of the attributes in the CharacteristicValueSpecification object describe the values of the attributes that a corresponding Characteristic object can take on.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicValueSpecification"}},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the target Characteristic is configurable"},"description":{"type":"string","description":"A narrative that explains the CharacteristicSpecification."},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"}},"title":"CharacteristicSpecificationReq","description":"This class defines a characteristic specification."},"CharacteristicSpecificationRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"@valueSchemaLocation":{"type":"string"},"atValueSchemaLocation":{"type":"string","description":"This (optional) field provides a link to the schema describing the value type."},"charSpecRelationship":{"type":"array","description":"An aggregation, migration, substitution, dependency or exclusivity relationship between/among Specification Characteristics.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicSpecificationRelationship"}},"characteristicValueSpecification":{"type":"array","description":"A CharacteristicValueSpecification object is used to define a set of attributes, each of which can be assigned to a corresponding set of attributes in a CharacteristicSpecification object. The values of the attributes in the CharacteristicValueSpecification object describe the values of the attributes that a corresponding Characteristic object can take on.","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicValueSpecification"}},"configurable":{"type":"boolean","description":"If true, the Boolean indicates that the target Characteristic is configurable"},"description":{"type":"string","description":"A narrative that explains the CharacteristicSpecification."},"extensible":{"type":"boolean","description":"An indicator that specifies that the values for the characteristic can be extended by adding new values when instantiating a characteristic for a resource."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique ID for the characteristic"},"isUnique":{"type":"boolean","description":"An indicator that specifies if a value is unique for the specification. Possible values are; \"unique while value is in effect\" and \"unique whether value is in effect or not\""},"maxCardinality":{"type":"integer","format":"int32","description":"The maximum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where five is the value for the maxCardinality."},"minCardinality":{"type":"integer","format":"int32","description":"The minimum number of instances a CharacteristicValue can take on. For example, zero to five phone numbers in a group calling plan, where zero is the value for the minCardinality."},"name":{"type":"string","description":"A word, term, or phrase by which this characteristic specification is known and distinguished from other characteristic specifications."},"regex":{"type":"string","description":"A rule or principle represented in regular expression used to derive the value of a characteristic value."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the characteristic can take on, such as numeric, text and so forth"}},"title":"CharacteristicSpecificationRes","description":"This class defines a characteristic specification."},"CharacteristicValueSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"isDefault":{"type":"boolean","description":"If true, the Boolean Indicates if the value is the default value for a characteristic"},"rangeInterval":{"type":"string","description":"An indicator that specifies the inclusion or exclusion of the valueFrom and valueTo attributes. If applicable, possible values are \"open\", \"closed\", \"closedBottom\" and \"closedTop\"."},"regex":{"type":"string","description":"A regular expression constraint for given value"},"unitOfMeasure":{"type":"string","description":"A length, surface, volume, dry measure, liquid measure, money, weight, time, and the like. In general, a determinate quantity or magnitude of the kind designated, taken as a standard of comparison for others of the same kind, in assigning to them numerical values, as 1 foot, 1 yard, 1 mile, 1 square foot."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"value":{"$ref":"#/definitions/Any"},"valueFrom":{"type":"integer","format":"int32","description":"The low range value that a characteristic can take on"},"valueTo":{"type":"integer","format":"int32","description":"The upper range value that a characteristic can take on"},"valueType":{"type":"string","description":"A kind of value that the characteristic value can take on, such as numeric, text and so forth"}},"title":"CharacteristicValueSpecification","description":"specification of a value (number or text or an object) that can be assigned to a Characteristic."},"ConstraintRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The (class) type of the referred constraint"},"href":{"type":"string","description":"Hyperlink reference to the target constraint"},"id":{"type":"string","description":"reference id to the target constraint"},"name":{"type":"string","description":"Name given to the constraint"},"uuid":{"type":"string"},"version":{"type":"string"}},"title":"ConstraintRef","description":"Constraint reference. The Constraint resource represents a policy/rule applied to an entity or entity spec."},"Duration":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"amount":{"type":"integer","format":"int32","description":"Time interval (number of seconds, minutes, hours, etc.)"},"href":{"type":"string","description":"Unique reference of the entity"},"units":{"type":"string","description":"Unit of time (seconds, minutes, hours, etc.)"},"uuid":{"type":"string"}},"title":"Duration","description":"A time interval in a given unit of time"},"EntitySpecificationRelationship":{"type":"object","required":["relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"associationSpec":{"$ref":"#/definitions/AssociationSpecificationRef"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the related entity."},"relationshipType":{"type":"string","description":"Type of relationship such as migration, substitution, dependency, exclusivity"},"role":{"type":"string","description":"The association role for this entity specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"EntitySpecificationRelationship","description":"A migration, substitution, dependency or exclusivity relationship between/among entity specifications."},"EntitySpecificationRelationshipReq":{"type":"object","required":["relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"associationSpec":{"$ref":"#/definitions/AssociationSpecificationRef"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the related entity."},"relationshipType":{"type":"string","description":"Type of relationship such as migration, substitution, dependency, exclusivity"},"role":{"type":"string","description":"The association role for this entity specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"EntitySpecificationRelationshipReq","description":"A migration, substitution, dependency or exclusivity relationship between/among entity specifications."},"EntitySpecificationRelationshipRes":{"type":"object","required":["relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"associationSpec":{"$ref":"#/definitions/AssociationSpecificationRef"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string","description":"unique identifier"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the related entity."},"relationshipType":{"type":"string","description":"Type of relationship such as migration, substitution, dependency, exclusivity"},"role":{"type":"string","description":"The association role for this entity specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"EntitySpecificationRelationshipRes","description":"A migration, substitution, dependency or exclusivity relationship between/among entity specifications."},"Error":{"type":"object","required":["code","reason"],"properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class."},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class entity name."},"code":{"type":"string","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"referenceError":{"type":"string","description":"URI of documentation describing the error."},"status":{"type":"string","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput","description":"Sets the communication endpoint address the service instance must use to deliver notification information"},"InputStream":{"type":"object","title":"InputStream"},"MeasureThresholdRuleViolation":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"appliedConsequence":{"type":"array","description":"An Applied Consequence defines the action (prescribed action or notification) to take when a MeasureThresholdRuleViolation occurs.","uniqueItems":true,"items":{"$ref":"#/definitions/AppliedConsequence"}},"conformanceComparatorLower":{"type":"string","description":"An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. This operator is used to compare with the conformanceTargetLower."},"conformanceComparatorUpper":{"type":"string","description":"An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. This operator is used to compare with the conformanceTargetUpper."},"conformanceTargetExact":{"type":"string","description":"to cater for values that are not numerical test metrics (e.g. a DSL line can be Synchronised or Unsynchronised. If the latter, the test should result in a rule violation).The allowed value can contain a REGEX string."},"conformanceTargetLower":{"type":"string","description":"A value used to determine if the threshold is crossed or ceases to be crossed. It represents the lower limit. The value should be less than the conformanceTargetUpper. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition."},"conformanceTargetUpper":{"type":"string","description":"A value used to determine if the threshold is crossed or ceases to be crossed. It represents the Upper limit. The value should be greater than the conformanceTargetLower. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition."},"description":{"type":"string","description":"Description for the MetricDefMeasureThresholdRule ."},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name for the MetricDefMeasureThresholdRule ."},"numberOfAllowedCrossing":{"type":"integer","format":"int32","description":"The number of allowed crossing occurrences in reference to the tolerancePeriod without a consequence being initiated."},"thresholdRuleSeverity":{"type":"string","description":"A threshold can be generated in different severity levels. A crossing for each level may require a different condition and possibly trigger a different consequence."},"tolerancePeriod":{"$ref":"#/definitions/Duration"},"uuid":{"type":"string"}},"title":"MeasureThresholdRuleViolation","description":"A measureThresholdRuleViolation is a violation of a rule that defines the in the MericDefMeasureThresholdRule."},"MetricDefMeasureConsequence":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"A narrative that explains in detail what the consequence is."},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"A word, term, or phrase by which a MetricDefMeasureConsequence is known and distinguished from other MetricDefMeasureConsequences."},"prescribeAction":{"type":"string","description":"Recommended remedy for a violated threshold. This could be the hyperlink to the action."},"repeatAction":{"type":"boolean","description":"An indicator used to specify that a consequence should cease being applied if a value is in the same range as the previous value or continue being applied if a value is in the same range as the previous value. If the repeatAction is True, if the consequence is always applied as soon as the MetricMeasure value is in the range of values and if the repeatAction is False, the consequence is applied only if the previous MetricMeasure value was not in the same range."},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"MetricDefMeasureConsequence","description":"A MetricDefMeasureConsequence defines the action (prescribed action or notification) to take when a MetricDefMeasureThresholdRule is crossed."},"MetricDefMeasureThresholdRule":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"conformanceComparatorLower":{"type":"string","description":"An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. This operator is used to Service Test Management API REST Specification compare with the conformanceTargetLower."},"conformanceComparatorUpper":{"type":"string","description":"An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. This operator is used to compare with the conformanceTargetUpper."},"conformanceTargetLower":{"type":"string","description":"A value used to determine if the threshold is crossed or ceases to be crossed. It represents the lower limit. The value should be less than the conformanceTargetUpper. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition."},"conformanceTargetUpper":{"type":"string","description":"A value used to determine if the threshold is crossed or ceases to be crossed. It represents the Upper limit. The value should be greater than the conformanceTargetLower. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition."},"consequence":{"type":"array","description":"A list of consequences (actions, notifications) that will arise if the threshold is crossed","uniqueItems":true,"items":{"$ref":"#/definitions/MetricDefMeasureConsequence"}},"description":{"type":"string","description":"Description for the MetricDefMeasureThresholdRule ."},"href":{"type":"string","description":"Unique reference of the entity"},"name":{"type":"string","description":"Name for the MetricDefMeasureThresholdRule ."},"numberOfAllowedCrossing":{"type":"integer","format":"int32","description":"The number of allowed crossing occurrences in reference to the tolerancePeriod without a consequence being initiated."},"thresholdRuleSeverity":{"type":"string","description":"A threshold can be generated in different severity levels. A crossing for each level may require a different condition and possibly trigger a different consequence."},"tolerancePeriod":{"$ref":"#/definitions/Duration"},"uuid":{"type":"string"}},"title":"MetricDefMeasureThresholdRule","description":"A MetricDefMeasureThresholdRule is a rule that defines the condition (raise or clear) to achieve to apply consequences when a threshold is crossed or ceased to be crossed. It also defines the severity of the raise or clear of the threshold."},"Quantity":{"type":"object","properties":{"amount":{"type":"number","format":"float","description":"Numeric value in a given unit"},"units":{"type":"string","description":"Unit"}},"title":"Quantity","description":"An amount in a given unit"},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"ServiceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Id of the service"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ServiceRef","description":"Service reference, for when Service is used by other entities"},"ServiceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationRef","description":"Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification."},"ServiceTest":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"characteristic":{"type":"array","description":"List of characteristics with values that define the test run","uniqueItems":true,"items":{"$ref":"#/definitions/Characteristic"}},"description":{"type":"string","description":"Description of the service test"},"endDateTime":{"type":"string","description":"The end date and time of the service test"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"mode":{"type":"string","description":"An indication of whether the service test is running in \"PROACTIVE\" or \"ONDEMAND\" mode"},"name":{"type":"string","description":"The name of the service test"},"relatedParty":{"type":"array","description":"Party related to the test","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"relatedService":{"$ref":"#/definitions/ServiceRef"},"startDateTime":{"type":"string","description":"The start date and time of the service test."},"state":{"type":"string","description":"The actual state the service test is in"},"testMeasure":{"type":"array","description":"The results of the test in terms of the measured metrics","uniqueItems":true,"items":{"$ref":"#/definitions/TestMeasureRes"}},"testSpecification":{"$ref":"#/definitions/ServiceTestSpecificationRef"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceTest","description":"A service test is an entity that exists for a controlled test invocation on a service. The service test is executed according to a schedule and contains service test configuration parameters that are to be applied at execution time, and service test measures that result."},"ServiceTestAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ServiceTestAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ServiceTestAttributeValueChangeEvent","description":"The notification data structure"},"ServiceTestAttributeValueChangeEventPayload":{"type":"object","properties":{"serviceTest":{"$ref":"#/definitions/ServiceTest"}},"title":"ServiceTestAttributeValueChangeEventPayload","description":"The event data structure"},"ServiceTestCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"characteristic":{"type":"array","description":"List of characteristics with values that define the test run","items":{"$ref":"#/definitions/Characteristic"}},"description":{"type":"string","description":"Description of the service test"},"endDateTime":{"type":"string","format":"date-time","description":"The end date and time of the service test"},"mode":{"type":"string","description":"An indication of whether the service test is running in \"PROACTIVE\" or \"ONDEMAND\" mode"},"name":{"type":"string","description":"The name of the service test"},"relatedParty":{"type":"array","description":"Party related to the test","items":{"$ref":"#/definitions/RelatedParty"}},"relatedService":{"$ref":"#/definitions/ServiceRef"},"startDateTime":{"type":"string","format":"date-time","description":"The start date and time of the service test."},"state":{"type":"string","description":"The actual state the service test is in"},"testMeasure":{"type":"array","description":"The results of the test in terms of the measured metrics","items":{"$ref":"#/definitions/TestMeasureReq"}},"testSpecification":{"$ref":"#/definitions/ServiceTestSpecificationRef"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"ServiceTestCreate","description":"A service test is an entity that exists for a controlled test invocation on a service. The service test is executed according to a schedule and contains service test configuration parameters that are to be applied at execution time, and service test measures that result. Skipped properties: id,href"},"ServiceTestCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ServiceTestCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ServiceTestCreateEvent","description":"The notification data structure"},"ServiceTestCreateEventPayload":{"type":"object","properties":{"serviceTest":{"$ref":"#/definitions/ServiceTest"}},"title":"ServiceTestCreateEventPayload","description":"The event data structure"},"ServiceTestDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ServiceTestDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ServiceTestDeleteEvent","description":"The notification data structure"},"ServiceTestDeleteEventPayload":{"type":"object","properties":{"serviceTest":{"$ref":"#/definitions/ServiceTest"}},"title":"ServiceTestDeleteEventPayload","description":"The event data structure"},"ServiceTestSpecRelationship":{"type":"object","required":["relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the related entity."},"relationshipType":{"type":"string","description":"Type of relationship such as substitution, dependency, exclusivity"},"role":{"type":"string","description":"The association role for this service test specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceTestSpecRelationship","description":"A substitution, dependency or exclusivity relationship between/among service specifications."},"ServiceTestSpecRelationshipReq":{"type":"object","required":["relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"lifecycleStatusEnum":{"type":"string","enum":["ACTIVE","IN_DESIGN","IN_STUDY","IN_TEST","LAUNCHED","OBSOLETE","REJECTED","RETIRED"]},"name":{"type":"string","description":"Name of the related entity."},"relationshipType":{"type":"string","description":"Type of relationship such as substitution, dependency, exclusivity"},"role":{"type":"string","description":"The association role for this service test specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceTestSpecRelationshipReq","description":"A substitution, dependency or exclusivity relationship between/among service specifications."},"ServiceTestSpecRelationshipRes":{"type":"object","required":["relationshipType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Hyperlink reference"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the related entity."},"relationshipType":{"type":"string","description":"Type of relationship such as substitution, dependency, exclusivity"},"role":{"type":"string","description":"The association role for this service test specification"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ServiceTestSpecRelationshipRes","description":"A substitution, dependency or exclusivity relationship between/among service specifications."},"ServiceTestSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"attachment":{"type":"array","description":"Attachments that may be of relevance to this specification, such as picture, document, media","uniqueItems":true,"items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"constraint":{"type":"array","description":"This is a list of constraint references applied to this specification","uniqueItems":true,"items":{"$ref":"#/definitions/ConstraintRef"}},"description":{"type":"string","description":"Description of this catalog"},"entitySpecRelationship":{"type":"array","description":"Relationship to another entity specification, might be dependency, substitution, etc.","uniqueItems":true,"items":{"$ref":"#/definitions/EntitySpecificationRelationshipRes"}},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"isBundle":{"type":"boolean","description":"isBundle determines whether an EntitySpecification represents a single EntitySpecification (false), or a bundle of EntitySpecifications (true)."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"relatedParty":{"type":"array","description":"Parties who manage or otherwise have an interest in this entity specification","uniqueItems":true,"items":{"$ref":"#/definitions/RelatedParty"}},"relatedServiceSpecification":{"type":"array","description":"The related service specification may relate to more than one service specification.","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"serviceTestSpecRelationship":{"type":"array","description":"A list of service test specifications related to this specification e.g. dependency, substitution","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceTestSpecRelationshipRes"}},"specCharacteristic":{"type":"array","description":"List of characteristics that the entity can take","uniqueItems":true,"items":{"$ref":"#/definitions/CharacteristicSpecificationRes"}},"targetEntitySchema":{"$ref":"#/definitions/TargetEntitySchema"},"testMeasureDefinition":{"type":"array","description":"A list of definitions for the measurements for the test defined by this specification","uniqueItems":true,"items":{"$ref":"#/definitions/TestMeasureDefinition"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity specification version"}},"title":"ServiceTestSpecification","description":"The service test specification describes the service test in terms of parameters to be configured and measures to be taken."},"ServiceTestSpecificationAttributeValueChangeEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ServiceTestSpecificationAttributeValueChangeEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"fieldPath":{"type":"string","description":"The path identifying the object field concerned by this notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ServiceTestSpecificationAttributeValueChangeEvent","description":"The notification data structure"},"ServiceTestSpecificationAttributeValueChangeEventPayload":{"type":"object","properties":{"serviceTestSpecification":{"$ref":"#/definitions/ServiceTestSpecification"}},"title":"ServiceTestSpecificationAttributeValueChangeEventPayload","description":"The event data structure"},"ServiceTestSpecificationCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"attachment":{"type":"array","description":"Attachments that may be of relevance to this specification, such as picture, document, media","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"constraint":{"type":"array","description":"This is a list of constraint references applied to this specification","items":{"$ref":"#/definitions/ConstraintRef"}},"description":{"type":"string","description":"Description of a service test specification."},"entitySpecRelationship":{"type":"array","description":"Relationship to another entity specification, might be dependency, substitution, etc.","items":{"$ref":"#/definitions/EntitySpecificationRelationshipReq"}},"isBundle":{"type":"boolean","description":"isBundle determines whether an EntitySpecification represents a single EntitySpecification (false), or a bundle of EntitySpecifications (true)."},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update of this REST resource"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of this catalog item"},"name":{"type":"string","description":"Name given to this REST resource"},"relatedParty":{"type":"array","description":"Parties who manage or otherwise have an interest in this entity specification","items":{"$ref":"#/definitions/RelatedParty"}},"relatedServiceSpecification":{"type":"array","description":"The related service specification may relate to more than one service specification.","items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"serviceTestSpecRelationship":{"type":"array","description":"A list of service test specifications related to this specification e.g. dependency, substitution","items":{"$ref":"#/definitions/ServiceTestSpecRelationshipReq"}},"specCharacteristic":{"type":"array","description":"List of characteristics that the entity can take","items":{"$ref":"#/definitions/CharacteristicSpecificationReq"}},"targetEntitySchema":{"$ref":"#/definitions/TargetEntitySchema"},"testMeasureDefinition":{"type":"array","description":"A list of definitions for the measurements for the test defined by this specification","items":{"$ref":"#/definitions/TestMeasureDefinition"}},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity specification version"}},"title":"ServiceTestSpecificationCreate","description":"The service test specification describes the service test in terms of parameters to be configured and measures to be taken. Skipped properties: id,href"},"ServiceTestSpecificationCreateEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ServiceTestSpecificationCreateEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ServiceTestSpecificationCreateEvent","description":"The notification data structure"},"ServiceTestSpecificationCreateEventPayload":{"type":"object","properties":{"serviceTestSpecification":{"$ref":"#/definitions/ServiceTestSpecification"}},"title":"ServiceTestSpecificationCreateEventPayload","description":"The event data structure"},"ServiceTestSpecificationDeleteEvent":{"type":"object","properties":{"correlationId":{"type":"string","description":"The correlation id for this event."},"description":{"type":"string","description":"An explnatory of the event."},"domain":{"type":"string","description":"The domain of the event."},"event":{"$ref":"#/definitions/ServiceTestSpecificationDeleteEventPayload"},"eventId":{"type":"string","description":"The identifier of the notification."},"eventTime":{"type":"string","format":"date-time","description":"Time of the event occurrence."},"eventType":{"type":"string","description":"The type of the notification."},"priority":{"type":"string","description":"A priority."},"timeOcurred":{"type":"string","format":"date-time","description":"The time the event occured."},"title":{"type":"string","description":"The title of the event."}},"title":"ServiceTestSpecificationDeleteEvent","description":"The notification data structure"},"ServiceTestSpecificationDeleteEventPayload":{"type":"object","properties":{"serviceTestSpecification":{"$ref":"#/definitions/ServiceTestSpecification"}},"title":"ServiceTestSpecificationDeleteEventPayload","description":"The event data structure"},"ServiceTestSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"href":{"type":"string","description":"Hyperlink to access a service test specification."},"id":{"type":"string"},"uuid":{"type":"string"},"version":{"type":"string","description":"Version of a service test specification "}},"title":"ServiceTestSpecificationRef","description":"The service test specification used by the service test."},"ServiceTestSpecificationUpdate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"attachment":{"type":"array","description":"Attachments that may be of relevance to this specification, such as picture, document, media","items":{"$ref":"#/definitions/AttachmentRefOrValue"}},"constraint":{"type":"array","description":"This is a list of constraint references applied to this specification","items":{"$ref":"#/definitions/ConstraintRef"}},"description":{"type":"string","description":"Description of a service test specification."},"entitySpecRelationship":{"type":"array","description":"Relationship to another entity specification, might be dependency, substitution, etc.","items":{"$ref":"#/definitions/EntitySpecificationRelationshipReq"}},"isBundle":{"type":"boolean","description":"isBundle determines whether an EntitySpecification represents a single EntitySpecification (false), or a bundle of EntitySpecifications (true)."},"lastUpdate":{"type":"string","format":"date-time","description":"Date and time of the last update of this REST resource"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status of this catalog item"},"name":{"type":"string","description":"Name given to this REST resource"},"relatedParty":{"type":"array","description":"Parties who manage or otherwise have an interest in this entity specification","items":{"$ref":"#/definitions/RelatedParty"}},"relatedServiceSpecification":{"type":"array","description":"The related service specification may relate to more than one service specification.","items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"serviceTestSpecRelationship":{"type":"array","description":"A list of service test specifications related to this specification e.g. dependency, substitution","items":{"$ref":"#/definitions/ServiceTestSpecRelationshipReq"}},"specCharacteristic":{"type":"array","description":"List of characteristics that the entity can take","items":{"$ref":"#/definitions/CharacteristicSpecificationReq"}},"targetEntitySchema":{"$ref":"#/definitions/TargetEntitySchema"},"testMeasureDefinition":{"type":"array","description":"A list of definitions for the measurements for the test defined by this specification","items":{"$ref":"#/definitions/TestMeasureDefinition"}},"version":{"type":"string","description":"Entity specification version"}},"title":"ServiceTestSpecificationUpdate","description":"The service test specification describes the service test in terms of parameters to be configured and measures to be taken. Skipped properties: id,href,validFor"},"ServiceTestUpdate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"atSchemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"atType":{"type":"string","description":"When sub-classing, this defines the sub-class Extensible name"},"characteristic":{"type":"array","description":"List of characteristics with values that define the test run","items":{"$ref":"#/definitions/Characteristic"}},"description":{"type":"string","description":"Description of the service test"},"endDateTime":{"type":"string","format":"date-time","description":"The end date and time of the service test"},"mode":{"type":"string","description":"An indication of whether the service test is running in \"PROACTIVE\" or \"ONDEMAND\" mode"},"name":{"type":"string","description":"The name of the service test"},"relatedParty":{"type":"array","description":"Party related to the test","items":{"$ref":"#/definitions/RelatedParty"}},"relatedService":{"$ref":"#/definitions/ServiceRef"},"startDateTime":{"type":"string","format":"date-time","description":"The start date and time of the service test."},"state":{"type":"string","description":"The actual state the service test is in"},"testMeasure":{"type":"array","description":"The results of the test in terms of the measured metrics","items":{"$ref":"#/definitions/TestMeasureReq"}},"testSpecification":{"$ref":"#/definitions/ServiceTestSpecificationRef"},"validFor":{"$ref":"#/definitions/TimePeriod"}},"title":"ServiceTestUpdate","description":"A service test is an entity that exists for a controlled test invocation on a service. The service test is executed according to a schedule and contains service test configuration parameters that are to be applied at execution time, and service test measures that result. Skipped properties: id,href"},"TargetEntitySchema":{"type":"object","required":["atSchemaLocation","atType"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atSchemaLocation":{"type":"string","description":"This field provides a link to the schema describing the target entity"},"atType":{"type":"string","description":"Class type of the target entity"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"}},"title":"TargetEntitySchema","description":"The reference object to the schema and type of target entity which is described by a specification"},"TargetServiceSchema":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"}},"title":"TargetServiceSchema","description":"The reference object to the schema and type of target service which is described by service specification"},"TestMeasure":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"accuracy":{"type":"number","format":"float","description":"The number of digits of accuracy captured for associated Metrics"},"captureDateTime":{"type":"string","format":"date-time","description":"The date and time that the metric was captured"},"captureMethod":{"type":"string","description":"The method used to capture the Metrics (This may be replaced by a set of entities similar to the Performance Monitoring Ref)"},"href":{"type":"string","description":"Unique reference of the entity"},"metricDescription":{"type":"string","description":"Brief description of the metric"},"metricHref":{"type":"string","description":"Hyperlink to access a metric for detail information"},"metricName":{"type":"string","description":"The name of the metric"},"ruleViolation":{"type":"array","description":"A list of rules that were violated in this test measure","uniqueItems":true,"items":{"$ref":"#/definitions/MeasureThresholdRuleViolation"}},"unitOfMeasure":{"type":"string","description":"The unit of measure for the metric values, such as meters, cubic yards, kilograms [ISO 1000]."},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Characteristic"}},"title":"TestMeasure","description":"A TestMeasure specifies a measure of a specific aspect of a product, service, or resource test, such as lost packets or connectivity status"},"TestMeasureDefinition":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"captureFrequency":{"type":"string","description":"The frequency of capture for the metric. Note: This may be replaced by a set of entities similar to the Performance Monitoring"},"captureMethod":{"type":"string","description":"The method used to capture the Metric. Note: This may be replaced by a set of entities similar to the Performance Monitoring"},"capturePeriod":{"$ref":"#/definitions/Duration"},"href":{"type":"string","description":"Unique reference of the entity"},"metricDescription":{"type":"string","description":"Brief description of the metric"},"metricHref":{"type":"string","description":"Hyperlink to access a metric for detail information"},"metricName":{"type":"string","description":"The name of a metric that in the test measure"},"name":{"type":"string","description":"The name of the TestMeasureDefinition"},"thresholdRule":{"type":"array","description":"The rule(s) associated with the measure threshold","uniqueItems":true,"items":{"$ref":"#/definitions/MetricDefMeasureThresholdRule"}},"unitOfMeasure":{"type":"string","description":"Name of a service test specification"},"uuid":{"type":"string"},"validFor":{"$ref":"#/definitions/TimePeriod"},"valueType":{"type":"string","description":"A kind of value that the Metric value can take on, such as numeric, text, and so forth"}},"title":"TestMeasureDefinition","description":"A TestMeasureDefinition specifies a measure of a specific aspect of a product, service, or resource test, such as lost packets or connectivity status"},"TestMeasureReq":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"accuracy":{"type":"number","format":"float","description":"The number of digits of accuracy captured for associated Metrics"},"captureDateTime":{"type":"string","format":"date-time","description":"The date and time that the metric was captured"},"captureMethod":{"type":"string","description":"The method used to capture the Metrics (This may be replaced by a set of entities similar to the Performance Monitoring Ref)"},"href":{"type":"string","description":"Unique reference of the entity"},"metricDescription":{"type":"string","description":"Brief description of the metric"},"metricHref":{"type":"string","description":"Hyperlink to access a metric for detail information"},"metricName":{"type":"string","description":"The name of the metric"},"ruleViolation":{"type":"array","description":"A list of rules that were violated in this test measure","uniqueItems":true,"items":{"$ref":"#/definitions/MeasureThresholdRuleViolation"}},"unitOfMeasure":{"type":"string","description":"The unit of measure for the metric values, such as meters, cubic yards, kilograms [ISO 1000]."},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Characteristic"}},"title":"TestMeasureReq","description":"A TestMeasure specifies a measure of a specific aspect of a product, service, or resource test, such as lost packets or connectivity status"},"TestMeasureRes":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"accuracy":{"type":"number","format":"float","description":"The number of digits of accuracy captured for associated Metrics"},"captureDateTime":{"type":"string","description":"The date and time that the metric was captured"},"captureMethod":{"type":"string","description":"The method used to capture the Metrics (This may be replaced by a set of entities similar to the Performance Monitoring Ref)"},"href":{"type":"string","description":"Unique reference of the entity"},"metricDescription":{"type":"string","description":"Brief description of the metric"},"metricHref":{"type":"string","description":"Hyperlink to access a metric for detail information"},"metricName":{"type":"string","description":"The name of the metric"},"ruleViolation":{"type":"array","description":"A list of rules that were violated in this test measure","uniqueItems":true,"items":{"$ref":"#/definitions/MeasureThresholdRuleViolation"}},"unitOfMeasure":{"type":"string","description":"The unit of measure for the metric values, such as meters, cubic yards, kilograms [ISO 1000]."},"uuid":{"type":"string"},"value":{"$ref":"#/definitions/Characteristic"}},"title":"TestMeasureRes","description":"A TestMeasure specifies a measure of a specific aspect of a product, service, or resource test, such as lost packets or connectivity status"},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/TMF685 - Resource Pool Management.json b/src/assets/swagger_collections/TMF685 - Resource Pool Management.json new file mode 100644 index 0000000000000000000000000000000000000000..27494de6374dc02bca4a3a3efc79e38e18d58fce --- /dev/null +++ b/src/assets/swagger_collections/TMF685 - Resource Pool Management.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## TMF API Reference: TMF685 Resource Pool Management ### Release : 18.0 Resources that can\r\nbe reserved are only\r\nin one pool.\r\nIF a resource is not found in a pool is infinite.\r\nWhen one makes a reservation for a resource, then we check availability of \r\nthis resource on that specific dates\r\nif checkAvailability returns the resource\r\nthen it can be reserved on that specific requested date and time.","version":"1.0.0","title":"Resource Pool Management","contact":{},"license":{"url":"http://unlicense.org"}},"host":"portal.openslice.io","tags":[{"name":"availability-check-api-controller","description":"the availabilityCheck API"},{"name":"extract-api-controller","description":"the extract API"},{"name":"hub-api-controller","description":"the hub API"},{"name":"push-api-controller","description":"the push API"},{"name":"reservation-api-controller","description":"the reservation API"},{"name":"resource-pool-api-controller","description":"the resourcePool API"}],"paths":{"/tmf-api/resourcePoolManagement/v1/availabilityCheck":{"post":{"tags":["availabilityCheck"],"summary":"Creates a 'AvailabilityCheck'","description":"This operation executes task to retrieve available Resource entities or to check resource pool has available Resource capacity.","operationId":"createAvailabilityCheck","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"The Availability Check to be created","required":true,"schema":{"$ref":"#/definitions/AvailabilityCheckCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/AvailabilityCheck"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/AvailabilityCheck"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourcePoolManagement/v1/extract":{"post":{"tags":["extract"],"summary":"Creates an 'Extract' action and modifies a pool","description":"In this operation, TASK is executed to extract the capacity of the resource from the resource pool to another pool.","operationId":"createExtract","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"The Extract to be performed","required":true,"schema":{"$ref":"#/definitions/ExtractCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourcePool"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourcePool"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourcePoolManagement/v1/hub":{"post":{"tags":["events subscription"],"summary":"Register a listener","description":"Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"registerListener_15","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"Data containing the callback endpoint to deliver the information","required":true,"schema":{"$ref":"#/definitions/EventSubscriptionInput"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/EventSubscription"}},"201":{"description":"Subscribed","schema":{"$ref":"#/definitions/EventSubscription"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourcePoolManagement/v1/hub/{id}":{"delete":{"tags":["events subscription"],"summary":"Unregister a listener","description":"Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.","operationId":"unregisterListener_15","produces":["application/json"],"parameters":[{"name":"id","in":"path","description":"The id of the registered listener","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method not allowed","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourcePoolManagement/v1/push":{"post":{"tags":["push"],"summary":"Creates a 'Push' action and modifies a Pool","description":"This operation runs TASK, which adds the capacity of the new resource to the resource pool.","operationId":"createPush","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"The Push to be performed","required":true,"schema":{"$ref":"#/definitions/PushCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourcePool"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourcePool"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourcePoolManagement/v1/reservation":{"get":{"tags":["reservation"],"summary":"List or find 'Reservation' objects","operationId":"listReservation","produces":["application/json"],"parameters":[{"name":"fields","in":"query","description":"Comma separated properties to display in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"name","in":"query","required":false,"type":"string"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Ok","schema":{"type":"array","items":{"$ref":"#/definitions/Reservation"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["reservation"],"summary":"Creates a 'Reservation'","operationId":"createReservation","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"The Reservation to be created","required":true,"schema":{"$ref":"#/definitions/ReservationCreate"}},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Reservation"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/Reservation"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourcePoolManagement/v1/reservation/{id}":{"get":{"tags":["reservation"],"summary":"Retrieves a 'Reservation' by Id","operationId":"retrieveReservation","produces":["application/json"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Reservation","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"Ok","schema":{"type":"array","items":{"$ref":"#/definitions/Reservation"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["reservation"],"summary":"Updates partially a 'Reservation' by Id","operationId":"patchReservation","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"The Reservation to be updated","required":true,"schema":{"$ref":"#/definitions/ReservationUpdate"}},{"name":"id","in":"path","description":"Identifier of the Reservation","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/Reservation"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourcePoolManagement/v1/resourcePool":{"get":{"tags":["resourcePool"],"summary":"List or find ResourcePool objects","description":"This operation list or find ResourcePool entities","operationId":"listResourcePool","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"name","in":"query","required":false,"type":"string"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ResourcePool"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["resourcePool"],"summary":"Creates a 'ResourcePool'","operationId":"createResourcePool","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"The Resource Pool to be created","required":true,"schema":{"$ref":"#/definitions/ResourcePoolCreate"}},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ResourcePool"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ResourcePool"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/resourcePoolManagement/v1/resourcePool/{id}":{"get":{"tags":["resourcePool"],"summary":"Retrieves a ResourcePool by ID","description":"This operation retrieves a ResourcePool entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveResourcePool","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the ResourcePool","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ResourcePool"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["resourcePool"],"summary":"Deletes a 'ResourcePool' by Id","operationId":"deleteResourcePool","produces":["application/json"],"parameters":[{"name":"id","in":"path","description":"Identifier of the Resource Pool","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"$ref":"#/definitions/Error"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["resourcePool"],"summary":"Updates partially a 'ResourcePool' by Id","operationId":"patchResourcePool","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"The Resource Pool to be updated","required":true,"schema":{"$ref":"#/definitions/ResourcePoolUpdate"}},{"name":"id","in":"path","description":"Identifier of the Resource Pool","required":true,"type":"string"},{"name":"name","in":"query","required":false,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ResourcePool"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"ApplicableTimePeriod":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"dayOfWeek":{"type":"string","description":"A day or days representing when the schedule is applicable. For example 2, 3 represent Monday and Tuesday."},"endDateTime":{"type":"string","description":"The period of time for which the schedule is applicable. Instance values are mutually exclusive with daysOfWeek values."},"fromDateTime":{"type":"string","description":"The period of time for which the schedule is applicable. Instance values are mutually exclusive with daysOfWeek values."},"href":{"type":"string","description":"Unique reference of the entity"},"rangeInterval":{"type":"string","description":"An indicator that specifies the inclusion or exclusion of the from and to DateTime attributes. Possible values are \"open\", \"closed\", \"closedBottom\" and \"closedTop\"."},"uuid":{"type":"string"}},"title":"ApplicableTimePeriod","description":"The period of time for which Capacity or CapacityDemand applies."},"AppliedCapacityAmount":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"appliedDemandAmount":{"type":"integer","format":"int32","description":"An amount of demand applied to a CapacityAmount. Note that this is a composite attribute defined by CapacityAmount."},"href":{"type":"string","description":"Unique reference of the entity"},"resource":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRef"}},"resourceCapacityDemand":{"$ref":"#/definitions/ResourceCapacityDemand"},"resources":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRef"}},"uuid":{"type":"string"}},"title":"AppliedCapacityAmount","description":"The amount of CapcityDemand applied to a CapacityAmount."},"AvailabilityCheck":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"The base type for use in polymorphic collections"},"atSchemaLocation":{"type":"string","description":"A link to the schema describing a resource (for type extension)."},"atType":{"type":"string","description":"The class type of the actual resource (for type extension)."},"availableResources":{"type":"array","items":{"$ref":"#/definitions/ResourceRef"}},"href":{"type":"string","description":"A string. Hyperlink to access the availabilityCheck task for resource pool Management"},"id":{"type":"string","description":"A string. Identifier of an instance of the availabilityCheck task for resource pool Management"},"resourceCapacityDemand":{"$ref":"#/definitions/ResourceCapacityDemand"}},"title":"AvailabilityCheck","description":"the availabilityCheck task resource for resource pool management"},"AvailabilityCheckCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"The base type for use in polymorphic collections"},"atSchemaLocation":{"type":"string","description":"A link to the schema describing a resource (for type extension)."},"atType":{"type":"string","description":"The class type of the actual resource (for type extension)."},"resourceCapacityDemand":{"$ref":"#/definitions/ResourceCapacityDemand"}},"title":"AvailabilityCheckCreate","description":"the availabilityCheck task resource for resource pool management Skipped properties: id,href"},"Capacity":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"appliedCapacityAmount":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/AppliedCapacityAmount"}},"capacityAmount":{"type":"integer","format":"int32"},"href":{"type":"string","description":"Unique reference of the entity"},"place":{"$ref":"#/definitions/PlaceRef"},"relatedParty":{"$ref":"#/definitions/RelatedParty"},"resources":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRef"}},"uuid":{"type":"string"}},"title":"Capacity"},"Error":{"type":"object","required":["code","reason"],"properties":{"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atSchemaLocation":{"type":"string","description":"(optional) A link to the schema describing a REST resource."},"atType":{"type":"string","description":"(optional) The class type of a REST resource."},"code":{"type":"integer","format":"int32","description":"Application related code."},"message":{"type":"string","description":"(optional) Text that provide more details and corrective actions related to the error."},"reason":{"type":"integer","format":"int32","description":"Text that explains the reason for error."},"referenceError":{"type":"string","description":"(optional) A URL to online documentation that provides more information about the error."},"status":{"type":"integer","format":"int32","description":"(optional) http error code extension like 400-2"}},"title":"Error"},"EventSubscription":{"type":"object","required":["callback","id"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"id":{"type":"string","description":"Id of the listener"},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscription"},"EventSubscriptionInput":{"type":"object","required":["callback"],"properties":{"callback":{"type":"string","description":"The callback being registered."},"query":{"type":"string","description":"additional data to be passed"}},"title":"EventSubscriptionInput"},"ExtractCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"The base type for use in polymorphic collections"},"atSchemaLocation":{"type":"string","description":"A link to the schema describing a resource (for type extension)."},"atType":{"type":"string","description":"The class type of the actual resource (for type extension)."},"capacity":{"$ref":"#/definitions/Capacity"},"resourcePool":{"$ref":"#/definitions/ResourcePoolRef"}},"title":"ExtractCreate","description":"the extract task resource for resource pool management Skipped properties: id,href"},"PlaceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of a related entity."},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"PlaceRef","description":"Place reference. PlaceRef defines the placeRefs where the products are sold or delivered."},"PushCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"The base type for use in polymorphic collections"},"atSchemaLocation":{"type":"string","description":"A link to the schema describing a resource (for type extension)."},"atType":{"type":"string","description":"The class type of the actual resource (for type extension)."},"capacity":{"$ref":"#/definitions/Capacity"},"resourcePool":{"$ref":"#/definitions/ResourcePoolRef"}},"title":"PushCreate","description":"the push task resource for resource pool management Skipped properties: id,href"},"RelatedParty":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"extendedInfo":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"role":{"type":"string","description":"Role of the related party."},"uuid":{"type":"string"}},"title":"RelatedParty","description":"RelatedParty reference. A related party defines party or party role linked to a specific entity."},"Reservation":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"A string. Identifier of an instance of the Reservation."},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"relatedParty":{"$ref":"#/definitions/RelatedParty"},"requestedPeriodEndDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"requestedPeriodStartDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"},"reservationItem":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ReservationItem"}},"reservationState":{"type":"string","description":"A string. The life cycle state of the reservation."},"serviceOrderRef":{"$ref":"#/definitions/ServiceOrderRef"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"Reservation","description":"reservation api resource"},"ReservationCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string"},"atSchemaLocation":{"type":"string","description":"A string. Generic attribute containing the link to the schema that defines the structure of the class type of the current object."},"atType":{"type":"string","description":"A string. Indicates the (class) type of reservation. Ex. serviceItemReservation, resourceItemReservation"},"description":{"type":"string","description":"A string. free-text description of the reservation."},"relatedParty":{"$ref":"#/definitions/RelatedParty"},"requestedPeriodEndDateTime":{"type":"string"},"requestedPeriodStartDateTime":{"type":"string"},"reservationItem":{"type":"array","items":{"$ref":"#/definitions/ReservationItem"}},"reservationState":{"type":"string","description":"A string. The life cycle state of the reservation."},"serviceOrderRef":{"$ref":"#/definitions/ServiceOrderRef"},"validFor":{"description":"The period of time for which the reservation is applicable.","$ref":"#/definitions/TimePeriod"}},"title":"ReservationCreate","description":"reservation api resource Skipped properties: id,href"},"ReservationItem":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"appliedCapacityAmount":{"$ref":"#/definitions/AppliedCapacityAmount"},"href":{"type":"string","description":"Unique reference of the entity"},"quantity":{"type":"integer","format":"int32","description":"Represents the number of reservationItems that make up the reservation."},"resourceCapacity":{"$ref":"#/definitions/ResourceCapacityDemand"},"subReservationState":{"type":"string","description":"A string. The life cycle state of the each reservation item."},"uuid":{"type":"string"}},"title":"ReservationItem","description":"An identified part of the reservation. A reservation is decomposed into one or more reservation items."},"ReservationUpdate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string"},"atSchemaLocation":{"type":"string","description":"A string. Generic attribute containing the link to the schema that defines the structure of the class type of the current object."},"atType":{"type":"string","description":"A string. Indicates the (class) type of reservation. Ex. serviceItemReservation, resourceItemReservation"},"description":{"type":"string","description":"A string. free-text description of the reservation."},"relatedParty":{"$ref":"#/definitions/RelatedParty"},"requestedPeriodEndDateTime":{"type":"string"},"requestedPeriodStartDateTime":{"type":"string"},"reservationItem":{"type":"array","items":{"$ref":"#/definitions/ReservationItem"}},"reservationState":{"type":"string","description":"A string. The life cycle state of the reservation."},"serviceOrderRef":{"$ref":"#/definitions/ServiceOrderRef"},"validFor":{"description":"The period of time for which the reservation is applicable.","$ref":"#/definitions/TimePeriod"}},"title":"ReservationUpdate","description":"reservation api resource Skipped properties: id,href"},"ResourceCapacityDemand":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"applicableTimePeriod":{"$ref":"#/definitions/ApplicableTimePeriod"},"capacityDemandAmount":{"type":"integer","format":"int32","description":"A value and units that define the CapacityDemand, such as 10000 ea, 10B Mb. Instance values are mutually exclusive with From and To capacityDemandAmounts and range interval."},"href":{"type":"string","description":"Unique reference of the entity"},"place":{"$ref":"#/definitions/PlaceRef"},"resourcePool":{"$ref":"#/definitions/ResourcePoolRef"},"resources":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRef"}},"uuid":{"type":"string"}},"title":"ResourceCapacityDemand","description":"the amount of capacity that is planned to be consumed or has been consumed."},"ResourcePool":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"capacity":{"$ref":"#/definitions/Capacity"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of this REST resource"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"ResourcePool","description":"manages resource capacity with the resource state"},"ResourcePoolCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"A string. Generic attribute indicating the base class type of the extension class of the current object. Useful only when the class type of the current object is unknown to the implementation."},"atSchemaLocation":{"type":"string","description":"A string. Generic attribute containing the link to the schema that defines the structure of the class type of the current object."},"atType":{"type":"string","description":"A string. Generic attribute containing the name of the resource class type."},"capacity":{"$ref":"#/definitions/Capacity"},"description":{"type":"string","description":"A string. free-text description of the Resource Pool."},"name":{"type":"string"},"relatedParty":{"type":"string","description":"A related party defines party or party role linked to a specific entity, who uses the resource of Resource Pool."}},"title":"ResourcePoolCreate","description":"manages resource capacity with the resource state Skipped properties: id,href"},"ResourcePoolRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"atReferredType":{"type":"string","description":"A string. Indicates the type of the referred object. This attribute is to be used when the object is representing a reference to an existing object instead of the of the object itself."},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"A string. Identifier of an instance of the Resource Pool."},"resources":{"type":"array","uniqueItems":true,"items":{"$ref":"#/definitions/ResourceRef"}}},"title":"ResourcePoolRef","description":"manages resource capacity with the resource state"},"ResourcePoolUpdate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"atBaseType":{"type":"string","description":"A string. Generic attribute indicating the base class type of the extension class of the current object. Useful only when the class type of the current object is unknown to the implementation."},"atSchemaLocation":{"type":"string","description":"A string. Generic attribute containing the link to the schema that defines the structure of the class type of the current object."},"atType":{"type":"string","description":"A string. Generic attribute containing the name of the resource class type."},"capacity":{"$ref":"#/definitions/Capacity"},"description":{"type":"string","description":"A string. free-text description of the Resource Pool."},"name":{"type":"string"},"relatedParty":{"type":"string","description":"A related party defines party or party role linked to a specific entity, who uses the resource of Resource Pool."}},"title":"ResourcePoolUpdate","description":"manages resource capacity with the resource state Skipped properties: id,href"},"ResourceRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the supporting resource"},"name":{"type":"string","description":"Name of the entity"},"uuid":{"type":"string"}},"title":"ResourceRef"},"ServiceOrderRef":{"type":"object","required":["id"],"properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string","description":"Unique identifier of the Service Order"},"serviceOrderItemId":{"type":"string","description":"Unique identifier of the Service Order Item within a service order, not populated if this is a reference to a service order"}},"title":"ServiceOrderRef","description":"Service Order reference. Useful to understand the which was the Service order through which the service was instantiated in the service inventory"},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/assurance-services-management-impl.json b/src/assets/swagger_collections/assurance-services-management-impl.json new file mode 100644 index 0000000000000000000000000000000000000000..58094ae85dd51900b7223df7be7ae836f70f78a1 --- /dev/null +++ b/src/assets/swagger_collections/assurance-services-management-impl.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"## Assurance Services Management ### Release : 0.1 - Feb 2021 - Assurance Services Management ### Operations on Assurance Services: Rules, Action","version":"0.1.0","title":"Assurance Services Management","contact":{},"license":{"url":"http://openslice.io"}},"host":"portal.openslice.io","basePath":"/oas-api","tags":[{"name":"action-specification-api-controller","description":"Action Specification Api Controller"},{"name":"rule-specification-api-controller","description":"Rule Specification Api Controller"}],"paths":{"/assuranceServicesManagement/v1/actionSpecification":{"get":{"tags":["actionSpecification"],"summary":"List or find ActionSpecification objects","description":"This operation list or find ActionSpecification entities","operationId":"listActionSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/ActionSpecification"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["actionSpecification"],"summary":"Creates an ActionSpecification","description":"This operation creates an ActionSpecification entity.","operationId":"createActionSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ActionSpecification to be created","required":true,"schema":{"$ref":"#/definitions/ActionSpecificationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ActionSpecification"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/ActionSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/assuranceServicesManagement/v1/actionSpecification/{id}":{"get":{"tags":["actionSpecification"],"summary":"Retrieves an ActionSpecification by ID","description":"This operation retrieves an ActionSpecification entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveActionSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"allParams","in":"query","description":"allParams","required":false,"items":{"type":"object","additionalProperties":{"type":"string"}}},{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the ActionSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/ActionSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["actionSpecification"],"summary":"Deletes an ActionSpecification","description":"This operation deletes a ActionSpecification entity.","operationId":"deleteActionSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the ActionSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"patch":{"tags":["actionSpecification"],"summary":"Updates partially an ActionSpecification","description":"This operation updates partially an ActionSpecification entity.","operationId":"patchActionSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The ActionSpecification to be updated","required":true,"schema":{"$ref":"#/definitions/ActionSpecificationUpdate"}},{"name":"id","in":"path","description":"Identifier of the ActionSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/ActionSpecification"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/assuranceServicesManagement/v1/ruleSpecification":{"get":{"tags":["ruleSpecification"],"summary":"List or find RuleSpecification objects","description":"This operation list or find RuleSpecification entities","operationId":"listRuleSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32","allowEmptyValue":false}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/RuleSpecification"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["ruleSpecification"],"summary":"Creates a RuleSpecification","description":"This operation creates a RuleSpecification entity.","operationId":"createRuleSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The RuleSpecification to be created","required":true,"schema":{"$ref":"#/definitions/RuleSpecificationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/RuleSpecification"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/RuleSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/assuranceServicesManagement/v1/ruleSpecification/{id}":{"get":{"tags":["ruleSpecification"],"summary":"Retrieves a RuleSpecification by ID","description":"This operation retrieves a RuleSpecification entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveRuleSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string","allowEmptyValue":false},{"name":"id","in":"path","description":"Identifier of the RuleSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/RuleSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["ruleSpecification"],"summary":"Deletes a RuleSpecification","description":"This operation deletes a RuleSpecification entity.","operationId":"deleteRuleSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the RuleSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"patch":{"tags":["ruleSpecification"],"summary":"Updates partially a RuleSpecification","description":"This operation updates partially a RuleSpecification entity.","operationId":"patchRuleSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The RuleSpecification to be updated","required":true,"schema":{"$ref":"#/definitions/RuleSpecificationUpdate"}},{"name":"id","in":"path","description":"Identifier of the RuleSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/RuleSpecification"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Action":{"type":"object","properties":{"actionCharacteristics":{"type":"array","items":{"$ref":"#/definitions/ActionCharacteristic"}},"actionSpecificationRef":{"$ref":"#/definitions/ActionSpecificationRef"},"name":{"type":"string"},"uuid":{"type":"string"}},"title":"Action","description":"Action element"},"ActionCharacteristic":{"type":"object","properties":{"name":{"type":"string"},"uuid":{"type":"string"},"value":{"type":"string"}},"title":"ActionCharacteristic","description":"An ActionCharacteristic is an entity that describes the values of the characteristics of ana ction in a rule."},"ActionParam":{"type":"object","properties":{"paramName":{"type":"string"},"paramValue":{"type":"string"},"uuid":{"type":"string"}},"title":"ActionParam","description":"An ActionParam is an entity that describes parameteres of an action."},"ActionSpecification":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"params":{"type":"array","items":{"$ref":"#/definitions/ActionParam"}},"uuid":{"type":"string"}},"title":"ActionSpecification","description":"An ActionSpecification is an entity that describes an action to perform on certain entities."},"ActionSpecificationCreate":{"type":"object","properties":{"description":{"type":"string","description":"Description of the entity"},"name":{"type":"string","description":"The name of the entity"},"params":{"type":"array","items":{"$ref":"#/definitions/ActionParam"}}},"title":"ActionSpecificationCreate","description":"An ActionSpecification is an entity that describes an action to perform on certain entities."},"ActionSpecificationRef":{"type":"object","properties":{"actionId":{"type":"string"},"uuid":{"type":"string"}},"title":"ActionSpecificationRef","description":"Action reference"},"ActionSpecificationUpdate":{"type":"object","properties":{"description":{"type":"string","description":"Description of the entity"},"name":{"type":"string","description":"The name of the entity"},"params":{"type":"array","items":{"$ref":"#/definitions/ActionParam"}}},"title":"ActionSpecificationUpdate","description":"An ActionSpecification is an entity that describes an action to perform on certain entities."},"Condition":{"type":"object","properties":{"booleanOperator":{"type":"string"},"eventAttributeName":{"type":"string"},"eventAttributeValue":{"type":"string"},"operator":{"type":"string"},"uuid":{"type":"string"}},"title":"Condition","description":"A Condition is an entity that describes the condition that must be tru in order to apply an action."},"Error":{"type":"object","required":["code","reason"],"properties":{"code":{"type":"string","description":"Application relevant detail, defined in the API or a common list."},"message":{"type":"string","description":"More details and corrective actions related to the error which can be shown to a client user."},"reason":{"type":"string","description":"Explanation of the reason for the error which can be shown to a client user."},"status":{"type":"string","description":"HTTP Error code extension"}},"title":"Error","description":"Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)"},"RuleSpecification":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/definitions/Action"}},"condition":{"type":"array","items":{"$ref":"#/definitions/Condition"}},"description":{"type":"string","description":"Description of this entity"},"eventType":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"scope":{"$ref":"#/definitions/Scope"},"uuid":{"type":"string"}},"title":"RuleSpecification","description":"A RuleSpecification is an entity that describes a rule to apply an action on certain conditions in the context of a service."},"RuleSpecificationCreate":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/definitions/Action"}},"condition":{"type":"array","items":{"$ref":"#/definitions/Condition"}},"description":{"type":"string"},"eventType":{"type":"string"},"name":{"type":"string"},"scope":{"$ref":"#/definitions/Scope"}},"title":"RuleSpecificationCreate","description":"A RuleSpecification is an entity that describes a rule to apply an action on certain conditions in the context of a service."},"RuleSpecificationUpdate":{"type":"object","properties":{"actions":{"type":"array","items":{"$ref":"#/definitions/Action"}},"condition":{"type":"array","items":{"$ref":"#/definitions/Condition"}},"description":{"type":"string"},"eventType":{"type":"string"},"name":{"type":"string"},"scope":{"$ref":"#/definitions/Scope"}},"title":"RuleSpecificationUpdate","description":"A RuleSpecification is an entity that describes a rule to apply an action on certain conditions in the context of a service."},"Scope":{"type":"object","properties":{"entityUUID":{"type":"string"}},"title":"Scope","description":"The scope that the Rule is related."}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/lcm-rule-specification-api-controller.json b/src/assets/swagger_collections/lcm-rule-specification-api-controller.json new file mode 100644 index 0000000000000000000000000000000000000000..9eb02edc830d433f24ae53a36508ee31e871144e --- /dev/null +++ b/src/assets/swagger_collections/lcm-rule-specification-api-controller.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"This is Swagger UI environment for LCM Rules","version":"1.0","title":"LCM Rules","contact":{"name":"openslice.io"},"license":{"name":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}},"host":"portal.openslice.io","tags":[{"name":"lcm-rule-specification-api-controller","description":"LCM Rule Specification Api Controller"}],"paths":{"/tmf-api/lcmrulesmanagement/v1/lcmRuleSpecification":{"get":{"tags":["lcmRuleSpecification"],"summary":"List or find LCM RuleSpecification objects","description":"This operation list or find LCM RuleSpecification entities","operationId":"listLCMRuleSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to be provided in response","required":false,"type":"string"},{"name":"limit","in":"query","description":"Requested number of resources to be provided in response","required":false,"type":"integer","format":"int32"},{"name":"offset","in":"query","description":"Requested index for start of resources to be provided in response","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"Success","schema":{"type":"array","items":{"$ref":"#/definitions/LCMRuleSpecification"}}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"post":{"tags":["lcmRuleSpecification"],"summary":"Creates a LCM RuleSpecification","description":"This operation creates a LCM RuleSpecification entity.","operationId":"createLCMRuleSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The RuleSpecification to be created","required":true,"schema":{"$ref":"#/definitions/LCMRuleSpecificationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/LCMRuleSpecification"}},"201":{"description":"Created","schema":{"$ref":"#/definitions/LCMRuleSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found"},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}},"/tmf-api/lcmrulesmanagement/v1/lcmRuleSpecification/{id}":{"get":{"tags":["lcmRuleSpecification"],"summary":"Retrieves a LCM RuleSpecification by ID","description":"This operation retrieves a LCM RuleSpecification entity. Attribute selection is enabled for all first level attributes.","operationId":"retrieveLCMRuleSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fields","in":"query","description":"Comma-separated properties to provide in response","required":false,"type":"string"},{"name":"id","in":"path","description":"Identifier of the LCM RuleSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/LCMRuleSpecification"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"delete":{"tags":["lcmRuleSpecification"],"summary":"Deletes a LCM RuleSpecification","description":"This operation deletes a LCM RuleSpecification entity.","operationId":"deleteLCMRuleSpecification","produces":["application/json;charset=utf-8"],"parameters":[{"name":"id","in":"path","description":"Identifier of the RuleSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Deleted","schema":{"type":"object"}},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]},"patch":{"tags":["lcmRuleSpecification"],"summary":"Updates partially a LCM RuleSpecification","description":"This operation updates partially a LCM RuleSpecification entity.","operationId":"patchLCMRuleSpecification","consumes":["application/json;charset=utf-8"],"produces":["application/json;charset=utf-8"],"parameters":[{"in":"body","name":"body","description":"The LCM RuleSpecification to be updated","required":true,"schema":{"$ref":"#/definitions/LCMRuleSpecificationUpdate"}},{"name":"id","in":"path","description":"Identifier of the LCM RuleSpecification","required":true,"type":"string"}],"responses":{"200":{"description":"Updated","schema":{"$ref":"#/definitions/LCMRuleSpecification"}},"204":{"description":"No Content"},"400":{"description":"Bad Request","schema":{"$ref":"#/definitions/Error"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/Error"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/Error"}},"405":{"description":"Method Not allowed","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"Conflict","schema":{"$ref":"#/definitions/Error"}},"500":{"description":"Internal Server Error","schema":{"$ref":"#/definitions/Error"}}},"security":[{"spring_oauth":["read","write","admin","openapi"]}]}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/auth","tokenUrl":"http://portal.openslice.io/auth/realms/openslice/protocol/openid-connect/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"Error":{"type":"object","properties":{"cause":{"$ref":"#/definitions/Throwable"},"localizedMessage":{"type":"string"},"message":{"type":"string"},"stackTrace":{"type":"array","items":{"$ref":"#/definitions/StackTraceElement"}},"suppressed":{"type":"array","items":{"$ref":"#/definitions/Throwable"}}},"title":"Error"},"LCMRuleSpecification":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"code":{"type":"string"},"content":{"type":"string"},"description":{"type":"string","description":"Description of this catalog"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"lastUpdate":{"type":"string","description":"Date and time of the last update"},"lcmrulephase":{"type":"string"},"lifecycleStatus":{"type":"string","description":"Used to indicate the current lifecycle status"},"name":{"type":"string","description":"Name of the entity"},"serviceSpecs":{"type":"array","description":"List of service specs associated with this rule","uniqueItems":true,"items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"uuid":{"type":"string"},"validFor":{"description":"The period for which the entity is valid","$ref":"#/definitions/TimePeriod"},"version":{"type":"string","description":"Entity version"}},"title":"LCMRuleSpecification","description":"A LCM RuleSpecification is an entity that describes a LCM rule to apply during the LCM of a service."},"LCMRuleSpecificationCreate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"code":{"type":"string"},"content":{"type":"string"},"description":{"type":"string"},"lcmrulephase":{"type":"string"},"lifecycleStatus":{"type":"string"},"name":{"type":"string"},"serviceSpecs":{"type":"array","items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string"}},"title":"LCMRuleSpecificationCreate","description":"A LCM RuleSpecification is an entity that describes a LCM rule to apply during the LCM of a service."},"LCMRuleSpecificationUpdate":{"type":"object","properties":{"@baseType":{"type":"string"},"@schemaLocation":{"type":"string"},"@type":{"type":"string"},"code":{"type":"string"},"content":{"type":"string"},"description":{"type":"string"},"lcmrulephase":{"type":"string"},"lifecycleStatus":{"type":"string"},"name":{"type":"string"},"serviceSpecs":{"type":"array","items":{"$ref":"#/definitions/ServiceSpecificationRef"}},"validFor":{"$ref":"#/definitions/TimePeriod"},"version":{"type":"string"}},"title":"LCMRuleSpecificationUpdate","description":"A LCM RuleSpecification is an entity that describes a LCM rule to apply during the LCM of a service."},"ServiceSpecificationRef":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@referredType":{"type":"string","description":"The actual type of the target instance when needed for disambiguation."},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"id":{"type":"string"},"name":{"type":"string","description":"Name of the entity"},"targetServiceSchema":{"description":"A target service schema reference (TargetServiceSchemaRef). The reference object to the schema and type of target service which is described by service specification.","$ref":"#/definitions/TargetServiceSchema"},"version":{"type":"string","description":"Service specification version"}},"title":"ServiceSpecificationRef","description":"Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification."},"StackTraceElement":{"type":"object","properties":{"classLoaderName":{"type":"string"},"className":{"type":"string"},"fileName":{"type":"string"},"lineNumber":{"type":"integer","format":"int32"},"methodName":{"type":"string"},"moduleName":{"type":"string"},"moduleVersion":{"type":"string"},"nativeMethod":{"type":"boolean"}},"title":"StackTraceElement"},"TargetServiceSchema":{"type":"object","properties":{"@baseType":{"type":"string","description":"When sub-classing, this defines the super-class"},"@schemaLocation":{"type":"string","description":"A URI to a JSON-Schema file that defines additional attributes and relationships"},"@type":{"type":"string"},"href":{"type":"string","description":"Unique reference of the entity"},"uuid":{"type":"string"}},"title":"TargetServiceSchema","description":"The reference object to the schema and type of target service which is described by service specification"},"Throwable":{"type":"object","properties":{"cause":{"$ref":"#/definitions/Throwable"},"localizedMessage":{"type":"string"},"message":{"type":"string"},"stackTrace":{"type":"array","items":{"$ref":"#/definitions/StackTraceElement"}},"suppressed":{"type":"array","items":{"$ref":"#/definitions/Throwable"}}},"title":"Throwable"},"TimePeriod":{"type":"object","properties":{"endDateTime":{"type":"string","description":"End of the time period, using IETC-RFC-3339 format"},"startDateTime":{"type":"string","description":"Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"}},"title":"TimePeriod","description":"A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"}}} \ No newline at end of file diff --git a/src/assets/swagger_collections/portal-repository-api-impl.json b/src/assets/swagger_collections/portal-repository-api-impl.json new file mode 100644 index 0000000000000000000000000000000000000000..9c95725c5ec3c1a6a3c80292246fa2f5d5d7d7a0 --- /dev/null +++ b/src/assets/swagger_collections/portal-repository-api-impl.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"description":"Api Documentation","version":"1.0","title":"Api Documentation","termsOfService":"urn:tos","contact":{},"license":{"name":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0"}},"host":"portal.openslice.io","basePath":"/osapi","tags":[{"name":"artifacts-api-controller","description":"Artifacts API Controller"},{"name":"basic-error-controller","description":"Basic Error Controller"},{"name":"operation-handler","description":"Operation Handler"},{"name":"portal-repository-api-impl","description":"Portal Repository API Impl"},{"name":"portal-repository-vf-image-api","description":"Portal Repository VF Image API"},{"name":"web-mvc-links-handler","description":"Web Mvc Links Handler"}],"paths":{"/actuator":{"get":{"tags":["web-mvc-links-handler"],"summary":"links","operationId":"linksUsingGET","produces":["application/json","application/vnd.spring-boot.actuator.v2+json"],"responses":{"200":{"description":"OK","schema":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"$ref":"#/definitions/Link"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/actuator/health":{"get":{"tags":["operation-handler"],"summary":"handle","operationId":"handleUsingGET_2","produces":["application/json","application/vnd.spring-boot.actuator.v2+json"],"parameters":[{"in":"body","name":"body","description":"body","required":false,"schema":{"type":"object","additionalProperties":{"type":"string"}}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/actuator/health/{component}":{"get":{"tags":["operation-handler"],"summary":"handle","operationId":"handleUsingGET_1","produces":["application/json","application/vnd.spring-boot.actuator.v2+json"],"parameters":[{"in":"body","name":"body","description":"body","required":false,"schema":{"type":"object","additionalProperties":{"type":"string"}}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/actuator/health/{component}/{instance}":{"get":{"tags":["operation-handler"],"summary":"handle","operationId":"handleUsingGET","produces":["application/json","application/vnd.spring-boot.actuator.v2+json"],"parameters":[{"in":"body","name":"body","description":"body","required":false,"schema":{"type":"object","additionalProperties":{"type":"string"}}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/actuator/info":{"get":{"tags":["operation-handler"],"summary":"handle","operationId":"handleUsingGET_3","produces":["application/json","application/vnd.spring-boot.actuator.v2+json"],"parameters":[{"in":"body","name":"body","description":"body","required":false,"schema":{"type":"object","additionalProperties":{"type":"string"}}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/admin/categories":{"get":{"tags":["portal-repository-api-impl"],"summary":"getAdminCategories","operationId":"getAdminCategoriesUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/Category"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["portal-repository-api-impl"],"summary":"addCategory","operationId":"addCategoryUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/Category"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/categories/{catid}":{"get":{"tags":["portal-repository-api-impl"],"summary":"getAdminCategoryById","operationId":"getAdminCategoryByIdUsingGET","produces":["application/json"],"parameters":[{"name":"catid","in":"path","description":"catid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["portal-repository-api-impl"],"summary":"updateCategory","operationId":"updateCategoryUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/Category"}},{"name":"catid","in":"path","description":"catid","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["portal-repository-api-impl"],"summary":"deleteCategory","operationId":"deleteCategoryUsingDELETE","produces":["application/json"],"parameters":[{"name":"catid","in":"path","description":"catid","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/deployments":{"get":{"tags":["artifacts-api-controller"],"summary":"getAllDeployments","operationId":"getAllDeploymentsUsingGET","produces":["application/json"],"parameters":[{"name":"status","in":"query","description":"status","required":false,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["artifacts-api-controller"],"summary":"addDeployment","operationId":"addDeploymentUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"deployment","description":"deployment","required":true,"schema":{"$ref":"#/definitions/DeploymentDescriptor"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/deployments/scheduled":{"get":{"tags":["artifacts-api-controller"],"summary":"getAllScheduledDeploymentsofUser","operationId":"getAllScheduledDeploymentsofUserUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/deployments/user":{"get":{"tags":["artifacts-api-controller"],"summary":"getAllDeploymentsofUser","operationId":"getAllDeploymentsofUserUsingGET","produces":["application/json"],"parameters":[{"name":"status","in":"query","description":"status","required":false,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/deployments/{id}":{"get":{"tags":["artifacts-api-controller"],"summary":"getDeploymentById","operationId":"getDeploymentByIdUsingGET","produces":["application/json"],"parameters":[{"name":"id","in":"path","description":"id","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["artifacts-api-controller"],"summary":"updateDeployment","operationId":"updateDeploymentUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"name":"id","in":"path","description":"id","required":true,"type":"integer","format":"int32"},{"in":"body","name":"receivedDeployment","description":"receivedDeployment","required":true,"schema":{"$ref":"#/definitions/DeploymentDescriptor"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["artifacts-api-controller"],"summary":"deleteDeployment","operationId":"deleteDeploymentUsingDELETE","produces":["application/json"],"parameters":[{"name":"id","in":"path","description":"id","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experimentobds":{"get":{"tags":["artifacts-api-controller"],"summary":"getExperimentOnBoardDescriptors","operationId":"getExperimentOnBoardDescriptorsUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experimentobds/":{"post":{"tags":["artifacts-api-controller"],"summary":"addExperimentOnBoardDescriptor","operationId":"addExperimentOnBoardDescriptorUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"exp","description":"exp","required":true,"schema":{"$ref":"#/definitions/ExperimentMetadata"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experimentobds/{mpid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getExperimentOnBoardDescriptorById","operationId":"getExperimentOnBoardDescriptorByIdUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["artifacts-api-controller"],"summary":"updateExperimentOnBoardDescriptor","operationId":"updateExperimentOnBoardDescriptorUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/ExperimentOnBoardDescriptor"}},{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["artifacts-api-controller"],"summary":"deleteExperimentOnBoardDescriptor","operationId":"deleteExperimentOnBoardDescriptorUsingDELETE","produces":["*/*"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experimentobds/{mpid}/offboard":{"put":{"tags":["artifacts-api-controller"],"summary":"offBoardExperimentDescriptor","operationId":"offBoardExperimentDescriptorUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/ExperimentOnBoardDescriptor"}},{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experimentobds/{mpid}/onboard":{"put":{"tags":["artifacts-api-controller"],"summary":"onExperimentBoardDescriptor","operationId":"onExperimentBoardDescriptorUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"experimentonboarddescriptor","description":"experimentonboarddescriptor","required":true,"schema":{"$ref":"#/definitions/ExperimentOnBoardDescriptor"}},{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experimentobds/{mpid}/status":{"get":{"tags":["artifacts-api-controller"],"summary":"getExperimentOnBoardDescriptorByIdCheckMANOProvider","operationId":"getExperimentOnBoardDescriptorByIdCheckMANOProviderUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experiments":{"get":{"tags":["artifacts-api-controller"],"summary":"getApps","operationId":"getAppsUsingGET","produces":["application/json"],"parameters":[{"name":"categoryid","in":"query","description":"categoryid","required":false,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["artifacts-api-controller"],"summary":"addExperimentMetadata","operationId":"addExperimentMetadataUsingPOST","consumes":["multipart/form-data"],"produces":["application/json"],"parameters":[{"in":"body","name":"exprm","description":"exprm","required":false,"schema":{"type":"string"}},{"name":"prodFile","in":"formData","description":"prodFile","required":false,"type":"file"},{"name":"prodIcon","in":"formData","description":"prodIcon","required":false,"type":"file"},{"name":"screenshots","in":"formData","description":"screenshots","required":false,"type":"array","items":{"type":"file"},"collectionFormat":"multi"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experiments/deployable":{"get":{"tags":["artifacts-api-controller"],"summary":"getAllDeployableExperiments","operationId":"getAllDeployableExperimentsUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experiments/{aid}":{"put":{"tags":["artifacts-api-controller"],"summary":"updateExperimentMetadata","operationId":"updateExperimentMetadataUsingPUT","consumes":["multipart/form-data"],"produces":["application/json"],"parameters":[{"name":"aid","in":"path","description":"aid","required":true,"type":"integer","format":"int32"},{"in":"body","name":"exprm","description":"exprm","required":false,"schema":{"type":"string"}},{"name":"prodFile","in":"formData","description":"prodFile","required":false,"type":"file"},{"name":"prodIcon","in":"formData","description":"prodIcon","required":false,"type":"file"},{"name":"screenshots","in":"formData","description":"screenshots","required":false,"type":"array","items":{"type":"file"},"collectionFormat":"multi"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/experiments/{appid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getAdminExperimentMetadataByID","operationId":"getAdminExperimentMetadataByIDUsingGET","produces":["application/json"],"parameters":[{"name":"appid","in":"path","description":"appid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["artifacts-api-controller"],"summary":"deleteExperiment","operationId":"deleteExperimentUsingDELETE","produces":["application/json"],"parameters":[{"name":"appid","in":"path","description":"appid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/infrastructures":{"get":{"tags":["artifacts-api-controller"],"summary":"getAdminInfrastructures","operationId":"getAdminInfrastructuresUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["artifacts-api-controller"],"summary":"addInfrastructure","operationId":"addInfrastructureUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/Infrastructure"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/infrastructures/{infraid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getInfrastructureById","operationId":"getInfrastructureByIdUsingGET","produces":["application/json"],"parameters":[{"name":"infraid","in":"path","description":"infraid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["artifacts-api-controller"],"summary":"updateInfrastructure","operationId":"updateInfrastructureUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/Infrastructure"}},{"name":"infraid","in":"path","description":"infraid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["artifacts-api-controller"],"summary":"deleteInfrastructure","operationId":"deleteInfrastructureUsingDELETE","produces":["application/json"],"parameters":[{"name":"infraid","in":"path","description":"infraid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/infrastructures/{infraid}/images/{vfimageid}":{"post":{"tags":["artifacts-api-controller"],"summary":"addImageToInfrastructure","operationId":"addImageToInfrastructureUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"name":"infraid","in":"path","description":"infraid","required":true,"type":"integer","format":"int32"},{"name":"vfimageid","in":"path","description":"vfimageid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/manoplatforms":{"get":{"tags":["artifacts-api-controller"],"summary":"getAdminMANOplatforms","operationId":"getAdminMANOplatformsUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["artifacts-api-controller"],"summary":"addMANOplatform","operationId":"addMANOplatformUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/MANOplatform"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/manoplatforms/{mpid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getAdminMANOplatformById","operationId":"getAdminMANOplatformByIdUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["artifacts-api-controller"],"summary":"updateMANOplatform","operationId":"updateMANOplatformUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/MANOplatform"}},{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["artifacts-api-controller"],"summary":"deleteMANOplatform","operationId":"deleteMANOplatformUsingDELETE","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/manoprovider/{mpid}/nsds":{"get":{"tags":["artifacts-api-controller"],"summary":"getOSM_NSD_Metadata","operationId":"getOSM_NSD_MetadataUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/manoprovider/{mpid}/nsds/{nsdid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getOSM_NSD_MetadataByKOSMMANOID","operationId":"getOSM_NSD_MetadataByKOSMMANOIDUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"},{"name":"vxfid","in":"path","description":"vxfid","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/manoprovider/{mpid}/vnfds":{"get":{"tags":["artifacts-api-controller"],"summary":"getOSMVNFMetadata","operationId":"getOSMVNFMetadataUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/manoproviders":{"get":{"tags":["artifacts-api-controller"],"summary":"getAdminMANOproviders","operationId":"getAdminMANOprovidersUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["artifacts-api-controller"],"summary":"addMANOprovider","operationId":"addMANOproviderUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/MANOprovider"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/manoproviders/{mpid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getAdminMANOproviderById","operationId":"getAdminMANOproviderByIdUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["artifacts-api-controller"],"summary":"updateMANOprovider","operationId":"updateMANOproviderUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/MANOprovider"}},{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["artifacts-api-controller"],"summary":"deleteMANOprovider","operationId":"deleteMANOproviderUsingDELETE","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/properties":{"get":{"tags":["artifacts-api-controller"],"summary":"getProperties","operationId":"getPropertiesUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/properties/{propid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getPropertyById","operationId":"getPropertyByIdUsingGET","produces":["application/json"],"parameters":[{"name":"propid","in":"path","description":"propid","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["artifacts-api-controller"],"summary":"updateProperty","operationId":"updatePropertyUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"p","description":"p","required":true,"schema":{"$ref":"#/definitions/PortalProperty"}},{"name":"propid","in":"path","description":"propid","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/users":{"get":{"tags":["portal-repository-api-impl"],"summary":"getUsers","operationId":"getUsersUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/PortalUser"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["portal-repository-api-impl"],"summary":"addUser","operationId":"addUserUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"user","description":"user","required":true,"schema":{"$ref":"#/definitions/PortalUser"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/users/mentors":{"get":{"tags":["portal-repository-api-impl"],"summary":"getMentors","operationId":"getMentorsUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/PortalUser"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/users/myuser":{"get":{"tags":["portal-repository-api-impl"],"summary":"getUser","operationId":"getUserUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/PortalUser"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/users/{userid}":{"get":{"tags":["portal-repository-api-impl"],"summary":"getUserById","operationId":"getUserByIdUsingGET","produces":["application/json"],"parameters":[{"name":"userid","in":"path","description":"userid","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["portal-repository-api-impl"],"summary":"updateUserInfo","operationId":"updateUserInfoUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"user","description":"user","required":true,"schema":{"$ref":"#/definitions/PortalUser"}},{"name":"userid","in":"path","description":"userid","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["portal-repository-api-impl"],"summary":"deleteUser","operationId":"deleteUserUsingDELETE","produces":["*/*"],"parameters":[{"name":"userid","in":"path","description":"userid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/users/{userid}/experiments":{"get":{"tags":["portal-repository-api-impl"],"summary":"getAllAppsofUser","operationId":"getAllAppsofUserUsingGET","produces":["application/json"],"parameters":[{"name":"userid","in":"path","description":"userid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/users/{userid}/experiments/{appid}":{"get":{"tags":["portal-repository-api-impl"],"summary":"getAppofUser","operationId":"getAppofUserUsingGET","produces":["application/json"],"parameters":[{"name":"appid","in":"path","description":"appid","required":true,"type":"integer","format":"int32"},{"name":"userid","in":"path","description":"userid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/users/{userid}/vxfs":{"get":{"tags":["portal-repository-api-impl"],"summary":"getAllVxFsofUser","operationId":"getAllVxFsofUserUsingGET","produces":["application/json"],"parameters":[{"name":"userid","in":"path","description":"userid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/users/{userid}/vxfs/{vxfid}":{"get":{"tags":["portal-repository-api-impl"],"summary":"getVxFofUser","operationId":"getVxFofUserUsingGET","produces":["application/json"],"parameters":[{"name":"userid","in":"path","description":"userid","required":true,"type":"integer","format":"int32"},{"name":"vxfid","in":"path","description":"vxfid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/validationjobs/{vxf_id}":{"put":{"tags":["artifacts-api-controller"],"summary":"updateUvalidationjob","operationId":"updateUvalidationjobUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"vresult","description":"vresult","required":true,"schema":{"$ref":"#/definitions/ValidationJobResult"}},{"name":"vxf_id","in":"path","description":"vxf_id","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vfimages":{"get":{"tags":["portal-repository-vf-image-api"],"summary":"getAdminVFImages","operationId":"getAdminVFImagesUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["portal-repository-vf-image-api"],"summary":"addVFImage","operationId":"addVFImageUsingPOST","consumes":["multipart/form-data"],"produces":["*/*"],"parameters":[{"name":"prodFile","in":"formData","description":"prodFile","required":false,"type":"file"},{"in":"body","name":"vfimage","description":"vfimage","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["portal-repository-vf-image-api"],"summary":"updateVFImage","operationId":"updateVFImageUsingPUT","consumes":["multipart/form-data"],"produces":["application/json"],"parameters":[{"name":"prodFile","in":"formData","description":"prodFile","required":false,"type":"file"},{"in":"body","name":"vfimage","description":"vfimage","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vfimages/name/{imagename}":{"get":{"tags":["portal-repository-vf-image-api"],"summary":"getVFImageByName","operationId":"getVFImageByNameUsingGET","produces":["application/json"],"parameters":[{"name":"imagename","in":"path","description":"imagename","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vfimages/{id}":{"get":{"tags":["portal-repository-vf-image-api"],"summary":"getVFImageById","operationId":"getVFImageByIdUsingGET","produces":["application/json"],"parameters":[{"name":"id","in":"path","description":"id","required":true,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["portal-repository-vf-image-api"],"summary":"deleteVFImage","operationId":"deleteVFImageUsingDELETE","produces":["*/*"],"parameters":[{"name":"id","in":"path","description":"id","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfobds":{"get":{"tags":["artifacts-api-controller"],"summary":"getVxFOnBoardedDescriptors","operationId":"getVxFOnBoardedDescriptorsUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfobds/":{"post":{"tags":["artifacts-api-controller"],"summary":"addVxFOnBoardedDescriptor","operationId":"addVxFOnBoardedDescriptorUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"aVxF","description":"aVxF","required":true,"schema":{"$ref":"#/definitions/VxFMetadata"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfobds/{mpid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getVxFOnBoardedDescriptorById","operationId":"getVxFOnBoardedDescriptorByIdUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"put":{"tags":["artifacts-api-controller"],"summary":"updateVxFOnBoardedDescriptor","operationId":"updateVxFOnBoardedDescriptorUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"c","description":"c","required":true,"schema":{"$ref":"#/definitions/VxFOnBoardedDescriptor"}},{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["artifacts-api-controller"],"summary":"deleteVxFOnBoardedDescriptor","operationId":"deleteVxFOnBoardedDescriptorUsingDELETE","produces":["*/*"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfobds/{mpid}/offboard":{"put":{"tags":["artifacts-api-controller"],"summary":"offBoardDescriptor","operationId":"offBoardDescriptorUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"clobd","description":"clobd","required":true,"schema":{"$ref":"#/definitions/VxFOnBoardedDescriptor"}},{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfobds/{mpid}/onboard":{"put":{"tags":["artifacts-api-controller"],"summary":"onBoardDescriptor","operationId":"onBoardDescriptorUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"},{"in":"body","name":"vxfobd","description":"vxfobd","required":true,"schema":{"$ref":"#/definitions/VxFOnBoardedDescriptor"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfobds/{mpid}/status":{"get":{"tags":["artifacts-api-controller"],"summary":"getVxFOnBoardedDescriptorByIdCheckMANOProvider","operationId":"getVxFOnBoardedDescriptorByIdCheckMANOProviderUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfs":{"get":{"tags":["artifacts-api-controller"],"summary":"getVxFs","operationId":"getVxFsUsingGET","produces":["application/json"],"parameters":[{"name":"categoryid","in":"query","description":"categoryid","required":false,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"post":{"tags":["artifacts-api-controller"],"summary":"addVxFMetadata","operationId":"addVxFMetadataUsingPOST","consumes":["multipart/form-data"],"produces":["*/*"],"parameters":[{"name":"prodFile","in":"formData","description":"prodFile","required":true,"type":"file"},{"name":"prodIcon","in":"formData","description":"prodIcon","required":false,"type":"file"},{"name":"screenshots","in":"formData","description":"screenshots","required":false,"type":"array","items":{"type":"file"},"collectionFormat":"multi"},{"in":"body","name":"vxf","description":"vxf","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfs/{bid}":{"put":{"tags":["artifacts-api-controller"],"summary":"updateVxFMetadata","operationId":"updateVxFMetadataUsingPUT","consumes":["multipart/form-data"],"produces":["application/json"],"parameters":[{"name":"bid","in":"path","description":"bid","required":true,"type":"integer","format":"int32"},{"name":"prodFile","in":"formData","description":"prodFile","required":false,"type":"file"},{"name":"prodIcon","in":"formData","description":"prodIcon","required":false,"type":"file"},{"name":"screenshots","in":"formData","description":"screenshots","required":false,"type":"array","items":{"type":"file"},"collectionFormat":"multi"},{"in":"body","name":"vxf","description":"vxf","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/admin/vxfs/{vxfid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getAdminVxFMetadataByID","operationId":"getAdminVxFMetadataByIDUsingGET","produces":["application/json"],"parameters":[{"name":"vxfid","in":"path","description":"vxfid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false},"delete":{"tags":["artifacts-api-controller"],"summary":"deleteVxF","operationId":"deleteVxFUsingDELETE","produces":["application/json"],"parameters":[{"name":"vxfid","in":"path","description":"vxfid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"spring_oauth":["read","write","admin","openapi"]}],"deprecated":false}},"/categories":{"get":{"tags":["portal-repository-api-impl"],"summary":"getCategories","operationId":"getCategoriesUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/Category"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/categories/{catid}":{"get":{"tags":["portal-repository-api-impl"],"summary":"getCategoryById","operationId":"getCategoryByIdUsingGET","produces":["application/json"],"parameters":[{"name":"catid","in":"path","description":"catid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/error":{"get":{"tags":["basic-error-controller"],"summary":"errorHtml","operationId":"errorHtmlUsingGET","produces":["text/html"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ModelAndView"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"head":{"tags":["basic-error-controller"],"summary":"errorHtml","operationId":"errorHtmlUsingHEAD","consumes":["application/json"],"produces":["text/html"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ModelAndView"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false},"post":{"tags":["basic-error-controller"],"summary":"errorHtml","operationId":"errorHtmlUsingPOST","consumes":["application/json"],"produces":["text/html"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ModelAndView"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"put":{"tags":["basic-error-controller"],"summary":"errorHtml","operationId":"errorHtmlUsingPUT","consumes":["application/json"],"produces":["text/html"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ModelAndView"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["basic-error-controller"],"summary":"errorHtml","operationId":"errorHtmlUsingDELETE","produces":["text/html"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ModelAndView"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false},"options":{"tags":["basic-error-controller"],"summary":"errorHtml","operationId":"errorHtmlUsingOPTIONS","consumes":["application/json"],"produces":["text/html"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ModelAndView"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false},"patch":{"tags":["basic-error-controller"],"summary":"errorHtml","operationId":"errorHtmlUsingPATCH","consumes":["application/json"],"produces":["text/html"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ModelAndView"}},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/experiments":{"get":{"tags":["artifacts-api-controller"],"summary":"getAllApps","operationId":"getAllAppsUsingGET","produces":["application/json"],"parameters":[{"name":"categoryid","in":"query","description":"categoryid","required":false,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/experiments/uuid/{uuid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getAppMetadataByUUID","operationId":"getAppMetadataByUUIDUsingGET","produces":["application/json"],"parameters":[{"name":"uuid","in":"path","description":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/experiments/{appid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getExperimentMetadataByID","operationId":"getExperimentMetadataByIDUsingGET","produces":["application/json"],"parameters":[{"name":"appid","in":"path","description":"appid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/images/{uuid}/{imgfile}":{"get":{"tags":["artifacts-api-controller"],"summary":"getEntityImage","operationId":"getEntityImageUsingGET","produces":["image/png","image/jpeg"],"parameters":[{"name":"imgfile","in":"path","description":"imgfile","required":true,"type":"string"},{"name":"uuid","in":"path","description":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string","format":"byte"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/manoplatforms":{"get":{"tags":["artifacts-api-controller"],"summary":"getMANOplatforms","operationId":"getMANOplatformsUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/manoplatforms/{mpid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getMANOplatformById","operationId":"getMANOplatformByIdUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/manoprovider/{mpid}/vnfds/{vxfid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getOSMVNFMetadataByKOSMMANOID","operationId":"getOSMVNFMetadataByKOSMMANOIDUsingGET","produces":["application/json"],"parameters":[{"name":"mpid","in":"path","description":"mpid","required":true,"type":"integer","format":"int32"},{"name":"vxfid","in":"path","description":"vxfid","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/packages/{uuid}/{vxffile}":{"get":{"tags":["artifacts-api-controller"],"summary":"downloadVxFPackage","operationId":"downloadVxFPackageUsingGET","produces":["*/*"],"parameters":[{"name":"uuid","in":"path","description":"uuid","required":true,"type":"string"},{"name":"vxffile","in":"path","description":"vxffile","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ByteArrayResource"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/register":{"post":{"tags":["portal-repository-api-impl"],"summary":"addNewRegisterUser","operationId":"addNewRegisterUserUsingPOST","consumes":["multipart/form-data"],"produces":["application/json"],"parameters":[{"in":"body","name":"emailmessage","description":"emailmessage","required":false,"schema":{"type":"string"}},{"in":"body","name":"portaluser","description":"portaluser","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/register/verify":{"post":{"tags":["portal-repository-api-impl"],"summary":"addNewRegisterUserVerify","operationId":"addNewRegisterUserVerifyUsingPOST","consumes":["multipart/form-data"],"produces":["application/json"],"parameters":[{"in":"body","name":"rid","description":"rid","required":false,"schema":{"type":"string"}},{"in":"body","name":"username","description":"username","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/sessions":{"post":{"tags":["portal-repository-api-impl"],"summary":"addUserSession","operationId":"addUserSessionUsingPOST","consumes":["application/json"],"produces":["application/json"],"parameters":[{"in":"body","name":"userSession","description":"userSession","required":true,"schema":{"$ref":"#/definitions/UserSession"}}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/sessions/logout":{"get":{"tags":["portal-repository-api-impl"],"summary":"logoutUser","operationId":"logoutUserUsingGET","produces":["application/json"],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/vfimages/image/{uuid}/{vfimagefile}":{"get":{"tags":["portal-repository-vf-image-api"],"summary":"downloadVxFPackage","operationId":"downloadVxFPackageUsingGET_1","produces":["application/gzip"],"parameters":[{"name":"uuid","in":"path","description":"uuid","required":true,"type":"string"},{"name":"vfimagefile","in":"path","description":"vfimagefile","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string","format":"byte"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/vxfs":{"get":{"tags":["artifacts-api-controller"],"summary":"getAllVxFs","operationId":"getAllVxFsUsingGET","produces":["application/json"],"parameters":[{"name":"categoryid","in":"query","description":"categoryid","required":false,"type":"integer","format":"int64"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/vxfs/uuid/{uuid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getVxFMetadataByUUID","operationId":"getVxFMetadataByUUIDUsingGET","produces":["application/json"],"parameters":[{"name":"uuid","in":"path","description":"uuid","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/vxfs/{vxfid}":{"get":{"tags":["artifacts-api-controller"],"summary":"getVxFMetadataByID","operationId":"getVxFMetadataByIDUsingGET","produces":["application/json"],"parameters":[{"name":"vxfid","in":"path","description":"vxfid","required":true,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK","schema":{"type":"object"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}}},"securityDefinitions":{"spring_oauth":{"type":"oauth2","authorizationUrl":"http://portal.openslice.io/osapi-oauth-server/oauth/authorize","tokenUrl":"http://portal.openslice.io/osapi-oauth-server/oauth/token","flow":"accessCode","scopes":{"read":"for read operations","write":"for write operations","admin":"Access admin API","openapi":"Access openapi API"}}},"definitions":{"ByteArrayResource":{"type":"object","properties":{"byteArray":{"type":"string","format":"byte"},"description":{"type":"string"},"file":{"$ref":"#/definitions/File"},"filename":{"type":"string"},"inputStream":{"$ref":"#/definitions/InputStream"},"open":{"type":"boolean"},"readable":{"type":"boolean"},"uri":{"$ref":"#/definitions/URI"},"url":{"$ref":"#/definitions/URL"}},"title":"ByteArrayResource"},"Category":{"type":"object","properties":{"appscount":{"type":"integer","format":"int32"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"products":{"type":"array","items":{"$ref":"#/definitions/Product"}},"productsCount":{"type":"integer","format":"int32"},"vxFscount":{"type":"integer","format":"int32"}},"title":"Category"},"ConstituentVxF":{"type":"object","properties":{"membervnfIndex":{"type":"integer","format":"int32"},"vnfdidRef":{"type":"string"},"vxfref":{"$ref":"#/definitions/VxFMetadata"}},"title":"ConstituentVxF"},"DeploymentDescriptor":{"type":"object","properties":{"configStatus":{"type":"string"},"constituentVnfrIps":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"description":{"type":"string"},"detailedStatus":{"type":"string"},"endDate":{"type":"string","format":"date-time"},"endReqDate":{"type":"string","format":"date-time"},"experiment":{"$ref":"#/definitions/ExperimentMetadata"},"experimentFullDetails":{"$ref":"#/definitions/ExperimentMetadata"},"feedback":{"type":"string"},"id":{"type":"integer","format":"int64"},"infrastructureForAll":{"$ref":"#/definitions/Infrastructure"},"instanceId":{"type":"string"},"mentor":{"$ref":"#/definitions/PortalUser"},"name":{"type":"string"},"operationalStatus":{"type":"string"},"owner":{"$ref":"#/definitions/PortalUser"},"scheduledEndDate":{"type":"string"},"scheduledStartDate":{"type":"string"},"startDate":{"type":"string","format":"date-time"},"startReqDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["UNDER_REVIEW","SCHEDULED","REJECTED","RUNNING","TERMINATED","INSTANTIATING","FAILED","TERMINATING","TERMINATION_FAILED","COMPLETED","FAILED_OSM_REMOVED","DELETION_FAILED"]},"uuid":{"type":"string"},"vxfPlacements":{"type":"array","items":{"$ref":"#/definitions/DeploymentDescriptorVxFPlacement"}}},"title":"DeploymentDescriptor"},"DeploymentDescriptorVxFPlacement":{"type":"object","properties":{"constituentVxF":{"$ref":"#/definitions/ConstituentVxF"},"infrastructure":{"$ref":"#/definitions/Infrastructure"}},"title":"DeploymentDescriptorVxFPlacement"},"ExperimentMetadata":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/definitions/Category"}},"constituentVxF":{"type":"array","items":{"$ref":"#/definitions/ConstituentVxF"}},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"descriptor":{"type":"string"},"descriptorHTML":{"type":"string"},"experimentOnBoardDescriptors":{"type":"array","items":{"$ref":"#/definitions/ExperimentOnBoardDescriptor"}},"extensions":{"type":"array","items":{"$ref":"#/definitions/ProductExtensionItem"}},"iconsrc":{"type":"string"},"id":{"type":"integer","format":"int64"},"longDescription":{"type":"string"},"name":{"type":"string"},"owner":{"$ref":"#/definitions/PortalUser"},"packageLocation":{"type":"string"},"packagingFormat":{"type":"string","enum":["OSMvFIVE","OSMvFSIX"]},"published":{"type":"boolean"},"screenshots":{"type":"string"},"shortDescription":{"type":"string"},"termsOfUse":{"type":"string"},"uuid":{"type":"string"},"valid":{"type":"boolean"},"validationJobs":{"type":"array","items":{"$ref":"#/definitions/ValidationJob"}},"validationStatus":{"type":"string","enum":["NOT_STARTED","UNDER_REVIEW","COMPLETED"]},"vendor":{"type":"string"},"version":{"type":"string"}},"title":"ExperimentMetadata"},"ExperimentOnBoardDescriptor":{"type":"object","properties":{"deployId":{"type":"string"},"experiment":{"$ref":"#/definitions/ExperimentMetadata"},"experimentMANOProviderID":{"type":"string"},"experimentid":{"type":"integer","format":"int64"},"feedbackMessage":{"type":"string"},"id":{"type":"integer","format":"int64"},"lastOnboarding":{"type":"string","format":"date-time"},"obMANOprovider":{"$ref":"#/definitions/MANOprovider"},"onBoardingStatus":{"type":"string","enum":["UNKNOWN","FAILED","ONBOARDED","OFFBOARDED","OFFBOARDING","ONBOARDING"]},"uuid":{"type":"string"},"vxfMANOProviderID":{"type":"string"}},"title":"ExperimentOnBoardDescriptor"},"File":{"type":"object","properties":{"absolute":{"type":"boolean"},"absoluteFile":{"$ref":"#/definitions/File"},"absolutePath":{"type":"string"},"canonicalFile":{"$ref":"#/definitions/File"},"canonicalPath":{"type":"string"},"directory":{"type":"boolean"},"file":{"type":"boolean"},"freeSpace":{"type":"integer","format":"int64"},"hidden":{"type":"boolean"},"name":{"type":"string"},"parent":{"type":"string"},"parentFile":{"$ref":"#/definitions/File"},"path":{"type":"string"},"totalSpace":{"type":"integer","format":"int64"},"usableSpace":{"type":"integer","format":"int64"}},"title":"File"},"Infrastructure":{"type":"object","properties":{"datacentername":{"type":"string"},"email":{"type":"string"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"organization":{"type":"string"},"refSupportedImages":{"type":"array","items":{"$ref":"#/definitions/RefVFImage"}},"supportedImages":{"type":"array","items":{"$ref":"#/definitions/VFImage"}},"vimid":{"type":"string"}},"title":"Infrastructure"},"InputStream":{"type":"object","title":"InputStream"},"Link":{"type":"object","properties":{"href":{"type":"string"},"templated":{"type":"boolean"}},"title":"Link"},"MANOplatform":{"type":"object","properties":{"description":{"type":"string"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"version":{"type":"string"}},"title":"MANOplatform"},"MANOprovider":{"type":"object","properties":{"apiEndpoint":{"type":"string"},"authorizationBasicHeader":{"type":"string"},"description":{"type":"string"},"enabledForONBOARDING":{"type":"boolean"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"password":{"type":"string"},"supportedMANOplatform":{"$ref":"#/definitions/MANOplatform"},"username":{"type":"string"}},"title":"MANOprovider"},"Map«string,Link»":{"type":"object","title":"Map«string,Link»","additionalProperties":{"$ref":"#/definitions/Link"}},"ModelAndView":{"type":"object","properties":{"empty":{"type":"boolean"},"model":{"type":"object"},"modelMap":{"type":"object","additionalProperties":{"type":"object"}},"reference":{"type":"boolean"},"status":{"type":"string","enum":["100 CONTINUE","101 SWITCHING_PROTOCOLS","102 PROCESSING","103 CHECKPOINT","200 OK","201 CREATED","202 ACCEPTED","203 NON_AUTHORITATIVE_INFORMATION","204 NO_CONTENT","205 RESET_CONTENT","206 PARTIAL_CONTENT","207 MULTI_STATUS","208 ALREADY_REPORTED","226 IM_USED","300 MULTIPLE_CHOICES","301 MOVED_PERMANENTLY","302 FOUND","302 MOVED_TEMPORARILY","303 SEE_OTHER","304 NOT_MODIFIED","305 USE_PROXY","307 TEMPORARY_REDIRECT","308 PERMANENT_REDIRECT","400 BAD_REQUEST","401 UNAUTHORIZED","402 PAYMENT_REQUIRED","403 FORBIDDEN","404 NOT_FOUND","405 METHOD_NOT_ALLOWED","406 NOT_ACCEPTABLE","407 PROXY_AUTHENTICATION_REQUIRED","408 REQUEST_TIMEOUT","409 CONFLICT","410 GONE","411 LENGTH_REQUIRED","412 PRECONDITION_FAILED","413 PAYLOAD_TOO_LARGE","413 REQUEST_ENTITY_TOO_LARGE","414 URI_TOO_LONG","414 REQUEST_URI_TOO_LONG","415 UNSUPPORTED_MEDIA_TYPE","416 REQUESTED_RANGE_NOT_SATISFIABLE","417 EXPECTATION_FAILED","418 I_AM_A_TEAPOT","419 INSUFFICIENT_SPACE_ON_RESOURCE","420 METHOD_FAILURE","421 DESTINATION_LOCKED","422 UNPROCESSABLE_ENTITY","423 LOCKED","424 FAILED_DEPENDENCY","426 UPGRADE_REQUIRED","428 PRECONDITION_REQUIRED","429 TOO_MANY_REQUESTS","431 REQUEST_HEADER_FIELDS_TOO_LARGE","451 UNAVAILABLE_FOR_LEGAL_REASONS","500 INTERNAL_SERVER_ERROR","501 NOT_IMPLEMENTED","502 BAD_GATEWAY","503 SERVICE_UNAVAILABLE","504 GATEWAY_TIMEOUT","505 HTTP_VERSION_NOT_SUPPORTED","506 VARIANT_ALSO_NEGOTIATES","507 INSUFFICIENT_STORAGE","508 LOOP_DETECTED","509 BANDWIDTH_LIMIT_EXCEEDED","510 NOT_EXTENDED","511 NETWORK_AUTHENTICATION_REQUIRED"]},"view":{"$ref":"#/definitions/View"},"viewName":{"type":"string"}},"title":"ModelAndView"},"PortalProperty":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"value":{"type":"string"}},"title":"PortalProperty"},"PortalUser":{"type":"object","properties":{"active":{"type":"boolean"},"apikey":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"currentSessionID":{"type":"string"},"deployments":{"type":"array","items":{"$ref":"#/definitions/DeploymentDescriptor"}},"email":{"type":"string"},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"organization":{"type":"string"},"password":{"type":"string"},"passwordUnencrypted":{"type":"string"},"products":{"type":"array","items":{"$ref":"#/definitions/Product"}},"roles":{"type":"array","items":{"type":"string","enum":["ROLE_ADMIN","ROLE_EXPERIMENTER","ROLE_NFV_DEVELOPER","ROLE_TESTBED_PROVIDER","ROLE_MENTOR"]}},"subscribedResources":{"type":"array","items":{"$ref":"#/definitions/SubscribedResource"}},"username":{"type":"string"},"vfimages":{"type":"array","items":{"$ref":"#/definitions/VFImage"}}},"title":"PortalUser"},"Product":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/definitions/Category"}},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"descriptor":{"type":"string"},"descriptorHTML":{"type":"string"},"extensions":{"type":"array","items":{"$ref":"#/definitions/ProductExtensionItem"}},"iconsrc":{"type":"string"},"id":{"type":"integer","format":"int64"},"longDescription":{"type":"string"},"name":{"type":"string"},"owner":{"$ref":"#/definitions/PortalUser"},"packageLocation":{"type":"string"},"published":{"type":"boolean"},"screenshots":{"type":"string"},"shortDescription":{"type":"string"},"termsOfUse":{"type":"string"},"uuid":{"type":"string"},"validationJobs":{"type":"array","items":{"$ref":"#/definitions/ValidationJob"}},"vendor":{"type":"string"},"version":{"type":"string"}},"title":"Product"},"ProductExtensionItem":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"value":{"type":"string"}},"title":"ProductExtensionItem"},"RefVFImage":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"title":"RefVFImage"},"RefVxF":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}},"title":"RefVxF"},"SubscribedResource":{"type":"object","properties":{"active":{"type":"boolean"},"id":{"type":"integer","format":"int32"},"lastUpdate":{"type":"string","format":"date-time"},"owner":{"$ref":"#/definitions/PortalUser"},"url":{"type":"string"},"uuid":{"type":"string"}},"title":"SubscribedResource"},"URI":{"type":"object","properties":{"absolute":{"type":"boolean"},"authority":{"type":"string"},"fragment":{"type":"string"},"host":{"type":"string"},"opaque":{"type":"boolean"},"path":{"type":"string"},"port":{"type":"integer","format":"int32"},"query":{"type":"string"},"rawAuthority":{"type":"string"},"rawFragment":{"type":"string"},"rawPath":{"type":"string"},"rawQuery":{"type":"string"},"rawSchemeSpecificPart":{"type":"string"},"rawUserInfo":{"type":"string"},"scheme":{"type":"string"},"schemeSpecificPart":{"type":"string"},"userInfo":{"type":"string"}},"title":"URI"},"URL":{"type":"object","properties":{"authority":{"type":"string"},"content":{"type":"object"},"defaultPort":{"type":"integer","format":"int32"},"file":{"type":"string"},"host":{"type":"string"},"path":{"type":"string"},"port":{"type":"integer","format":"int32"},"protocol":{"type":"string"},"query":{"type":"string"},"ref":{"type":"string"},"userInfo":{"type":"string"}},"title":"URL"},"UserSession":{"type":"object","properties":{"password":{"type":"string"},"portalUser":{"$ref":"#/definitions/PortalUser"},"username":{"type":"string"}},"title":"UserSession"},"VFImage":{"type":"object","properties":{"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"deployedInfrastructures":{"type":"array","items":{"$ref":"#/definitions/Infrastructure"}},"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"owner":{"$ref":"#/definitions/PortalUser"},"packageLocation":{"type":"string"},"publicURL":{"type":"string"},"published":{"type":"boolean"},"refVxFs":{"type":"array","items":{"$ref":"#/definitions/RefVxF"}},"shortDescription":{"type":"string"},"termsOfUse":{"type":"string"},"usedByVxFs":{"type":"array","items":{"$ref":"#/definitions/VxFMetadata"}},"uuid":{"type":"string"}},"title":"VFImage"},"ValidationJob":{"type":"object","properties":{"dateCreated":{"type":"string","format":"date-time"},"id":{"type":"integer","format":"int32"},"jobid":{"type":"string"},"outputLog":{"type":"string"},"validationStatus":{"type":"boolean"},"vxfid":{"type":"integer","format":"int32"}},"title":"ValidationJob"},"ValidationJobResult":{"type":"object","properties":{"build_id":{"type":"integer","format":"int32"},"jenkins_output_log":{"type":"string"},"validation_status":{"type":"boolean"},"vnfd_id":{"type":"integer","format":"int32"}},"title":"ValidationJobResult"},"View":{"type":"object","properties":{"contentType":{"type":"string"}},"title":"View"},"VxFMetadata":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/definitions/Category"}},"certified":{"type":"boolean"},"certifiedBy":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"descriptor":{"type":"string"},"descriptorHTML":{"type":"string"},"extensions":{"type":"array","items":{"$ref":"#/definitions/ProductExtensionItem"}},"iconsrc":{"type":"string"},"id":{"type":"integer","format":"int64"},"longDescription":{"type":"string"},"name":{"type":"string"},"owner":{"$ref":"#/definitions/PortalUser"},"packageLocation":{"type":"string"},"packagingFormat":{"type":"string","enum":["OSMvFIVE","OSMvFSIX"]},"published":{"type":"boolean"},"screenshots":{"type":"string"},"shortDescription":{"type":"string"},"supportedMANOPlatforms":{"type":"array","items":{"$ref":"#/definitions/MANOplatform"}},"termsOfUse":{"type":"string"},"uuid":{"type":"string"},"validationJobs":{"type":"array","items":{"$ref":"#/definitions/ValidationJob"}},"validationStatus":{"type":"string","enum":["NOT_STARTED","UNDER_REVIEW","COMPLETED"]},"vendor":{"type":"string"},"version":{"type":"string"},"vfimagesVDU":{"type":"array","items":{"$ref":"#/definitions/VFImage"}},"vxfOnBoardedDescriptors":{"type":"array","items":{"$ref":"#/definitions/VxFOnBoardedDescriptor"}}},"title":"VxFMetadata"},"VxFOnBoardedDescriptor":{"type":"object","properties":{"deployId":{"type":"string"},"feedbackMessage":{"type":"string"},"id":{"type":"integer","format":"int64"},"lastOnboarding":{"type":"string","format":"date-time"},"obMANOprovider":{"$ref":"#/definitions/MANOprovider"},"onBoardingStatus":{"type":"string","enum":["UNKNOWN","FAILED","ONBOARDED","OFFBOARDED","OFFBOARDING","ONBOARDING"]},"uuid":{"type":"string"},"vxf":{"$ref":"#/definitions/VxFMetadata"},"vxfMANOProviderID":{"type":"string"},"vxfid":{"type":"integer","format":"int64"}},"title":"VxFOnBoardedDescriptor"}}} \ No newline at end of file diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f956e1600daa9fef4162030342379b5d4f88cee --- /dev/null +++ b/src/environments/environment.prod.ts @@ -0,0 +1,4 @@ +export const environment = { + name: 'prod', + production: true +}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 0000000000000000000000000000000000000000..0b9bbb45532e4090d0dc08fb557e8df836eddb00 --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,17 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + name: 'dev', + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..72b9f86dd560a080499e2a84cef14ce0a621f7ed Binary files /dev/null and b/src/favicon.ico differ diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000000000000000000000000000000000000..c3377dd851eb5d16dbe6f34dfacecfb9479acd8d --- /dev/null +++ b/src/index.html @@ -0,0 +1,18 @@ + + + + + + + + OpenSlice by ETSI + + + + + + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000000000000000000000000000000000000..e76caeea51eedbeb9deb812b2d25b9790db909b6 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,13 @@ + +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/src/polyfills.ts b/src/polyfills.ts new file mode 100644 index 0000000000000000000000000000000000000000..7c9e495f57f6231e1506b5afcbcdf17c8e337727 --- /dev/null +++ b/src/polyfills.ts @@ -0,0 +1,67 @@ +/*************************************************************************************************** + * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates. + */ +import '@angular/localize/init'; +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/src/styles.scss b/src/styles.scss new file mode 100644 index 0000000000000000000000000000000000000000..e5cdf13843eec39cb95fa642700bd58996f916d7 --- /dev/null +++ b/src/styles.scss @@ -0,0 +1,150 @@ +/* You can add global styles to this file, and also import other style files */ + +// @import "@angular/material/prebuilt-themes/indigo-pink.css"; + +@import "~@danielmoncada/angular-datetime-picker/assets/style/picker.min.css"; +@import "~jsoneditor/dist/jsoneditor.min.css"; + +/* override bootstrap's 4 blue color */ +$primary: #428bca; +$secondary: #6c6c6c; + +@import "src/assets/config/theming.scss"; + +@import "~bootstrap/scss/bootstrap"; + +// .mat-chip-list-wrapper { +// flex-wrap: nowrap !important; +// } + +.mat-chip { + overflow: unset !important; + white-space: nowrap !important; +} + +* { + font-family: 'Open Sans', sans-serif; + font-weight: 300; +} + +h1, h2, h3, h4, h5, .h1, .h2, .h3, .h4, .h5 { + font-weight: 300 !important; +} + +.btn { + font-weight: 300 !important; +} + +.shadowed { + text-shadow: 4px 4px 6px #aaa; +} + +.shadowed-dark{ + text-shadow: 4px 4px 6px #513838; +} + +.universal-tooltip { + font-size: .9rem; + // width: 450px; +} + +mat-form-field.white-background .mat-form-field-wrapper .mat-form-field-flex .mat-form-field-outline { + background-color: #fff; + border-radius: 5px +} + +mat-form-field { + width: 100%; +} + +.jumbotron.jumbotron-small.jumbotron-list-container { + min-height: 345px; +} + + +.card.card-paper { + border-radius: 12px; + box-shadow: 0 6px 10px -4px rgba(0,0,0,.15); + background-color: #fff; + color: #252422; + margin-bottom: 20px; + position: relative; + border: 0; + transition: box-shadow .2s ease,-webkit-transform .3s cubic-bezier(.34,2,.6,1); + transition: transform .3s cubic-bezier(.34,2,.6,1),box-shadow .2s ease; + transition: transform .3s cubic-bezier(.34,2,.6,1),box-shadow .2s ease,-webkit-transform .3s cubic-bezier(.34,2,.6,1); +} + +.card.card-paper .card-header { + // padding: 15px 15px 0; + padding: 15px; + // border: 0; +} + +.card.card-paper .card-body { + padding: 15px 15px 0px; +} + +.card.card-paper .card-footer { + padding: 0px 15px 15px; + border: 0; + background: transparent; +} + +.card-stats { + font-size: .9rem; +} + +.card-stats i { + font-size: .8em; +} + +.filter-container mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper { + padding: 0; +} + +.table.table-generic { + margin-bottom: 0; + // border: 1px solid #ddd; + // font-family:inherit; +} + +.table.table-generic th { + padding: .5rem; + font-weight: 600; + font-size: 0.9rem; +} + +.table.table-generic td { + vertical-align: middle; + padding: .5rem +} + +.mat-paginator { + font-weight: 600; +} + +mat-panel-title { + font-weight: bold; +} + +.nav-link.active mat-checkbox .mat-checkbox-layout .mat-checkbox-inner-container .mat-checkbox-frame { + border-color:#fff +} + +.nav-link mat-checkbox label { + margin-bottom: 0 ; +} + +.minh-30vh { + min-height: 30vh; +} + +html, body { height: 100%; } +body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } + +@media screen and (min-width: 576px) { + .jumbotron.jumbotron-small { + padding: 2rem; + } + } \ No newline at end of file diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 0000000000000000000000000000000000000000..16317897b1c50a3a71bc775a8d6429f2b4c6cf98 --- /dev/null +++ b/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000000000000000000000000000000000000..df4d05e13ee887b1ba0df2224ec147dcab99368e --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ], + "exclude": [ + "src/test.ts", + "src/**/*.spec.ts" + ] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..629a662595f67de59a2f3403e89c204c00c4c108 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "module": "es2020", + "moduleResolution": "node", + "importHelpers": true, + "target": "es2015", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "es2020", + "dom" + ] + }, + "angularCompilerOptions": { + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true + } +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 0000000000000000000000000000000000000000..6400fde7d544029c82e13d368a6b69d6664fe857 --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000000000000000000000000000000000000..6ccb655da19958b4ac77176d2a59cef7d2582de1 --- /dev/null +++ b/tslint.json @@ -0,0 +1,155 @@ +{ + "extends": "tslint:recommended", + "rules": { + "align": { + "options": [ + "parameters", + "statements" + ] + }, + "array-type": false, + "arrow-parens": false, + "arrow-return-shorthand": true, + "deprecation": { + "severity": "warning" + }, + "component-class-suffix": true, + "contextual-lifecycle": true, + "curly": true, + "directive-class-suffix": true, + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "eofline": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": { + "options": [ + "spaces" + ] + }, + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [ + true, + "single" + ], + "trailing-comma": false, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "semicolon": { + "options": [ + "always" + ] + }, + "space-before-function-paren": { + "options": { + "anonymous": "never", + "asyncArrow": "always", + "constructor": "never", + "method": "never", + "named": "never" + } + }, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "typedef-whitespace": { + "options": [ + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ] + }, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true, + "variable-name": { + "options": [ + "ban-keywords", + "check-format", + "allow-pascal-case" + ] + }, + "whitespace": { + "options": [ + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type", + "check-typecast" + ] + } + }, + "rulesDirectory": [ + "codelyzer" + ] +} \ No newline at end of file